@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.js CHANGED
@@ -121,9 +121,12 @@ function createIntentColors(intent, color) {
121
121
  subtleHover: rgba(darkSolid, 0.26),
122
122
  text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg])
123
123
  };
124
+ const focusOn = (candidate, fallback2, bg) => contrastRatio(candidate, bg) >= 3 ? candidate : fallback2;
124
125
  const focus = intent === "primary" ? {
125
- light: { border: { focus: light.solid } },
126
- dark: { border: { focus: withL(darkBase, Math.min(1, darkBase.l + 0.06)) } }
126
+ light: { border: { focus: focusOn(light.solid, light.text, lightColors.bg.default) } },
127
+ dark: {
128
+ border: { focus: focusOn(withL(darkBase, Math.min(1, darkBase.l + 0.06)), dark.text, darkBg) }
129
+ }
127
130
  } : void 0;
128
131
  return {
129
132
  light: { color: { [intent]: light, ...focus?.light } },
@@ -146,9 +149,9 @@ function deepMerge(target, source) {
146
149
  function createTheme(...inputs) {
147
150
  let light = {};
148
151
  let dark = {};
149
- for (const input3 of inputs) {
150
- light = deepMerge(deepMerge(light, input3.common), input3.light);
151
- dark = deepMerge(deepMerge(dark, input3.common), input3.dark);
152
+ for (const input5 of inputs) {
153
+ light = deepMerge(deepMerge(light, input5.common), input5.light);
154
+ dark = deepMerge(deepMerge(dark, input5.common), input5.dark);
152
155
  }
153
156
  return Object.freeze({ light, dark });
154
157
  }
@@ -251,22 +254,638 @@ var AccordionItem = /* @__PURE__ */ forwardRef2(function AccordionItem2({ title:
251
254
  ] });
252
255
  });
253
256
 
254
- // src/components/Alert/Alert.tsx
257
+ // src/components/AddressInput/AddressInput.tsx
258
+ import { forwardRef as forwardRef7, useEffect, useId as useId2, useRef as useRef2, useState } from "react";
259
+
260
+ // src/components/Button/Button.tsx
261
+ import { forwardRef as forwardRef4 } from "react";
262
+
263
+ // src/components/Spinner/Spinner.tsx
264
+ import { LoaderIcon } from "@bestow-ui/icons";
255
265
  import { forwardRef as forwardRef3 } from "react";
256
- import { CircleAlertIcon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, XIcon } from "@bestow-ui/icons";
257
266
 
258
- // src/components/Alert/Alert.css.ts
267
+ // src/styles/visuallyHidden.css.ts
268
+ var visuallyHidden = "_1kdtbw10";
269
+
270
+ // src/components/Spinner/Spinner.css.ts
259
271
  import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
272
+ var spinner = /* @__PURE__ */ _7a468({ 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: [] });
273
+
274
+ // src/components/Spinner/Spinner.tsx
275
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
276
+ var Spinner = /* @__PURE__ */ forwardRef3(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
277
+ const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
278
+ return /* @__PURE__ */ jsxs2("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
279
+ /* @__PURE__ */ jsx3(LoaderIcon, { size: "100%" }),
280
+ label6 && /* @__PURE__ */ jsx3("span", { className: visuallyHidden, children: label6 })
281
+ ] });
282
+ });
283
+
284
+ // src/components/Button/Button.css.ts
285
+ import { createRuntimeFn as _7a4682 } from "@vanilla-extract/recipes/createRuntimeFn";
286
+ var button = /* @__PURE__ */ _7a4682({ 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: [] });
287
+ var icon = "xcekdai";
288
+
289
+ // src/components/Button/Button.tsx
290
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
291
+ var Button = /* @__PURE__ */ forwardRef4(function Button2({
292
+ variant,
293
+ color,
294
+ size,
295
+ fullWidth,
296
+ startIcon,
297
+ endIcon,
298
+ loading: loading2,
299
+ className,
300
+ type = "button",
301
+ onClick,
302
+ children,
303
+ ...rest
304
+ }, ref) {
305
+ const handleClick = (event) => {
306
+ if (loading2) {
307
+ event.preventDefault();
308
+ return;
309
+ }
310
+ onClick?.(event);
311
+ };
312
+ const leading = loading2 ? /* @__PURE__ */ jsx4(Spinner, { size: "sm", label: "" }) : startIcon;
313
+ return /* @__PURE__ */ jsxs3(
314
+ "button",
315
+ {
316
+ ref,
317
+ type,
318
+ className: cx(button({ variant, color, size, fullWidth }), className),
319
+ "aria-busy": loading2 || void 0,
320
+ "aria-disabled": loading2 || void 0,
321
+ onClick: handleClick,
322
+ ...rest,
323
+ children: [
324
+ leading && /* @__PURE__ */ jsx4("span", { className: icon, children: leading }),
325
+ children,
326
+ endIcon && /* @__PURE__ */ jsx4("span", { className: icon, children: endIcon })
327
+ ]
328
+ }
329
+ );
330
+ });
331
+
332
+ // src/components/Input/Input.css.ts
333
+ import { createRuntimeFn as _7a4683 } from "@vanilla-extract/recipes/createRuntimeFn";
334
+ var adornment = "_19p5zvh6";
335
+ var field = "_19p5zvh7";
336
+ var fieldFullWidth = "_19p5zvh8";
337
+ var helperText = /* @__PURE__ */ _7a4683({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
338
+ var input = "_19p5zvh5";
339
+ var label = "_19p5zvh9";
340
+ var requiredMark = "_19p5zvha";
341
+ var root3 = /* @__PURE__ */ _7a4683({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
342
+
343
+ // src/components/Input/Input.tsx
344
+ import { forwardRef as forwardRef5 } from "react";
345
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
346
+ var Input = /* @__PURE__ */ forwardRef5(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
347
+ return /* @__PURE__ */ jsxs4(
348
+ "div",
349
+ {
350
+ className: cx(root3({ size, fullWidth }), rootClassName),
351
+ "data-invalid": invalid || void 0,
352
+ "data-disabled": disabled || void 0,
353
+ children: [
354
+ startAdornment && /* @__PURE__ */ jsx5("span", { className: adornment, children: startAdornment }),
355
+ /* @__PURE__ */ jsx5(
356
+ "input",
357
+ {
358
+ ref,
359
+ className: cx(input, className),
360
+ disabled,
361
+ "aria-invalid": invalid || void 0,
362
+ ...rest
363
+ }
364
+ ),
365
+ endAdornment && /* @__PURE__ */ jsx5("span", { className: adornment, children: endAdornment })
366
+ ]
367
+ }
368
+ );
369
+ });
370
+
371
+ // src/components/Input/TextField.tsx
372
+ import { forwardRef as forwardRef6, useId } from "react";
373
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
374
+ var TextField = /* @__PURE__ */ forwardRef6(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
375
+ const generatedId = useId();
376
+ const inputId = id ?? generatedId;
377
+ const helperId = helperText3 ? `${inputId}-helper` : void 0;
378
+ return /* @__PURE__ */ jsxs5("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
379
+ label6 && /* @__PURE__ */ jsxs5("label", { htmlFor: inputId, className: label, children: [
380
+ label6,
381
+ required && /* @__PURE__ */ jsx6("span", { className: requiredMark, "aria-hidden": true, children: "*" })
382
+ ] }),
383
+ /* @__PURE__ */ jsx6(
384
+ Input,
385
+ {
386
+ ref,
387
+ id: inputId,
388
+ invalid: error,
389
+ required,
390
+ fullWidth,
391
+ "aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
392
+ ...rest
393
+ }
394
+ ),
395
+ helperText3 && /* @__PURE__ */ jsx6("p", { id: helperId, className: helperText({ error }), children: helperText3 })
396
+ ] });
397
+ });
398
+
399
+ // src/components/Modal/Modal.tsx
400
+ import * as Dialog from "@radix-ui/react-dialog";
401
+ import { XIcon } from "@bestow-ui/icons";
402
+
403
+ // src/utils/useReturnFocus.ts
404
+ import { useRef } from "react";
405
+ function useReturnFocus(hasTrigger, onCloseAutoFocus) {
406
+ const returnTo = useRef(null);
407
+ return {
408
+ onOpenAutoFocus: () => {
409
+ returnTo.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
410
+ },
411
+ onCloseAutoFocus: (event) => {
412
+ onCloseAutoFocus?.(event);
413
+ if (event.defaultPrevented || hasTrigger) return;
414
+ const target = returnTo.current;
415
+ if (target && target.isConnected && target !== document.body) {
416
+ event.preventDefault();
417
+ target.focus();
418
+ }
419
+ }
420
+ };
421
+ }
422
+
423
+ // src/components/Modal/Modal.css.ts
424
+ import { createRuntimeFn as _7a4684 } from "@vanilla-extract/recipes/createRuntimeFn";
425
+ var body = "_1pdsmv0a";
426
+ var closeButton = "_1pdsmv09";
427
+ var content2 = /* @__PURE__ */ _7a4684({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
428
+ var description = "_1pdsmv08";
429
+ var footer = "_1pdsmv0b";
430
+ var header2 = "_1pdsmv05";
431
+ var headings = "_1pdsmv06";
432
+ var overlay = "_1pdsmv00";
433
+ var title = "_1pdsmv07";
434
+
435
+ // src/components/Modal/Modal.tsx
436
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
437
+ function Modal({
438
+ open,
439
+ defaultOpen,
440
+ onOpenChange,
441
+ trigger: trigger4,
442
+ title: title6,
443
+ description: description6,
444
+ children,
445
+ footer: footer6,
446
+ size,
447
+ hideCloseButton = false,
448
+ closeOnOverlayClick = true,
449
+ className,
450
+ onCloseAutoFocus
451
+ }) {
452
+ const portal2 = usePortalProps();
453
+ const focus = useReturnFocus(Boolean(trigger4), onCloseAutoFocus);
454
+ return /* @__PURE__ */ jsxs6(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
455
+ trigger4 && /* @__PURE__ */ jsx7(Dialog.Trigger, { asChild: true, children: trigger4 }),
456
+ /* @__PURE__ */ jsxs6(Dialog.Portal, { children: [
457
+ /* @__PURE__ */ jsx7(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
458
+ /* @__PURE__ */ jsxs6(
459
+ Dialog.Content,
460
+ {
461
+ className: cx(portal2.className, content2({ size }), className),
462
+ style: portal2.style,
463
+ onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
464
+ onOpenAutoFocus: focus.onOpenAutoFocus,
465
+ onCloseAutoFocus: focus.onCloseAutoFocus,
466
+ ...description6 ? {} : { "aria-describedby": void 0 },
467
+ children: [
468
+ /* @__PURE__ */ jsxs6("div", { className: header2, children: [
469
+ /* @__PURE__ */ jsxs6("div", { className: headings, children: [
470
+ /* @__PURE__ */ jsx7(Dialog.Title, { className: title, children: title6 }),
471
+ description6 && /* @__PURE__ */ jsx7(Dialog.Description, { className: description, children: description6 })
472
+ ] }),
473
+ !hideCloseButton && /* @__PURE__ */ jsx7(Dialog.Close, { className: closeButton, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx7(XIcon, { size: 16 }) })
474
+ ] }),
475
+ children && /* @__PURE__ */ jsx7("div", { className: body, children }),
476
+ footer6 && /* @__PURE__ */ jsx7("div", { className: footer, children: footer6 })
477
+ ]
478
+ }
479
+ )
480
+ ] })
481
+ ] });
482
+ }
483
+ var ModalClose = Dialog.Close;
484
+
485
+ // src/components/AddressInput/addressProviders.ts
486
+ var KAKAO_POSTCODE_SRC = "https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
487
+ var loading = null;
488
+ function loadKakaoPostcode() {
489
+ const w = window;
490
+ const existing = w.kakao?.Postcode ?? w.daum?.Postcode;
491
+ if (existing) return Promise.resolve(existing);
492
+ loading ?? (loading = new Promise((resolve, reject) => {
493
+ const script = document.createElement("script");
494
+ script.src = KAKAO_POSTCODE_SRC;
495
+ script.async = true;
496
+ script.onload = () => {
497
+ const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;
498
+ if (ctor) resolve(ctor);
499
+ else reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC5B4\uC694"));
500
+ };
501
+ script.onerror = () => {
502
+ loading = null;
503
+ reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694"));
504
+ };
505
+ document.head.appendChild(script);
506
+ }));
507
+ return loading;
508
+ }
509
+ function composeExtraAddress(data) {
510
+ if (data.userSelectedType !== "R") return "";
511
+ const parts = [];
512
+ if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);
513
+ if (data.buildingName && data.apartment === "Y") parts.push(data.buildingName);
514
+ return parts.length ? ` (${parts.join(", ")})` : "";
515
+ }
516
+ var kakaoPostcodeProvider = async (container2, onSelect) => {
517
+ const Postcode = await loadKakaoPostcode();
518
+ new Postcode({
519
+ width: "100%",
520
+ height: "100%",
521
+ oncomplete: (data) => {
522
+ const address = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || "";
523
+ onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });
524
+ }
525
+ }).embed(container2);
526
+ };
527
+
528
+ // src/components/AddressInput/AddressInput.css.ts
529
+ var fieldset = "_16fi7uy0";
530
+ var legend = "_16fi7uy1";
531
+ var row = "_16fi7uy2";
532
+ var searchArea = "_16fi7uy4";
533
+ var searchStatus = "_16fi7uy5";
534
+ var zonecode = "_16fi7uy3";
535
+
536
+ // src/components/AddressInput/AddressInput.tsx
537
+ import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
538
+ var EMPTY = { zonecode: "", address: "", extraAddress: "", detail: "" };
539
+ function SearchArea({
540
+ provider,
541
+ onSelect,
542
+ loadErrorText
543
+ }) {
544
+ const containerRef = useRef2(null);
545
+ const [status, setStatus] = useState("loading");
546
+ const onSelectRef = useRef2(onSelect);
547
+ useEffect(() => {
548
+ onSelectRef.current = onSelect;
549
+ });
550
+ useEffect(() => {
551
+ const container2 = containerRef.current;
552
+ if (!container2) return;
553
+ let cleanup;
554
+ let cancelled = false;
555
+ Promise.resolve().then(() => provider(container2, (result) => onSelectRef.current(result))).then((fn) => {
556
+ if (cancelled) fn?.();
557
+ else {
558
+ cleanup = fn;
559
+ setStatus("ready");
560
+ }
561
+ }).catch(() => !cancelled && setStatus("error"));
562
+ return () => {
563
+ cancelled = true;
564
+ cleanup?.();
565
+ };
566
+ }, [provider]);
567
+ return /* @__PURE__ */ jsxs7("div", { className: searchArea, children: [
568
+ /* @__PURE__ */ jsx8("div", { ref: containerRef, style: { width: "100%", height: "100%" } }),
569
+ status !== "ready" && /* @__PURE__ */ jsx8("div", { className: searchStatus, role: "status", children: status === "loading" ? /* @__PURE__ */ jsx8(Spinner, { label: "\uC8FC\uC18C \uAC80\uC0C9\uC744 \uBD88\uB7EC\uC624\uB294 \uC911" }) : loadErrorText })
570
+ ] });
571
+ }
572
+ var AddressInput = /* @__PURE__ */ forwardRef7(
573
+ function AddressInput2(props, ref) {
574
+ const {
575
+ value: value4,
576
+ defaultValue,
577
+ onValueChange,
578
+ label: label6 = "\uC8FC\uC18C",
579
+ required,
580
+ helperText: helperText3,
581
+ error,
582
+ disabled,
583
+ provider = kakaoPostcodeProvider,
584
+ searchLabel = "\uC8FC\uC18C \uAC80\uC0C9",
585
+ detailPlaceholder = "\uC0C1\uC138 \uC8FC\uC18C (\uB3D9\xB7\uD638\uC218 \uB4F1)",
586
+ 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.",
587
+ name,
588
+ className
589
+ } = props;
590
+ const baseId = useId2();
591
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
592
+ const detailRef = useRef2(null);
593
+ const selectedRef = useRef2(false);
594
+ const [open, setOpen] = useState(false);
595
+ const isControlled = "value" in props;
596
+ const [innerValue, setInnerValue] = useState(defaultValue ?? EMPTY);
597
+ const current2 = isControlled ? value4 ?? EMPTY : innerValue;
598
+ const update = (next) => {
599
+ if (!isControlled) setInnerValue(next);
600
+ onValueChange?.(next);
601
+ };
602
+ const openSearch = () => {
603
+ if (disabled) return;
604
+ selectedRef.current = false;
605
+ setOpen(true);
606
+ };
607
+ const handleSelect = (result) => {
608
+ selectedRef.current = true;
609
+ update({
610
+ ...current2,
611
+ zonecode: result.zonecode,
612
+ address: result.address,
613
+ extraAddress: result.extraAddress ?? ""
614
+ });
615
+ setOpen(false);
616
+ };
617
+ const fullAddress = `${current2.address}${current2.extraAddress ?? ""}`;
618
+ return /* @__PURE__ */ jsxs7("fieldset", { ref, className: cx(fieldset, className), disabled, "aria-describedby": helperId, children: [
619
+ /* @__PURE__ */ jsxs7("legend", { className: legend, children: [
620
+ label6,
621
+ required && /* @__PURE__ */ jsx8("span", { className: requiredMark, "aria-hidden": true, children: "*" })
622
+ ] }),
623
+ /* @__PURE__ */ jsxs7("div", { className: row, children: [
624
+ /* @__PURE__ */ jsx8(
625
+ TextField,
626
+ {
627
+ "aria-label": "\uC6B0\uD3B8\uBC88\uD638",
628
+ readOnly: true,
629
+ value: current2.zonecode,
630
+ placeholder: "\uC6B0\uD3B8\uBC88\uD638",
631
+ error: error && !current2.zonecode,
632
+ "aria-required": required || void 0,
633
+ rootClassName: zonecode,
634
+ onClick: openSearch
635
+ }
636
+ ),
637
+ /* @__PURE__ */ jsx8(Button, { variant: "outline", color: "neutral", onClick: openSearch, disabled, children: searchLabel })
638
+ ] }),
639
+ /* @__PURE__ */ jsx8(
640
+ TextField,
641
+ {
642
+ "aria-label": "\uAE30\uBCF8 \uC8FC\uC18C",
643
+ readOnly: true,
644
+ value: fullAddress,
645
+ placeholder: `${searchLabel}\uC744 \uB20C\uB7EC \uC8FC\uC18C\uB97C \uACE0\uB974\uC138\uC694`,
646
+ error: error && !current2.address,
647
+ "aria-required": required || void 0,
648
+ fullWidth: true,
649
+ onClick: openSearch
650
+ }
651
+ ),
652
+ /* @__PURE__ */ jsx8(
653
+ TextField,
654
+ {
655
+ ref: detailRef,
656
+ "aria-label": "\uC0C1\uC138 \uC8FC\uC18C",
657
+ value: current2.detail,
658
+ placeholder: detailPlaceholder,
659
+ onChange: (event) => update({ ...current2, detail: event.target.value }),
660
+ autoComplete: "address-line2",
661
+ fullWidth: true
662
+ }
663
+ ),
664
+ helperText3 && /* @__PURE__ */ jsx8("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
665
+ name && /* @__PURE__ */ jsxs7(Fragment, { children: [
666
+ /* @__PURE__ */ jsx8("input", { type: "hidden", name: `${name}[zonecode]`, value: current2.zonecode }),
667
+ /* @__PURE__ */ jsx8("input", { type: "hidden", name: `${name}[address]`, value: fullAddress }),
668
+ /* @__PURE__ */ jsx8("input", { type: "hidden", name: `${name}[detail]`, value: current2.detail })
669
+ ] }),
670
+ /* @__PURE__ */ jsx8(
671
+ Modal,
672
+ {
673
+ open,
674
+ onOpenChange: setOpen,
675
+ title: searchLabel,
676
+ description: "\uB3C4\uB85C\uBA85, \uAC74\uBB3C\uBA85, \uC9C0\uBC88\uC73C\uB85C \uAC80\uC0C9\uD560 \uC218 \uC788\uC5B4\uC694.",
677
+ onCloseAutoFocus: (event) => {
678
+ if (selectedRef.current) {
679
+ event.preventDefault();
680
+ detailRef.current?.focus();
681
+ }
682
+ },
683
+ children: /* @__PURE__ */ jsx8(SearchArea, { provider, onSelect: handleSelect, loadErrorText })
684
+ }
685
+ )
686
+ ] });
687
+ }
688
+ );
689
+
690
+ // src/components/AgreementGroup/AgreementGroup.tsx
691
+ import { forwardRef as forwardRef9, useId as useId3, useState as useState2 } from "react";
692
+ import { ChevronDownIcon as ChevronDownIcon2 } from "@bestow-ui/icons";
693
+
694
+ // src/components/Checkbox/Checkbox.tsx
695
+ import { forwardRef as forwardRef8, useEffect as useEffect2, useRef as useRef3 } from "react";
696
+
697
+ // src/utils/mergeRefs.ts
698
+ function mergeRefs(...refs) {
699
+ return (value4) => {
700
+ for (const ref of refs) {
701
+ if (typeof ref === "function") ref(value4);
702
+ else if (ref) ref.current = value4;
703
+ }
704
+ };
705
+ }
706
+
707
+ // src/components/Checkbox/Checkbox.css.ts
708
+ import { createRuntimeFn as _7a4685 } from "@vanilla-extract/recipes/createRuntimeFn";
709
+ var checkIcon = "_1y7mzsn8 _1y7mzsn7";
710
+ var control = /* @__PURE__ */ _7a4685({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
711
+ var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
712
+ var input2 = "_1y7mzsn6";
713
+ var root4 = /* @__PURE__ */ _7a4685({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
714
+
715
+ // src/components/Checkbox/Checkbox.tsx
716
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
717
+ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
718
+ const innerRef = useRef3(null);
719
+ useEffect2(() => {
720
+ if (innerRef.current) innerRef.current.indeterminate = indeterminate;
721
+ }, [indeterminate]);
722
+ return /* @__PURE__ */ jsxs8("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
723
+ /* @__PURE__ */ jsxs8("span", { className: control({ size }), children: [
724
+ /* @__PURE__ */ jsx9(
725
+ "input",
726
+ {
727
+ ref: mergeRefs(innerRef, ref),
728
+ type: "checkbox",
729
+ className: input2,
730
+ disabled,
731
+ "aria-invalid": invalid || void 0,
732
+ ...rest
733
+ }
734
+ ),
735
+ /* @__PURE__ */ jsx9("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx9(
736
+ "path",
737
+ {
738
+ d: "M5 10.5l3.2 3L15 7",
739
+ stroke: "currentColor",
740
+ strokeWidth: "2",
741
+ strokeLinecap: "round",
742
+ strokeLinejoin: "round"
743
+ }
744
+ ) }),
745
+ /* @__PURE__ */ jsx9("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx9("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
746
+ ] }),
747
+ label6
748
+ ] });
749
+ });
750
+
751
+ // src/components/AgreementGroup/AgreementGroup.css.ts
752
+ var all = "j3uxdc3";
753
+ var box = "j3uxdc2";
754
+ var chevron2 = "j3uxdc9";
755
+ var content3 = "j3uxdca";
756
+ var fieldset2 = "j3uxdc0";
757
+ var item2 = "j3uxdc5";
758
+ var legend2 = "j3uxdc1";
759
+ var list = "j3uxdc4";
760
+ var row2 = "j3uxdc6";
761
+ var tag = "j3uxdc7";
762
+ var toggle = "j3uxdc8";
763
+
764
+ // src/components/AgreementGroup/AgreementGroup.tsx
765
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
766
+ function hasAllRequiredAgreements(items2, value4) {
767
+ return items2.every((item7) => !item7.required || value4.includes(item7.value));
768
+ }
769
+ var AgreementGroup = /* @__PURE__ */ forwardRef9(
770
+ function AgreementGroup2(props, ref) {
771
+ const {
772
+ items: items2,
773
+ value: value4,
774
+ defaultValue,
775
+ onValueChange,
776
+ label: label6,
777
+ allLabel = "\uC804\uCCB4 \uB3D9\uC758",
778
+ helperText: helperText3,
779
+ error,
780
+ disabled,
781
+ requiredText = "\uD544\uC218",
782
+ optionalText = "\uC120\uD0DD",
783
+ showText = "\uBCF4\uAE30",
784
+ hideText = "\uC811\uAE30",
785
+ name,
786
+ className
787
+ } = props;
788
+ const baseId = useId3();
789
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
790
+ const isControlled = "value" in props;
791
+ const [innerValue, setInnerValue] = useState2(defaultValue ?? []);
792
+ const agreed = isControlled ? value4 ?? [] : innerValue;
793
+ const [expanded, setExpanded] = useState2([]);
794
+ const update = (next) => {
795
+ if (!isControlled) setInnerValue(next);
796
+ onValueChange?.(next);
797
+ };
798
+ const allValues = items2.map((item7) => item7.value);
799
+ const agreedCount = allValues.filter((v) => agreed.includes(v)).length;
800
+ const allChecked = items2.length > 0 && agreedCount === items2.length;
801
+ const toggleItem = (itemValue, checked) => update(checked ? [...agreed.filter((v) => v !== itemValue), itemValue] : agreed.filter((v) => v !== itemValue));
802
+ return /* @__PURE__ */ jsxs9(
803
+ "fieldset",
804
+ {
805
+ ref,
806
+ className: cx(fieldset2, className),
807
+ disabled,
808
+ "aria-describedby": helperId,
809
+ "data-invalid": error || void 0,
810
+ children: [
811
+ label6 && /* @__PURE__ */ jsx10("legend", { className: legend2, children: label6 }),
812
+ /* @__PURE__ */ jsxs9("div", { className: box, children: [
813
+ /* @__PURE__ */ jsx10("div", { className: all, children: /* @__PURE__ */ jsx10(
814
+ Checkbox,
815
+ {
816
+ label: allLabel,
817
+ checked: allChecked,
818
+ indeterminate: agreedCount > 0 && !allChecked,
819
+ onChange: (event) => update(event.target.checked ? allValues : [])
820
+ }
821
+ ) }),
822
+ /* @__PURE__ */ jsx10("ul", { className: list, children: items2.map((item7) => {
823
+ const labelId = `${baseId}-${item7.value}-label`;
824
+ const toggleTextId = `${baseId}-${item7.value}-toggle`;
825
+ const contentId = `${baseId}-${item7.value}-content`;
826
+ const isOpen = expanded.includes(item7.value);
827
+ return /* @__PURE__ */ jsxs9("li", { className: item2, children: [
828
+ /* @__PURE__ */ jsxs9("div", { className: row2, children: [
829
+ /* @__PURE__ */ jsx10(
830
+ Checkbox,
831
+ {
832
+ size: "sm",
833
+ checked: agreed.includes(item7.value),
834
+ invalid: error && item7.required && !agreed.includes(item7.value),
835
+ onChange: (event) => toggleItem(item7.value, event.target.checked),
836
+ label: /* @__PURE__ */ jsxs9("span", { id: labelId, children: [
837
+ /* @__PURE__ */ jsx10("span", { className: tag, "data-required": item7.required || void 0, children: item7.required ? requiredText : optionalText }),
838
+ " ",
839
+ item7.label
840
+ ] })
841
+ }
842
+ ),
843
+ item7.content && /* @__PURE__ */ jsxs9(
844
+ "button",
845
+ {
846
+ type: "button",
847
+ className: toggle,
848
+ "aria-expanded": isOpen,
849
+ "aria-controls": contentId,
850
+ "aria-labelledby": `${labelId} ${toggleTextId}`,
851
+ onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item7.value) : [...prev, item7.value]),
852
+ children: [
853
+ /* @__PURE__ */ jsx10("span", { id: toggleTextId, children: isOpen ? hideText : showText }),
854
+ /* @__PURE__ */ jsx10(ChevronDownIcon2, { size: 14, className: chevron2 })
855
+ ]
856
+ }
857
+ )
858
+ ] }),
859
+ item7.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
860
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
861
+ /* @__PURE__ */ jsx10("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item7.content })
862
+ ] }, item7.value);
863
+ }) })
864
+ ] }),
865
+ name && agreed.map((v) => /* @__PURE__ */ jsx10("input", { type: "hidden", name, value: v }, v)),
866
+ helperText3 && /* @__PURE__ */ jsx10("p", { id: helperId, className: helperText({ error }), children: helperText3 })
867
+ ]
868
+ }
869
+ );
870
+ }
871
+ );
872
+
873
+ // src/components/Alert/Alert.tsx
874
+ import { forwardRef as forwardRef10 } from "react";
875
+ import { CircleAlertIcon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, XIcon as XIcon2 } from "@bestow-ui/icons";
876
+
877
+ // src/components/Alert/Alert.css.ts
878
+ import { createRuntimeFn as _7a4686 } from "@vanilla-extract/recipes/createRuntimeFn";
260
879
  var action = "bsmpc0j";
261
- var alert = /* @__PURE__ */ _7a468({ 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: [] });
262
- var closeButton = "bsmpc0k";
263
- var content2 = "bsmpc0g";
264
- var description = "bsmpc0i";
265
- var icon = "bsmpc0f";
266
- var title = "bsmpc0h";
880
+ var alert = /* @__PURE__ */ _7a4686({ 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: [] });
881
+ var closeButton2 = "bsmpc0k";
882
+ var content4 = "bsmpc0g";
883
+ var description2 = "bsmpc0i";
884
+ var icon2 = "bsmpc0f";
885
+ var title2 = "bsmpc0h";
267
886
 
268
887
  // src/components/Alert/Alert.tsx
269
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
888
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
270
889
  var defaultIcons = {
271
890
  primary: InfoIcon,
272
891
  neutral: InfoIcon,
@@ -274,336 +893,447 @@ var defaultIcons = {
274
893
  warning: TriangleAlertIcon,
275
894
  danger: CircleAlertIcon
276
895
  };
277
- var Alert = /* @__PURE__ */ forwardRef3(function Alert2({ variant, color = "primary", title: title6, icon: icon6, action: action3, onClose, closeLabel = "\uB2EB\uAE30", className, children, ...rest }, ref) {
896
+ var Alert = /* @__PURE__ */ forwardRef10(function Alert2({ variant, color = "primary", title: title6, icon: icon6, action: action3, onClose, closeLabel = "\uB2EB\uAE30", className, children, ...rest }, ref) {
278
897
  const DefaultIcon = defaultIcons[color];
279
- const iconNode = icon6 === void 0 ? /* @__PURE__ */ jsx3(DefaultIcon, { size: 18 }) : icon6;
280
- return /* @__PURE__ */ jsxs2("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
281
- iconNode !== false && iconNode !== null && /* @__PURE__ */ jsx3("span", { className: icon, "aria-hidden": true, children: iconNode }),
282
- /* @__PURE__ */ jsxs2("div", { className: content2, children: [
283
- title6 && /* @__PURE__ */ jsx3("div", { className: title, children: title6 }),
284
- children && /* @__PURE__ */ jsx3("div", { className: description, children })
898
+ const iconNode = icon6 === void 0 ? /* @__PURE__ */ jsx11(DefaultIcon, { size: 18 }) : icon6;
899
+ return /* @__PURE__ */ jsxs10("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
900
+ iconNode !== false && iconNode !== null && /* @__PURE__ */ jsx11("span", { className: icon2, "aria-hidden": true, children: iconNode }),
901
+ /* @__PURE__ */ jsxs10("div", { className: content4, children: [
902
+ title6 && /* @__PURE__ */ jsx11("div", { className: title2, children: title6 }),
903
+ children && /* @__PURE__ */ jsx11("div", { className: description2, children })
285
904
  ] }),
286
- action3 && /* @__PURE__ */ jsx3("div", { className: action, children: action3 }),
287
- onClose && /* @__PURE__ */ jsx3("button", { type: "button", className: closeButton, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ jsx3(XIcon, { size: 16 }) })
905
+ action3 && /* @__PURE__ */ jsx11("div", { className: action, children: action3 }),
906
+ onClose && /* @__PURE__ */ jsx11("button", { type: "button", className: closeButton2, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ jsx11(XIcon2, { size: 16 }) })
288
907
  ] });
289
908
  });
290
909
 
910
+ // src/components/AmountInput/AmountInput.tsx
911
+ import { forwardRef as forwardRef11, useRef as useRef5 } from "react";
912
+
913
+ // src/utils/koreanFormat.ts
914
+ var onlyDigits = (input5) => input5.replace(/\D/g, "");
915
+ function phoneNumberMaxDigits(digits) {
916
+ if (digits.startsWith("02")) return 10;
917
+ if (/^1[568]/.test(digits)) return 8;
918
+ return 11;
919
+ }
920
+ function formatPhoneNumber(input5) {
921
+ const d = onlyDigits(input5).slice(0, phoneNumberMaxDigits(onlyDigits(input5)));
922
+ if (d.startsWith("02")) {
923
+ if (d.length <= 2) return d;
924
+ if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;
925
+ if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;
926
+ return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;
927
+ }
928
+ if (/^1[568]/.test(d)) {
929
+ return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;
930
+ }
931
+ if (d.length <= 3) return d;
932
+ if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;
933
+ if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;
934
+ return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;
935
+ }
936
+ function formatBusinessNumber(input5) {
937
+ const d = onlyDigits(input5).slice(0, 10);
938
+ if (d.length <= 3) return d;
939
+ if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;
940
+ return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;
941
+ }
942
+ function isValidBusinessNumber(input5) {
943
+ const d = onlyDigits(input5);
944
+ if (d.length !== 10) return false;
945
+ const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];
946
+ const digits = [...d].map(Number);
947
+ let sum = weights.reduce((acc, w, i) => acc + w * digits[i], 0);
948
+ sum += Math.floor(digits[8] * 5 / 10);
949
+ return (10 - sum % 10) % 10 === digits[9];
950
+ }
951
+ function formatKoreanAmount(amount, unit = "\uC6D0") {
952
+ const n = Math.floor(Math.abs(amount));
953
+ if (n === 0) return `0${unit}`;
954
+ const units = [
955
+ { value: 1e12, label: "\uC870" },
956
+ { value: 1e8, label: "\uC5B5" },
957
+ { value: 1e4, label: "\uB9CC" },
958
+ { value: 1, label: "" }
959
+ ];
960
+ let rest = n;
961
+ const parts = [];
962
+ for (const u of units) {
963
+ const q = Math.floor(rest / u.value);
964
+ rest %= u.value;
965
+ if (q > 0) parts.push(`${q.toLocaleString("ko-KR")}${u.label}`);
966
+ }
967
+ return `${amount < 0 ? "-" : ""}${parts.join(" ")}${unit}`;
968
+ }
969
+
970
+ // src/utils/useFormattedInput.ts
971
+ import { useLayoutEffect, useRef as useRef4, useState as useState3 } from "react";
972
+ function caretAfter(display, count2, isMeaningful) {
973
+ if (count2 <= 0) return 0;
974
+ let seen = 0;
975
+ for (let i = 0; i < display.length; i++) {
976
+ if (isMeaningful(display[i])) seen++;
977
+ if (seen === count2) return i + 1;
978
+ }
979
+ return display.length;
980
+ }
981
+ function useFormattedInput({
982
+ isControlled,
983
+ value: value4,
984
+ defaultValue,
985
+ onValueChange,
986
+ sanitize: sanitize3,
987
+ format,
988
+ isMeaningful,
989
+ inputRef
990
+ }) {
991
+ const [innerValue, setInnerValue] = useState3(() => sanitize3(defaultValue ?? ""));
992
+ const raw = isControlled ? sanitize3(value4 ?? "") : innerValue;
993
+ const display = format(raw);
994
+ const pendingCaret = useRef4(null);
995
+ useLayoutEffect(() => {
996
+ const input5 = inputRef.current;
997
+ if (pendingCaret.current === null || !input5 || document.activeElement !== input5) return;
998
+ const position = caretAfter(input5.value, pendingCaret.current, isMeaningful);
999
+ input5.setSelectionRange(position, position);
1000
+ pendingCaret.current = null;
1001
+ });
1002
+ const commit = (next, caretCount) => {
1003
+ pendingCaret.current = caretCount;
1004
+ if (!isControlled) setInnerValue(next);
1005
+ if (next !== raw) onValueChange?.(next);
1006
+ };
1007
+ const onChange = (event) => {
1008
+ const { value: typed, selectionStart } = event.target;
1009
+ const next = sanitize3(typed);
1010
+ const before = sanitize3(typed.slice(0, selectionStart ?? typed.length));
1011
+ commit(next, Math.min(before.length, next.length));
1012
+ };
1013
+ const onKeyDown = (event) => {
1014
+ const input5 = event.currentTarget;
1015
+ const { selectionStart: start, selectionEnd: end } = input5;
1016
+ if (start === null || start !== end) return;
1017
+ const countBefore = (text2) => [...text2].filter(isMeaningful).length;
1018
+ if (event.key === "Backspace" && start > 0 && !isMeaningful(input5.value[start - 1])) {
1019
+ const index = countBefore(input5.value.slice(0, start)) - 1;
1020
+ if (index < 0) return;
1021
+ event.preventDefault();
1022
+ commit(raw.slice(0, index) + raw.slice(index + 1), index);
1023
+ } else if (event.key === "Delete" && start < input5.value.length && !isMeaningful(input5.value[start])) {
1024
+ const index = countBefore(input5.value.slice(0, start));
1025
+ if (index >= raw.length) return;
1026
+ event.preventDefault();
1027
+ commit(raw.slice(0, index) + raw.slice(index + 1), index);
1028
+ }
1029
+ };
1030
+ return { raw, display, onChange, onKeyDown };
1031
+ }
1032
+
1033
+ // src/components/AmountInput/AmountInput.css.ts
1034
+ var input3 = "_70qkav0";
1035
+
1036
+ // src/components/AmountInput/AmountInput.tsx
1037
+ import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1038
+ var MAX_DIGITS = 15;
1039
+ var isDigit = (char) => /\d/.test(char);
1040
+ var AmountInput = /* @__PURE__ */ forwardRef11(
1041
+ function AmountInput2(props, ref) {
1042
+ const {
1043
+ value: value4,
1044
+ defaultValue,
1045
+ onValueChange,
1046
+ max,
1047
+ unit = "\uC6D0",
1048
+ showKoreanAmount = true,
1049
+ label: label6 = "\uAE08\uC561",
1050
+ placeholder = "0",
1051
+ helperText: helperText3,
1052
+ onKeyDown,
1053
+ className,
1054
+ ...rest
1055
+ } = props;
1056
+ const inputRef = useRef5(null);
1057
+ const sanitize3 = (input5) => {
1058
+ let digits = input5.replace(/\D/g, "").replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS);
1059
+ if (max !== void 0 && digits && Number(digits) > max) digits = String(Math.floor(max));
1060
+ return digits;
1061
+ };
1062
+ const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
1063
+ const field3 = useFormattedInput({
1064
+ isControlled: "value" in props,
1065
+ value: toRaw(value4),
1066
+ defaultValue: toRaw(defaultValue),
1067
+ onValueChange: (digits) => onValueChange?.(digits === "" ? null : Number(digits)),
1068
+ sanitize: sanitize3,
1069
+ format: (digits) => digits === "" ? "" : Number(digits).toLocaleString("ko-KR"),
1070
+ isMeaningful: isDigit,
1071
+ inputRef
1072
+ });
1073
+ const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit) : null;
1074
+ return /* @__PURE__ */ jsx12(
1075
+ TextField,
1076
+ {
1077
+ ref: mergeRefs(ref, inputRef),
1078
+ label: label6,
1079
+ placeholder,
1080
+ inputMode: "numeric",
1081
+ value: field3.display,
1082
+ onChange: field3.onChange,
1083
+ onKeyDown: (event) => {
1084
+ field3.onKeyDown(event);
1085
+ onKeyDown?.(event);
1086
+ },
1087
+ endAdornment: unit,
1088
+ helperText: reading && helperText3 ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
1089
+ reading,
1090
+ /* @__PURE__ */ jsx12("br", {}),
1091
+ helperText3
1092
+ ] }) : reading ?? helperText3,
1093
+ className: cx(input3, className),
1094
+ ...rest
1095
+ }
1096
+ );
1097
+ }
1098
+ );
1099
+
291
1100
  // src/components/Avatar/Avatar.tsx
292
1101
  import * as RadixAvatar from "@radix-ui/react-avatar";
293
1102
  import { UserIcon } from "@bestow-ui/icons";
294
- import { forwardRef as forwardRef4 } from "react";
1103
+ import { forwardRef as forwardRef12 } from "react";
295
1104
 
296
1105
  // src/components/Avatar/Avatar.css.ts
297
- import { createRuntimeFn as _7a4682 } from "@vanilla-extract/recipes/createRuntimeFn";
1106
+ import { createRuntimeFn as _7a4687 } from "@vanilla-extract/recipes/createRuntimeFn";
298
1107
  var fallback = "_1fd2kp27";
299
1108
  var image = "_1fd2kp26";
300
- var root3 = /* @__PURE__ */ _7a4682({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
1109
+ var root5 = /* @__PURE__ */ _7a4687({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
301
1110
 
302
1111
  // src/components/Avatar/Avatar.tsx
303
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1112
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
304
1113
  function getInitials(name) {
305
1114
  const [a = "", b = ""] = name.trim().split(/\s+/);
306
1115
  const first = (word) => Array.from(word)[0] ?? "";
307
1116
  return (first(a) + first(b)).toUpperCase();
308
1117
  }
309
- var Avatar = /* @__PURE__ */ forwardRef4(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
1118
+ var Avatar = /* @__PURE__ */ forwardRef12(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
310
1119
  const label6 = alt ?? name;
311
1120
  const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
312
1121
  const initials = name ? getInitials(name) : "";
313
- return /* @__PURE__ */ jsxs3(RadixAvatar.Root, { ref, className: cx(root3({ size, shape }), className), ...a11y, ...rest, children: [
314
- src && /* @__PURE__ */ jsx4(RadixAvatar.Image, { src, alt: "", className: image }),
315
- /* @__PURE__ */ jsx4(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ jsx4(UserIcon, { size: "60%" })) })
1122
+ return /* @__PURE__ */ jsxs12(RadixAvatar.Root, { ref, className: cx(root5({ size, shape }), className), ...a11y, ...rest, children: [
1123
+ src && /* @__PURE__ */ jsx13(RadixAvatar.Image, { src, alt: "", className: image }),
1124
+ /* @__PURE__ */ jsx13(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ jsx13(UserIcon, { size: "60%" })) })
316
1125
  ] });
317
1126
  });
318
1127
 
319
1128
  // src/components/Badge/Badge.tsx
320
- import { forwardRef as forwardRef5 } from "react";
1129
+ import { forwardRef as forwardRef13 } from "react";
321
1130
 
322
1131
  // src/components/Badge/Badge.css.ts
323
- import { createRuntimeFn as _7a4683 } from "@vanilla-extract/recipes/createRuntimeFn";
324
- var badge = /* @__PURE__ */ _7a4683({ 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: [] });
325
- var icon2 = "_1295cfng";
1132
+ import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
1133
+ var badge = /* @__PURE__ */ _7a4688({ 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: [] });
1134
+ var icon3 = "_1295cfng";
326
1135
 
327
1136
  // src/components/Badge/Badge.tsx
328
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
329
- var Badge = /* @__PURE__ */ forwardRef5(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
330
- return /* @__PURE__ */ jsxs4("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
331
- startIcon && /* @__PURE__ */ jsx5("span", { className: icon2, children: startIcon }),
1137
+ import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
1138
+ var Badge = /* @__PURE__ */ forwardRef13(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
1139
+ return /* @__PURE__ */ jsxs13("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
1140
+ startIcon && /* @__PURE__ */ jsx14("span", { className: icon3, children: startIcon }),
332
1141
  children
333
1142
  ] });
334
1143
  });
335
1144
 
336
1145
  // src/components/Breadcrumb/Breadcrumb.tsx
337
- import { forwardRef as forwardRef7 } from "react";
1146
+ import { forwardRef as forwardRef15 } from "react";
338
1147
  import { ChevronRightIcon } from "@bestow-ui/icons";
339
1148
 
340
1149
  // src/components/Link/Link.tsx
341
1150
  import { Slot } from "@radix-ui/react-slot";
342
- import { forwardRef as forwardRef6 } from "react";
1151
+ import { forwardRef as forwardRef14 } from "react";
343
1152
  import { ExternalLinkIcon } from "@bestow-ui/icons";
344
1153
 
345
- // src/styles/visuallyHidden.css.ts
346
- var visuallyHidden = "_1kdtbw10";
347
-
348
1154
  // src/components/Link/Link.css.ts
349
- import { createRuntimeFn as _7a4684 } from "@vanilla-extract/recipes/createRuntimeFn";
1155
+ import { createRuntimeFn as _7a4689 } from "@vanilla-extract/recipes/createRuntimeFn";
350
1156
  var externalIcon = "_1t4hlp6";
351
- var link = /* @__PURE__ */ _7a4684({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
1157
+ var link = /* @__PURE__ */ _7a4689({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
352
1158
 
353
1159
  // src/components/Link/Link.tsx
354
- import { Fragment, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
355
- var Link = /* @__PURE__ */ forwardRef6(function Link2({
1160
+ import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
1161
+ var Link = /* @__PURE__ */ forwardRef14(function Link2({
356
1162
  as: Component = "a",
357
1163
  asChild,
358
1164
  color,
359
1165
  underline,
360
1166
  external,
361
1167
  externalLabel = "(\uC0C8 \uCC3D)",
362
- target,
363
- rel,
364
- className,
365
- children,
366
- ...rest
367
- }, ref) {
368
- const linkClassName = cx(link({ color, underline }), className);
369
- if (asChild) {
370
- return (
371
- // Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
372
- /* @__PURE__ */ jsx6(Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children })
373
- );
374
- }
375
- return /* @__PURE__ */ jsxs5(
376
- Component,
377
- {
378
- ref,
379
- className: linkClassName,
380
- target: external ? target ?? "_blank" : target,
381
- rel: external ? rel ?? "noopener noreferrer" : rel,
382
- ...rest,
383
- children: [
384
- children,
385
- external && /* @__PURE__ */ jsxs5(Fragment, { children: [
386
- " ",
387
- /* @__PURE__ */ jsx6(ExternalLinkIcon, { className: externalIcon }),
388
- /* @__PURE__ */ jsx6("span", { className: visuallyHidden, children: externalLabel })
389
- ] })
390
- ]
391
- }
392
- );
393
- });
394
-
395
- // src/components/Breadcrumb/Breadcrumb.css.ts
396
- var current = "_18t8ztt3";
397
- var item2 = "_18t8ztt1";
398
- var link2 = "_18t8ztt2";
399
- var list = "_18t8ztt0";
400
- var separator = "_18t8ztt4";
401
-
402
- // src/components/Breadcrumb/Breadcrumb.tsx
403
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
404
- var Breadcrumb = /* @__PURE__ */ forwardRef7(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabel = "\uC774\uB3D9 \uACBD\uB85C", className, ...rest }, ref) {
405
- const sep = separator3 ?? /* @__PURE__ */ jsx7(ChevronRightIcon, { size: 14 });
406
- return /* @__PURE__ */ jsx7("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx7("ol", { className: list, children: items2.map((item6, index) => {
407
- const isCurrent = index === items2.length - 1;
408
- return /* @__PURE__ */ jsxs6("li", { className: item2, children: [
409
- index > 0 && /* @__PURE__ */ jsx7("span", { className: separator, "aria-hidden": true, children: sep }),
410
- isCurrent || item6.href === void 0 ? /* @__PURE__ */ jsx7("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item6.label }) : /* @__PURE__ */ jsx7(Link, { as: linkAs, href: item6.href, color: "neutral", underline: "hover", className: link2, children: item6.label })
411
- ] }, index);
412
- }) }) });
413
- });
414
-
415
- // src/components/Button/Button.tsx
416
- import { forwardRef as forwardRef9 } from "react";
417
-
418
- // src/components/Spinner/Spinner.tsx
419
- import { LoaderIcon } from "@bestow-ui/icons";
420
- import { forwardRef as forwardRef8 } from "react";
421
-
422
- // src/components/Spinner/Spinner.css.ts
423
- import { createRuntimeFn as _7a4685 } from "@vanilla-extract/recipes/createRuntimeFn";
424
- var spinner = /* @__PURE__ */ _7a4685({ 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: [] });
425
-
426
- // src/components/Spinner/Spinner.tsx
427
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
428
- var Spinner = /* @__PURE__ */ forwardRef8(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
429
- const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
430
- return /* @__PURE__ */ jsxs7("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
431
- /* @__PURE__ */ jsx8(LoaderIcon, { size: "100%" }),
432
- label6 && /* @__PURE__ */ jsx8("span", { className: visuallyHidden, children: label6 })
433
- ] });
434
- });
435
-
436
- // src/components/Button/Button.css.ts
437
- import { createRuntimeFn as _7a4686 } from "@vanilla-extract/recipes/createRuntimeFn";
438
- var button = /* @__PURE__ */ _7a4686({ 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: [] });
439
- var icon3 = "xcekdai";
440
-
441
- // src/components/Button/Button.tsx
442
- import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
443
- var Button = /* @__PURE__ */ forwardRef9(function Button2({
444
- variant,
445
- color,
446
- size,
447
- fullWidth,
448
- startIcon,
449
- endIcon,
450
- loading,
1168
+ target,
1169
+ rel,
451
1170
  className,
452
- type = "button",
453
- onClick,
454
1171
  children,
455
1172
  ...rest
456
1173
  }, ref) {
457
- const handleClick = (event) => {
458
- if (loading) {
459
- event.preventDefault();
460
- return;
461
- }
462
- onClick?.(event);
463
- };
464
- const leading = loading ? /* @__PURE__ */ jsx9(Spinner, { size: "sm", label: "" }) : startIcon;
465
- return /* @__PURE__ */ jsxs8(
466
- "button",
1174
+ const linkClassName = cx(link({ color, underline }), className);
1175
+ if (asChild) {
1176
+ return (
1177
+ // Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
1178
+ /* @__PURE__ */ jsx15(Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children })
1179
+ );
1180
+ }
1181
+ return /* @__PURE__ */ jsxs14(
1182
+ Component,
467
1183
  {
468
1184
  ref,
469
- type,
470
- className: cx(button({ variant, color, size, fullWidth }), className),
471
- "aria-busy": loading || void 0,
472
- "aria-disabled": loading || void 0,
473
- onClick: handleClick,
1185
+ className: linkClassName,
1186
+ target: external ? target ?? "_blank" : target,
1187
+ rel: external ? rel ?? "noopener noreferrer" : rel,
474
1188
  ...rest,
475
1189
  children: [
476
- leading && /* @__PURE__ */ jsx9("span", { className: icon3, children: leading }),
477
1190
  children,
478
- endIcon && /* @__PURE__ */ jsx9("span", { className: icon3, children: endIcon })
1191
+ external && /* @__PURE__ */ jsxs14(Fragment3, { children: [
1192
+ " ",
1193
+ /* @__PURE__ */ jsx15(ExternalLinkIcon, { className: externalIcon }),
1194
+ /* @__PURE__ */ jsx15("span", { className: visuallyHidden, children: externalLabel })
1195
+ ] })
479
1196
  ]
480
1197
  }
481
1198
  );
482
1199
  });
483
1200
 
1201
+ // src/components/Breadcrumb/Breadcrumb.css.ts
1202
+ var current = "_18t8ztt3";
1203
+ var item3 = "_18t8ztt1";
1204
+ var link2 = "_18t8ztt2";
1205
+ var list2 = "_18t8ztt0";
1206
+ var separator = "_18t8ztt4";
1207
+
1208
+ // src/components/Breadcrumb/Breadcrumb.tsx
1209
+ import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
1210
+ var Breadcrumb = /* @__PURE__ */ forwardRef15(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabel = "\uC774\uB3D9 \uACBD\uB85C", className, ...rest }, ref) {
1211
+ const sep = separator3 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
1212
+ return /* @__PURE__ */ jsx16("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx16("ol", { className: list2, children: items2.map((item7, index) => {
1213
+ const isCurrent = index === items2.length - 1;
1214
+ return /* @__PURE__ */ jsxs15("li", { className: item3, children: [
1215
+ index > 0 && /* @__PURE__ */ jsx16("span", { className: separator, "aria-hidden": true, children: sep }),
1216
+ isCurrent || item7.href === void 0 ? /* @__PURE__ */ jsx16("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item7.label }) : /* @__PURE__ */ jsx16(Link, { as: linkAs, href: item7.href, color: "neutral", underline: "hover", className: link2, children: item7.label })
1217
+ ] }, index);
1218
+ }) }) });
1219
+ });
1220
+
1221
+ // src/components/BusinessNumberInput/BusinessNumberInput.tsx
1222
+ import { forwardRef as forwardRef16, useRef as useRef6, useState as useState4 } from "react";
1223
+ import { jsx as jsx17 } from "react/jsx-runtime";
1224
+ var sanitize = (input5) => input5.replace(/\D/g, "").slice(0, 10);
1225
+ var isDigit2 = (char) => /\d/.test(char);
1226
+ var BusinessNumberInput = /* @__PURE__ */ forwardRef16(
1227
+ function BusinessNumberInput2(props, ref) {
1228
+ const {
1229
+ value: value4,
1230
+ defaultValue,
1231
+ onValueChange,
1232
+ validate = true,
1233
+ 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.",
1234
+ label: label6 = "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638",
1235
+ placeholder = "000-00-00000",
1236
+ error,
1237
+ helperText: helperText3,
1238
+ onBlur,
1239
+ onKeyDown,
1240
+ ...rest
1241
+ } = props;
1242
+ const inputRef = useRef6(null);
1243
+ const [touched, setTouched] = useState4(false);
1244
+ const field3 = useFormattedInput({
1245
+ isControlled: "value" in props,
1246
+ value: value4,
1247
+ defaultValue,
1248
+ onValueChange: (digits) => onValueChange?.(digits, digits.length === 10 ? isValidBusinessNumber(digits) : null),
1249
+ sanitize,
1250
+ format: formatBusinessNumber,
1251
+ isMeaningful: isDigit2,
1252
+ inputRef
1253
+ });
1254
+ const complete = field3.raw.length === 10;
1255
+ const autoInvalid = validate && field3.raw.length > 0 && (complete ? !isValidBusinessNumber(field3.raw) : touched);
1256
+ const showAuto = autoInvalid && error === void 0;
1257
+ return /* @__PURE__ */ jsx17(
1258
+ TextField,
1259
+ {
1260
+ ref: mergeRefs(ref, inputRef),
1261
+ label: label6,
1262
+ placeholder,
1263
+ inputMode: "numeric",
1264
+ value: field3.display,
1265
+ onChange: field3.onChange,
1266
+ onKeyDown: (event) => {
1267
+ field3.onKeyDown(event);
1268
+ onKeyDown?.(event);
1269
+ },
1270
+ onBlur: (event) => {
1271
+ setTouched(true);
1272
+ onBlur?.(event);
1273
+ },
1274
+ error: error ?? autoInvalid,
1275
+ helperText: showAuto ? complete ? invalidText : "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694." : helperText3,
1276
+ ...rest
1277
+ }
1278
+ );
1279
+ }
1280
+ );
1281
+
484
1282
  // src/components/Card/Card.tsx
485
- import { forwardRef as forwardRef10 } from "react";
1283
+ import { forwardRef as forwardRef17 } from "react";
486
1284
 
487
1285
  // src/components/Card/Card.css.ts
488
- import { createRuntimeFn as _7a4687 } from "@vanilla-extract/recipes/createRuntimeFn";
489
- var body = "dnuf1u9";
490
- var card = /* @__PURE__ */ _7a4687({ 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: [] });
491
- var footer = "dnuf1ua";
492
- var header2 = "dnuf1u8";
1286
+ import { createRuntimeFn as _7a46810 } from "@vanilla-extract/recipes/createRuntimeFn";
1287
+ var body2 = "dnuf1u9";
1288
+ var card = /* @__PURE__ */ _7a46810({ 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: [] });
1289
+ var footer2 = "dnuf1ua";
1290
+ var header3 = "dnuf1u8";
493
1291
 
494
1292
  // src/components/Card/Card.tsx
495
- import { jsx as jsx10 } from "react/jsx-runtime";
496
- var Card = /* @__PURE__ */ forwardRef10(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
497
- return /* @__PURE__ */ jsx10(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
498
- });
499
- var CardHeader = /* @__PURE__ */ forwardRef10(function CardHeader2({ className, ...rest }, ref) {
500
- return /* @__PURE__ */ jsx10("div", { ref, className: cx(header2, className), ...rest });
1293
+ import { jsx as jsx18 } from "react/jsx-runtime";
1294
+ var Card = /* @__PURE__ */ forwardRef17(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
1295
+ return /* @__PURE__ */ jsx18(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
501
1296
  });
502
- var CardBody = /* @__PURE__ */ forwardRef10(function CardBody2({ className, ...rest }, ref) {
503
- return /* @__PURE__ */ jsx10("div", { ref, className: cx(body, className), ...rest });
1297
+ var CardHeader = /* @__PURE__ */ forwardRef17(function CardHeader2({ className, ...rest }, ref) {
1298
+ return /* @__PURE__ */ jsx18("div", { ref, className: cx(header3, className), ...rest });
504
1299
  });
505
- var CardFooter = /* @__PURE__ */ forwardRef10(function CardFooter2({ className, ...rest }, ref) {
506
- return /* @__PURE__ */ jsx10("div", { ref, className: cx(footer, className), ...rest });
1300
+ var CardBody = /* @__PURE__ */ forwardRef17(function CardBody2({ className, ...rest }, ref) {
1301
+ return /* @__PURE__ */ jsx18("div", { ref, className: cx(body2, className), ...rest });
507
1302
  });
508
-
509
- // src/components/Checkbox/Checkbox.tsx
510
- import { forwardRef as forwardRef11, useEffect, useRef } from "react";
511
-
512
- // src/utils/mergeRefs.ts
513
- function mergeRefs(...refs) {
514
- return (value4) => {
515
- for (const ref of refs) {
516
- if (typeof ref === "function") ref(value4);
517
- else if (ref) ref.current = value4;
518
- }
519
- };
520
- }
521
-
522
- // src/components/Checkbox/Checkbox.css.ts
523
- import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
524
- var checkIcon = "_1y7mzsn8 _1y7mzsn7";
525
- var control = /* @__PURE__ */ _7a4688({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
526
- var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
527
- var input = "_1y7mzsn6";
528
- var root4 = /* @__PURE__ */ _7a4688({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
529
-
530
- // src/components/Checkbox/Checkbox.tsx
531
- import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
532
- var Checkbox = /* @__PURE__ */ forwardRef11(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
533
- const innerRef = useRef(null);
534
- useEffect(() => {
535
- if (innerRef.current) innerRef.current.indeterminate = indeterminate;
536
- }, [indeterminate]);
537
- return /* @__PURE__ */ jsxs9("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
538
- /* @__PURE__ */ jsxs9("span", { className: control({ size }), children: [
539
- /* @__PURE__ */ jsx11(
540
- "input",
541
- {
542
- ref: mergeRefs(innerRef, ref),
543
- type: "checkbox",
544
- className: input,
545
- disabled,
546
- "aria-invalid": invalid || void 0,
547
- ...rest
548
- }
549
- ),
550
- /* @__PURE__ */ jsx11("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx11(
551
- "path",
552
- {
553
- d: "M5 10.5l3.2 3L15 7",
554
- stroke: "currentColor",
555
- strokeWidth: "2",
556
- strokeLinecap: "round",
557
- strokeLinejoin: "round"
558
- }
559
- ) }),
560
- /* @__PURE__ */ jsx11("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx11("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
561
- ] }),
562
- label6
563
- ] });
1303
+ var CardFooter = /* @__PURE__ */ forwardRef17(function CardFooter2({ className, ...rest }, ref) {
1304
+ return /* @__PURE__ */ jsx18("div", { ref, className: cx(footer2, className), ...rest });
564
1305
  });
565
1306
 
566
1307
  // src/components/Combobox/Combobox.tsx
567
1308
  import * as Popover from "@radix-ui/react-popover";
568
1309
  import {
569
- forwardRef as forwardRef12,
570
- useEffect as useEffect2,
571
- useId,
1310
+ forwardRef as forwardRef18,
1311
+ useEffect as useEffect3,
1312
+ useId as useId4,
572
1313
  useMemo as useMemo2,
573
- useRef as useRef2,
574
- useState
1314
+ useRef as useRef7,
1315
+ useState as useState5
575
1316
  } from "react";
576
- import { CheckIcon, ChevronDownIcon as ChevronDownIcon2 } from "@bestow-ui/icons";
577
-
578
- // src/components/Input/Input.css.ts
579
- import { createRuntimeFn as _7a4689 } from "@vanilla-extract/recipes/createRuntimeFn";
580
- var adornment = "_19p5zvh6";
581
- var field = "_19p5zvh7";
582
- var fieldFullWidth = "_19p5zvh8";
583
- var helperText = /* @__PURE__ */ _7a4689({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
584
- var input2 = "_19p5zvh5";
585
- var label = "_19p5zvh9";
586
- var requiredMark = "_19p5zvha";
587
- var root5 = /* @__PURE__ */ _7a4689({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1317
+ import { CheckIcon, ChevronDownIcon as ChevronDownIcon3 } from "@bestow-ui/icons";
588
1318
 
589
1319
  // src/components/Select/Select.css.ts
590
- var content3 = "_1kx81e83";
1320
+ var content5 = "_1kx81e83";
591
1321
  var icon4 = "_1kx81e82";
592
- var item3 = "_1kx81e85";
1322
+ var item4 = "_1kx81e85";
593
1323
  var itemIndicator = "_1kx81e86";
594
1324
  var trigger2 = "_1kx81e80";
595
1325
  var value = "_1kx81e81";
596
1326
  var viewport = "_1kx81e84";
597
1327
 
598
1328
  // src/components/Combobox/Combobox.css.ts
599
- var content4 = "c2pbq71";
1329
+ var content6 = "c2pbq71";
600
1330
  var empty = "c2pbq72";
601
- var toggle = "c2pbq70";
1331
+ var toggle2 = "c2pbq70";
602
1332
 
603
1333
  // src/components/Combobox/Combobox.tsx
604
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
1334
+ import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
605
1335
  var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
606
- var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
1336
+ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
607
1337
  const {
608
1338
  options,
609
1339
  value: value4,
@@ -625,33 +1355,33 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
625
1355
  toggleLabel = "\uBAA9\uB85D \uC5F4\uAE30",
626
1356
  className
627
1357
  } = props;
628
- const generatedId = useId();
1358
+ const generatedId = useId4();
629
1359
  const inputId = id ?? generatedId;
630
1360
  const labelId = `${inputId}-label`;
631
1361
  const listId = `${inputId}-listbox`;
632
1362
  const helperId = helperText3 ? `${inputId}-helper` : void 0;
633
1363
  const optionId = (index) => `${inputId}-option-${index}`;
634
1364
  const portal2 = usePortalProps();
635
- const inputRef = useRef2(null);
636
- const anchorRef = useRef2(null);
1365
+ const inputRef = useRef7(null);
1366
+ const anchorRef = useRef7(null);
637
1367
  const isControlled = "value" in props;
638
- const [innerValue, setInnerValue] = useState(defaultValue);
1368
+ const [innerValue, setInnerValue] = useState5(defaultValue);
639
1369
  const selectedValue = isControlled ? value4 : innerValue;
640
1370
  const selectedOption = options.find((o) => o.value === selectedValue);
641
- const [open, setOpen] = useState(false);
642
- const [query, setQuery] = useState(null);
643
- const [activeIndex, setActiveIndex] = useState(-1);
1371
+ const [open, setOpen] = useState5(false);
1372
+ const [query, setQuery] = useState5(null);
1373
+ const [activeIndex, setActiveIndex] = useState5(-1);
644
1374
  const filtered = useMemo2(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
645
1375
  const inputText = query ?? selectedOption?.label ?? "";
646
- const firstEnabled = (list4, from = 0, step = 1) => {
647
- for (let i = from; i >= 0 && i < list4.length; i += step) if (!list4[i].disabled) return i;
1376
+ const firstEnabled = (list5, from = 0, step = 1) => {
1377
+ for (let i = from; i >= 0 && i < list5.length; i += step) if (!list5[i].disabled) return i;
648
1378
  return -1;
649
1379
  };
650
- const openList = (list4 = filtered, preferLast = false) => {
1380
+ const openList = (list5 = filtered, preferLast = false) => {
651
1381
  setOpen(true);
652
- const selectedIndex = list4.findIndex((o) => o.value === selectedValue);
1382
+ const selectedIndex = list5.findIndex((o) => o.value === selectedValue);
653
1383
  setActiveIndex(
654
- selectedIndex >= 0 && !list4[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list4, list4.length - 1, -1) : firstEnabled(list4)
1384
+ selectedIndex >= 0 && !list5[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list5, list5.length - 1, -1) : firstEnabled(list5)
655
1385
  );
656
1386
  };
657
1387
  const close2 = () => {
@@ -707,26 +1437,26 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
707
1437
  break;
708
1438
  }
709
1439
  };
710
- useEffect2(() => {
1440
+ useEffect3(() => {
711
1441
  if (!open || activeIndex < 0) return;
712
1442
  document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
713
1443
  }, [open, activeIndex]);
714
1444
  const hasOptions = filtered.length > 0;
715
- return /* @__PURE__ */ jsxs10("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
716
- label6 && /* @__PURE__ */ jsxs10("label", { id: labelId, htmlFor: inputId, className: label, children: [
1445
+ return /* @__PURE__ */ jsxs16("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1446
+ label6 && /* @__PURE__ */ jsxs16("label", { id: labelId, htmlFor: inputId, className: label, children: [
717
1447
  label6,
718
- required && /* @__PURE__ */ jsx12("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1448
+ required && /* @__PURE__ */ jsx19("span", { className: requiredMark, "aria-hidden": true, children: "*" })
719
1449
  ] }),
720
- /* @__PURE__ */ jsxs10(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
721
- /* @__PURE__ */ jsx12(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs10(
1450
+ /* @__PURE__ */ jsxs16(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
1451
+ /* @__PURE__ */ jsx19(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs16(
722
1452
  "div",
723
1453
  {
724
1454
  ref: anchorRef,
725
- className: cx(root5({ size, fullWidth }), className),
1455
+ className: cx(root3({ size, fullWidth }), className),
726
1456
  "data-invalid": error || void 0,
727
1457
  "data-disabled": disabled || void 0,
728
1458
  children: [
729
- /* @__PURE__ */ jsx12(
1459
+ /* @__PURE__ */ jsx19(
730
1460
  "input",
731
1461
  {
732
1462
  ref: mergeRefs(ref, inputRef),
@@ -750,10 +1480,10 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
750
1480
  onBlur: () => {
751
1481
  if (open) close2();
752
1482
  },
753
- className: input2
1483
+ className: input
754
1484
  }
755
1485
  ),
756
- /* @__PURE__ */ jsx12(
1486
+ /* @__PURE__ */ jsx19(
757
1487
  "button",
758
1488
  {
759
1489
  type: "button",
@@ -761,27 +1491,27 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
761
1491
  "aria-label": toggleLabel,
762
1492
  "aria-expanded": open,
763
1493
  disabled,
764
- className: toggle,
1494
+ className: toggle2,
765
1495
  onMouseDown: (event) => event.preventDefault(),
766
1496
  onClick: () => {
767
1497
  if (open) close2();
768
1498
  else openList(options);
769
1499
  inputRef.current?.focus();
770
1500
  },
771
- children: /* @__PURE__ */ jsx12(ChevronDownIcon2, { size: 16 })
1501
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon3, { size: 16 })
772
1502
  }
773
1503
  )
774
1504
  ]
775
1505
  }
776
1506
  ) }),
777
- /* @__PURE__ */ jsx12(Popover.Portal, { children: /* @__PURE__ */ jsx12(
1507
+ /* @__PURE__ */ jsx19(Popover.Portal, { children: /* @__PURE__ */ jsx19(
778
1508
  Popover.Content,
779
1509
  {
780
1510
  role: "presentation",
781
1511
  align: "start",
782
1512
  sideOffset: 4,
783
1513
  collisionPadding: 8,
784
- className: cx(portal2.className, content4),
1514
+ className: cx(portal2.className, content6),
785
1515
  style: portal2.style,
786
1516
  onOpenAutoFocus: (event) => event.preventDefault(),
787
1517
  onCloseAutoFocus: (event) => event.preventDefault(),
@@ -789,7 +1519,7 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
789
1519
  onInteractOutside: (event) => {
790
1520
  if (anchorRef.current?.contains(event.target)) event.preventDefault();
791
1521
  },
792
- children: hasOptions ? /* @__PURE__ */ jsx12(
1522
+ children: hasOptions ? /* @__PURE__ */ jsx19(
793
1523
  "div",
794
1524
  {
795
1525
  id: listId,
@@ -801,7 +1531,7 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
801
1531
  return (
802
1532
  // aria-activedescendant 패턴: 포커스·키보드는 입력창이 맡고 항목은 포커스를 받지 않는다 (WAI-ARIA combobox)
803
1533
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
804
- /* @__PURE__ */ jsxs10(
1534
+ /* @__PURE__ */ jsxs16(
805
1535
  "div",
806
1536
  {
807
1537
  id: optionId(index),
@@ -811,13 +1541,13 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
811
1541
  "data-highlighted": index === activeIndex ? "" : void 0,
812
1542
  "data-state": isSelected ? "checked" : "unchecked",
813
1543
  "data-disabled": option2.disabled ? "" : void 0,
814
- className: item3,
1544
+ className: item4,
815
1545
  onMouseDown: (event) => event.preventDefault(),
816
1546
  onMouseMove: () => !option2.disabled && setActiveIndex(index),
817
1547
  onClick: () => select(option2),
818
1548
  children: [
819
1549
  option2.label,
820
- isSelected && /* @__PURE__ */ jsx12("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ jsx12(CheckIcon, { size: 16 }) })
1550
+ isSelected && /* @__PURE__ */ jsx19("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ jsx19(CheckIcon, { size: 16 }) })
821
1551
  ]
822
1552
  },
823
1553
  option2.value
@@ -825,81 +1555,81 @@ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
825
1555
  );
826
1556
  })
827
1557
  }
828
- ) : /* @__PURE__ */ jsx12("div", { className: empty, role: "status", children: emptyMessage })
1558
+ ) : /* @__PURE__ */ jsx19("div", { className: empty, role: "status", children: emptyMessage })
829
1559
  }
830
1560
  ) })
831
1561
  ] }),
832
- name && /* @__PURE__ */ jsx12("input", { type: "hidden", name, value: selectedValue ?? "" }),
833
- helperText3 && /* @__PURE__ */ jsx12("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1562
+ name && /* @__PURE__ */ jsx19("input", { type: "hidden", name, value: selectedValue ?? "" }),
1563
+ helperText3 && /* @__PURE__ */ jsx19("p", { id: helperId, className: helperText({ error }), children: helperText3 })
834
1564
  ] });
835
1565
  });
836
1566
 
837
1567
  // src/components/Divider/Divider.tsx
838
- import { forwardRef as forwardRef13 } from "react";
1568
+ import { forwardRef as forwardRef19 } from "react";
839
1569
 
840
1570
  // src/components/Divider/Divider.css.ts
841
- import { createRuntimeFn as _7a46810 } from "@vanilla-extract/recipes/createRuntimeFn";
842
- var divider = /* @__PURE__ */ _7a46810({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
1571
+ import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
1572
+ var divider = /* @__PURE__ */ _7a46811({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
843
1573
  var labeled = "_1t3gq8v3";
844
1574
  var line = "_1t3gq8v4";
845
1575
 
846
1576
  // src/components/Divider/Divider.tsx
847
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
848
- var Divider = /* @__PURE__ */ forwardRef13(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
1577
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
1578
+ var Divider = /* @__PURE__ */ forwardRef19(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
849
1579
  if (children && orientation === "horizontal") {
850
- return /* @__PURE__ */ jsxs11("div", { ref, className: cx(labeled, className), ...rest, children: [
851
- /* @__PURE__ */ jsx13("span", { className: line, "aria-hidden": true }),
1580
+ return /* @__PURE__ */ jsxs17("div", { ref, className: cx(labeled, className), ...rest, children: [
1581
+ /* @__PURE__ */ jsx20("span", { className: line, "aria-hidden": true }),
852
1582
  children,
853
- /* @__PURE__ */ jsx13("span", { className: line, "aria-hidden": true })
1583
+ /* @__PURE__ */ jsx20("span", { className: line, "aria-hidden": true })
854
1584
  ] });
855
1585
  }
856
1586
  const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation === "vertical" ? "vertical" : void 0 };
857
- return /* @__PURE__ */ jsx13("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
1587
+ return /* @__PURE__ */ jsx20("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
858
1588
  });
859
1589
 
860
1590
  // src/components/Drawer/Drawer.tsx
861
- import * as Dialog from "@radix-ui/react-dialog";
862
- import { XIcon as XIcon2 } from "@bestow-ui/icons";
1591
+ import * as Dialog2 from "@radix-ui/react-dialog";
1592
+ import { XIcon as XIcon3 } from "@bestow-ui/icons";
863
1593
 
864
1594
  // src/components/IconButton/IconButton.tsx
865
- import { forwardRef as forwardRef14 } from "react";
1595
+ import { forwardRef as forwardRef20 } from "react";
866
1596
 
867
1597
  // src/components/IconButton/IconButton.css.ts
868
- import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
869
- var iconButton = /* @__PURE__ */ _7a46811({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1598
+ import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
1599
+ var iconButton = /* @__PURE__ */ _7a46812({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
870
1600
 
871
1601
  // src/components/IconButton/IconButton.tsx
872
- import { jsx as jsx14 } from "react/jsx-runtime";
873
- var IconButton = /* @__PURE__ */ forwardRef14(function IconButton2({ variant = "ghost", color = "neutral", size, loading, className, children, ...rest }, ref) {
874
- return /* @__PURE__ */ jsx14(
1602
+ import { jsx as jsx21 } from "react/jsx-runtime";
1603
+ var IconButton = /* @__PURE__ */ forwardRef20(function IconButton2({ variant = "ghost", color = "neutral", size, loading: loading2, className, children, ...rest }, ref) {
1604
+ return /* @__PURE__ */ jsx21(
875
1605
  Button,
876
1606
  {
877
1607
  ref,
878
1608
  variant,
879
1609
  color,
880
1610
  size,
881
- loading,
1611
+ loading: loading2,
882
1612
  className: cx(iconButton({ size }), className),
883
1613
  ...rest,
884
- children: !loading && children
1614
+ children: !loading2 && children
885
1615
  }
886
1616
  );
887
1617
  });
888
1618
 
889
1619
  // src/components/Drawer/Drawer.css.ts
890
- import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
891
- var body2 = "nmobyvy";
892
- var closeButton2 = "nmobyvx";
893
- var content5 = /* @__PURE__ */ _7a46812({ 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"]] });
894
- var description2 = "nmobyvw";
895
- var footer2 = "nmobyvz";
896
- var header3 = "nmobyvt";
897
- var headings = "nmobyvu";
898
- var overlay = "nmobyv0";
899
- var title2 = "nmobyvv";
1620
+ import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
1621
+ var body3 = "nmobyvy";
1622
+ var closeButton3 = "nmobyvx";
1623
+ var content7 = /* @__PURE__ */ _7a46813({ 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"]] });
1624
+ var description3 = "nmobyvw";
1625
+ var footer3 = "nmobyvz";
1626
+ var header4 = "nmobyvt";
1627
+ var headings2 = "nmobyvu";
1628
+ var overlay2 = "nmobyv0";
1629
+ var title3 = "nmobyvv";
900
1630
 
901
1631
  // src/components/Drawer/Drawer.tsx
902
- import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
1632
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
903
1633
  function Drawer({
904
1634
  open,
905
1635
  defaultOpen,
@@ -916,58 +1646,61 @@ function Drawer({
916
1646
  className
917
1647
  }) {
918
1648
  const portal2 = usePortalProps();
919
- return /* @__PURE__ */ jsxs12(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
920
- trigger4 && /* @__PURE__ */ jsx15(Dialog.Trigger, { asChild: true, children: trigger4 }),
921
- /* @__PURE__ */ jsxs12(Dialog.Portal, { children: [
922
- /* @__PURE__ */ jsx15(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
923
- /* @__PURE__ */ jsxs12(
924
- Dialog.Content,
1649
+ const focus = useReturnFocus(Boolean(trigger4));
1650
+ return /* @__PURE__ */ jsxs18(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1651
+ trigger4 && /* @__PURE__ */ jsx22(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1652
+ /* @__PURE__ */ jsxs18(Dialog2.Portal, { children: [
1653
+ /* @__PURE__ */ jsx22(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1654
+ /* @__PURE__ */ jsxs18(
1655
+ Dialog2.Content,
925
1656
  {
926
- className: cx(portal2.className, content5({ side, size }), className),
1657
+ className: cx(portal2.className, content7({ side, size }), className),
927
1658
  style: portal2.style,
928
1659
  "data-side": side ?? "right",
929
1660
  onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
1661
+ onOpenAutoFocus: focus.onOpenAutoFocus,
1662
+ onCloseAutoFocus: focus.onCloseAutoFocus,
930
1663
  ...description6 ? {} : { "aria-describedby": void 0 },
931
1664
  children: [
932
- /* @__PURE__ */ jsxs12("div", { className: header3, children: [
933
- /* @__PURE__ */ jsxs12("div", { className: headings, children: [
934
- /* @__PURE__ */ jsx15(Dialog.Title, { className: title2, children: title6 }),
935
- description6 && /* @__PURE__ */ jsx15(Dialog.Description, { className: description2, children: description6 })
1665
+ /* @__PURE__ */ jsxs18("div", { className: header4, children: [
1666
+ /* @__PURE__ */ jsxs18("div", { className: headings2, children: [
1667
+ /* @__PURE__ */ jsx22(Dialog2.Title, { className: title3, children: title6 }),
1668
+ description6 && /* @__PURE__ */ jsx22(Dialog2.Description, { className: description3, children: description6 })
936
1669
  ] }),
937
- !hideCloseButton && /* @__PURE__ */ jsx15(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx15(IconButton, { "aria-label": "\uB2EB\uAE30", size: "sm", className: closeButton2, children: /* @__PURE__ */ jsx15(XIcon2, {}) }) })
1670
+ !hideCloseButton && /* @__PURE__ */ jsx22(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx22(IconButton, { "aria-label": "\uB2EB\uAE30", size: "sm", className: closeButton3, children: /* @__PURE__ */ jsx22(XIcon3, {}) }) })
938
1671
  ] }),
939
- children && /* @__PURE__ */ jsx15("div", { className: body2, children }),
940
- footer6 && /* @__PURE__ */ jsx15("div", { className: footer2, children: footer6 })
1672
+ children && /* @__PURE__ */ jsx22("div", { className: body3, children }),
1673
+ footer6 && /* @__PURE__ */ jsx22("div", { className: footer3, children: footer6 })
941
1674
  ]
942
1675
  }
943
1676
  )
944
1677
  ] })
945
1678
  ] });
946
1679
  }
947
- var DrawerClose = Dialog.Close;
1680
+ var DrawerClose = Dialog2.Close;
948
1681
 
949
1682
  // src/components/DropdownMenu/DropdownMenu.tsx
950
1683
  import * as RadixMenu from "@radix-ui/react-dropdown-menu";
951
- import { forwardRef as forwardRef15 } from "react";
1684
+ import { forwardRef as forwardRef21 } from "react";
952
1685
 
953
1686
  // src/components/DropdownMenu/DropdownMenu.css.ts
954
- var content6 = "_1d7ahux0";
1687
+ var content8 = "_1d7ahux0";
955
1688
  var danger = "_1d7ahux2";
956
1689
  var icon5 = "_1d7ahux3";
957
- var item4 = "_1d7ahux1";
1690
+ var item5 = "_1d7ahux1";
958
1691
  var label2 = "_1d7ahux5";
959
1692
  var separator2 = "_1d7ahux6";
960
1693
  var shortcut = "_1d7ahux4";
961
1694
 
962
1695
  // src/components/DropdownMenu/DropdownMenu.tsx
963
- import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
1696
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
964
1697
  var DropdownMenu = RadixMenu.Root;
965
1698
  var DropdownMenuTrigger = RadixMenu.Trigger;
966
1699
  var DropdownMenuGroup = RadixMenu.Group;
967
- var DropdownMenuContent = /* @__PURE__ */ forwardRef15(
1700
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef21(
968
1701
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
969
1702
  const portal2 = usePortalProps();
970
- return /* @__PURE__ */ jsx16(RadixMenu.Portal, { children: /* @__PURE__ */ jsx16(
1703
+ return /* @__PURE__ */ jsx23(RadixMenu.Portal, { children: /* @__PURE__ */ jsx23(
971
1704
  RadixMenu.Content,
972
1705
  {
973
1706
  ref,
@@ -975,154 +1708,36 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef15(
975
1708
  align,
976
1709
  sideOffset,
977
1710
  collisionPadding,
978
- className: cx(portal2.className, content6, className),
1711
+ className: cx(portal2.className, content8, className),
979
1712
  style: { ...portal2.style, ...style },
980
1713
  ...rest
981
1714
  }
982
1715
  ) });
983
1716
  }
984
1717
  );
985
- var DropdownMenuItem = /* @__PURE__ */ forwardRef15(
1718
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef21(
986
1719
  function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "default", className, children, ...rest }, ref) {
987
- return /* @__PURE__ */ jsxs13(RadixMenu.Item, { ref, className: cx(item4, color === "danger" && danger, className), ...rest, children: [
988
- icon6 && /* @__PURE__ */ jsx16("span", { className: icon5, "aria-hidden": true, children: icon6 }),
1720
+ return /* @__PURE__ */ jsxs19(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
1721
+ icon6 && /* @__PURE__ */ jsx23("span", { className: icon5, "aria-hidden": true, children: icon6 }),
989
1722
  children,
990
- shortcut2 && /* @__PURE__ */ jsx16("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
1723
+ shortcut2 && /* @__PURE__ */ jsx23("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
991
1724
  ] });
992
1725
  }
993
1726
  );
994
- var DropdownMenuLabel = /* @__PURE__ */ forwardRef15(
1727
+ var DropdownMenuLabel = /* @__PURE__ */ forwardRef21(
995
1728
  function DropdownMenuLabel2({ className, ...rest }, ref) {
996
- return /* @__PURE__ */ jsx16(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
1729
+ return /* @__PURE__ */ jsx23(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
997
1730
  }
998
1731
  );
999
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef15(
1732
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef21(
1000
1733
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
1001
- return /* @__PURE__ */ jsx16(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
1734
+ return /* @__PURE__ */ jsx23(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
1002
1735
  }
1003
1736
  );
1004
1737
 
1005
- // src/components/Input/Input.tsx
1006
- import { forwardRef as forwardRef16 } from "react";
1007
- import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
1008
- var Input = /* @__PURE__ */ forwardRef16(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
1009
- return /* @__PURE__ */ jsxs14(
1010
- "div",
1011
- {
1012
- className: cx(root5({ size, fullWidth }), rootClassName),
1013
- "data-invalid": invalid || void 0,
1014
- "data-disabled": disabled || void 0,
1015
- children: [
1016
- startAdornment && /* @__PURE__ */ jsx17("span", { className: adornment, children: startAdornment }),
1017
- /* @__PURE__ */ jsx17(
1018
- "input",
1019
- {
1020
- ref,
1021
- className: cx(input2, className),
1022
- disabled,
1023
- "aria-invalid": invalid || void 0,
1024
- ...rest
1025
- }
1026
- ),
1027
- endAdornment && /* @__PURE__ */ jsx17("span", { className: adornment, children: endAdornment })
1028
- ]
1029
- }
1030
- );
1031
- });
1032
-
1033
- // src/components/Input/TextField.tsx
1034
- import { forwardRef as forwardRef17, useId as useId2 } from "react";
1035
- import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
1036
- var TextField = /* @__PURE__ */ forwardRef17(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
1037
- const generatedId = useId2();
1038
- const inputId = id ?? generatedId;
1039
- const helperId = helperText3 ? `${inputId}-helper` : void 0;
1040
- return /* @__PURE__ */ jsxs15("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1041
- label6 && /* @__PURE__ */ jsxs15("label", { htmlFor: inputId, className: label, children: [
1042
- label6,
1043
- required && /* @__PURE__ */ jsx18("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1044
- ] }),
1045
- /* @__PURE__ */ jsx18(
1046
- Input,
1047
- {
1048
- ref,
1049
- id: inputId,
1050
- invalid: error,
1051
- required,
1052
- fullWidth,
1053
- "aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
1054
- ...rest
1055
- }
1056
- ),
1057
- helperText3 && /* @__PURE__ */ jsx18("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1058
- ] });
1059
- });
1060
-
1061
- // src/components/Modal/Modal.tsx
1062
- import * as Dialog2 from "@radix-ui/react-dialog";
1063
- import { XIcon as XIcon3 } from "@bestow-ui/icons";
1064
-
1065
- // src/components/Modal/Modal.css.ts
1066
- import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
1067
- var body3 = "_1pdsmv0a";
1068
- var closeButton3 = "_1pdsmv09";
1069
- var content7 = /* @__PURE__ */ _7a46813({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1070
- var description3 = "_1pdsmv08";
1071
- var footer3 = "_1pdsmv0b";
1072
- var header4 = "_1pdsmv05";
1073
- var headings2 = "_1pdsmv06";
1074
- var overlay2 = "_1pdsmv00";
1075
- var title3 = "_1pdsmv07";
1076
-
1077
- // src/components/Modal/Modal.tsx
1078
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
1079
- function Modal({
1080
- open,
1081
- defaultOpen,
1082
- onOpenChange,
1083
- trigger: trigger4,
1084
- title: title6,
1085
- description: description6,
1086
- children,
1087
- footer: footer6,
1088
- size,
1089
- hideCloseButton = false,
1090
- closeOnOverlayClick = true,
1091
- className
1092
- }) {
1093
- const portal2 = usePortalProps();
1094
- return /* @__PURE__ */ jsxs16(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1095
- trigger4 && /* @__PURE__ */ jsx19(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1096
- /* @__PURE__ */ jsxs16(Dialog2.Portal, { children: [
1097
- /* @__PURE__ */ jsx19(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1098
- /* @__PURE__ */ jsxs16(
1099
- Dialog2.Content,
1100
- {
1101
- className: cx(portal2.className, content7({ size }), className),
1102
- style: portal2.style,
1103
- onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
1104
- ...description6 ? {} : { "aria-describedby": void 0 },
1105
- children: [
1106
- /* @__PURE__ */ jsxs16("div", { className: header4, children: [
1107
- /* @__PURE__ */ jsxs16("div", { className: headings2, children: [
1108
- /* @__PURE__ */ jsx19(Dialog2.Title, { className: title3, children: title6 }),
1109
- description6 && /* @__PURE__ */ jsx19(Dialog2.Description, { className: description3, children: description6 })
1110
- ] }),
1111
- !hideCloseButton && /* @__PURE__ */ jsx19(Dialog2.Close, { className: closeButton3, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx19(XIcon3, { size: 16 }) })
1112
- ] }),
1113
- children && /* @__PURE__ */ jsx19("div", { className: body3, children }),
1114
- footer6 && /* @__PURE__ */ jsx19("div", { className: footer3, children: footer6 })
1115
- ]
1116
- }
1117
- )
1118
- ] })
1119
- ] });
1120
- }
1121
- var ModalClose = Dialog2.Close;
1122
-
1123
1738
  // src/components/Pagination/Pagination.tsx
1124
1739
  import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2 } from "@bestow-ui/icons";
1125
- import { forwardRef as forwardRef18, useState as useState2 } from "react";
1740
+ import { forwardRef as forwardRef22, useState as useState6 } from "react";
1126
1741
 
1127
1742
  // src/components/Pagination/getPaginationItems.ts
1128
1743
  var range = (start, end) => end < start ? [] : Array.from({ length: end - start + 1 }, (_, i) => start + i);
@@ -1151,13 +1766,13 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
1151
1766
  // src/components/Pagination/Pagination.css.ts
1152
1767
  import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
1153
1768
  var ellipsis = "_1iraoak4";
1154
- var item5 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1155
- var list2 = "_1iraoak0";
1769
+ var item6 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1770
+ var list3 = "_1iraoak0";
1156
1771
 
1157
1772
  // src/components/Pagination/Pagination.tsx
1158
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
1773
+ import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
1159
1774
  var defaultItemLabel = (type, page) => type === "previous" ? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? "\uB2E4\uC74C \uD398\uC774\uC9C0" : `${page} \uD398\uC774\uC9C0`;
1160
- var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
1775
+ var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
1161
1776
  totalPages,
1162
1777
  page: pageProp,
1163
1778
  defaultPage = 1,
@@ -1170,7 +1785,7 @@ var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
1170
1785
  "aria-label": ariaLabel = "\uD398\uC774\uC9C0 \uD0D0\uC0C9",
1171
1786
  ...rest
1172
1787
  }, ref) {
1173
- const [uncontrolledPage, setUncontrolledPage] = useState2(defaultPage);
1788
+ const [uncontrolledPage, setUncontrolledPage] = useState6(defaultPage);
1174
1789
  if (totalPages < 1) return null;
1175
1790
  const page = Math.min(Math.max(pageProp ?? uncontrolledPage, 1), totalPages);
1176
1791
  const goTo = (next) => {
@@ -1178,9 +1793,9 @@ var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
1178
1793
  if (pageProp === void 0) setUncontrolledPage(next);
1179
1794
  onPageChange?.(next);
1180
1795
  };
1181
- const itemClass = item5({ size });
1182
- return /* @__PURE__ */ jsx20("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs17("ul", { className: list2, children: [
1183
- /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
1796
+ const itemClass = item6({ size });
1797
+ return /* @__PURE__ */ jsx24("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs20("ul", { className: list3, children: [
1798
+ /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsx24(
1184
1799
  "button",
1185
1800
  {
1186
1801
  type: "button",
@@ -1188,23 +1803,23 @@ var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
1188
1803
  "aria-label": getItemLabel("previous", page - 1),
1189
1804
  disabled: page <= 1,
1190
1805
  onClick: () => goTo(page - 1),
1191
- children: /* @__PURE__ */ jsx20(ChevronLeftIcon, { size: 16 })
1806
+ children: /* @__PURE__ */ jsx24(ChevronLeftIcon, { size: 16 })
1192
1807
  }
1193
1808
  ) }),
1194
1809
  getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
1195
- (item6) => typeof item6 === "number" ? /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
1810
+ (item7) => typeof item7 === "number" ? /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsx24(
1196
1811
  "button",
1197
1812
  {
1198
1813
  type: "button",
1199
1814
  className: itemClass,
1200
- "aria-label": getItemLabel("page", item6),
1201
- "aria-current": item6 === page ? "page" : void 0,
1202
- onClick: () => goTo(item6),
1203
- children: item6
1815
+ "aria-label": getItemLabel("page", item7),
1816
+ "aria-current": item7 === page ? "page" : void 0,
1817
+ onClick: () => goTo(item7),
1818
+ children: item7
1204
1819
  }
1205
- ) }, item6) : /* @__PURE__ */ jsx20("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item6)
1820
+ ) }, item7) : /* @__PURE__ */ jsx24("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item7)
1206
1821
  ),
1207
- /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
1822
+ /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsx24(
1208
1823
  "button",
1209
1824
  {
1210
1825
  type: "button",
@@ -1212,28 +1827,79 @@ var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
1212
1827
  "aria-label": getItemLabel("next", page + 1),
1213
1828
  disabled: page >= totalPages,
1214
1829
  onClick: () => goTo(page + 1),
1215
- children: /* @__PURE__ */ jsx20(ChevronRightIcon2, { size: 16 })
1830
+ children: /* @__PURE__ */ jsx24(ChevronRightIcon2, { size: 16 })
1216
1831
  }
1217
1832
  ) })
1218
1833
  ] }) });
1219
1834
  });
1220
1835
 
1836
+ // src/components/PhoneNumberInput/PhoneNumberInput.tsx
1837
+ import { forwardRef as forwardRef23, useRef as useRef8 } from "react";
1838
+ import { jsx as jsx25 } from "react/jsx-runtime";
1839
+ var sanitize2 = (input5) => {
1840
+ const digits = input5.replace(/\D/g, "");
1841
+ return digits.slice(0, phoneNumberMaxDigits(digits));
1842
+ };
1843
+ var isDigit3 = (char) => /\d/.test(char);
1844
+ var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
1845
+ function PhoneNumberInput2(props, ref) {
1846
+ const {
1847
+ value: value4,
1848
+ defaultValue,
1849
+ onValueChange,
1850
+ label: label6 = "\uD734\uB300\uD3F0 \uBC88\uD638",
1851
+ placeholder = "010-0000-0000",
1852
+ onKeyDown,
1853
+ ...rest
1854
+ } = props;
1855
+ const inputRef = useRef8(null);
1856
+ const field3 = useFormattedInput({
1857
+ isControlled: "value" in props,
1858
+ value: value4,
1859
+ defaultValue,
1860
+ onValueChange,
1861
+ sanitize: sanitize2,
1862
+ format: formatPhoneNumber,
1863
+ isMeaningful: isDigit3,
1864
+ inputRef
1865
+ });
1866
+ return /* @__PURE__ */ jsx25(
1867
+ TextField,
1868
+ {
1869
+ ref: mergeRefs(ref, inputRef),
1870
+ label: label6,
1871
+ placeholder,
1872
+ type: "tel",
1873
+ inputMode: "tel",
1874
+ autoComplete: "tel-national",
1875
+ value: field3.display,
1876
+ onChange: field3.onChange,
1877
+ onKeyDown: (event) => {
1878
+ field3.onKeyDown(event);
1879
+ onKeyDown?.(event);
1880
+ },
1881
+ ...rest
1882
+ }
1883
+ );
1884
+ }
1885
+ );
1886
+
1221
1887
  // src/components/Popover/Popover.tsx
1222
1888
  import * as RadixPopover from "@radix-ui/react-popover";
1223
1889
  import { XIcon as XIcon4 } from "@bestow-ui/icons";
1224
- import { useId as useId3 } from "react";
1890
+ import { useId as useId5 } from "react";
1225
1891
 
1226
1892
  // src/components/Popover/Popover.css.ts
1227
1893
  var arrow = "_1j99p8x4";
1228
1894
  var closeButton4 = "_1j99p8x3";
1229
- var content8 = "_1j99p8x0";
1895
+ var content9 = "_1j99p8x0";
1230
1896
  var header5 = "_1j99p8x1";
1231
1897
  var title4 = "_1j99p8x2";
1232
1898
 
1233
1899
  // src/components/Popover/Popover.tsx
1234
- import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
1900
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
1235
1901
  function Popover2({
1236
- content: content11,
1902
+ content: content12,
1237
1903
  children,
1238
1904
  title: title6,
1239
1905
  "aria-label": ariaLabel,
@@ -1249,10 +1915,10 @@ function Popover2({
1249
1915
  style
1250
1916
  }) {
1251
1917
  const portal2 = usePortalProps();
1252
- const titleId = useId3();
1253
- return /* @__PURE__ */ jsxs18(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
1254
- /* @__PURE__ */ jsx21(RadixPopover.Trigger, { asChild: true, children }),
1255
- /* @__PURE__ */ jsx21(RadixPopover.Portal, { children: /* @__PURE__ */ jsxs18(
1918
+ const titleId = useId5();
1919
+ return /* @__PURE__ */ jsxs21(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
1920
+ /* @__PURE__ */ jsx26(RadixPopover.Trigger, { asChild: true, children }),
1921
+ /* @__PURE__ */ jsx26(RadixPopover.Portal, { children: /* @__PURE__ */ jsxs21(
1256
1922
  RadixPopover.Content,
1257
1923
  {
1258
1924
  side,
@@ -1261,15 +1927,15 @@ function Popover2({
1261
1927
  collisionPadding: 8,
1262
1928
  "aria-labelledby": title6 ? titleId : void 0,
1263
1929
  "aria-label": title6 ? void 0 : ariaLabel,
1264
- className: cx(portal2.className, content8, className),
1930
+ className: cx(portal2.className, content9, className),
1265
1931
  style: { ...portal2.style, ...style },
1266
1932
  children: [
1267
- (title6 || showClose) && /* @__PURE__ */ jsxs18("div", { className: header5, children: [
1268
- title6 && /* @__PURE__ */ jsx21("h2", { id: titleId, className: title4, children: title6 }),
1269
- showClose && /* @__PURE__ */ jsx21(RadixPopover.Close, { className: closeButton4, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx21(XIcon4, { size: 16 }) })
1933
+ (title6 || showClose) && /* @__PURE__ */ jsxs21("div", { className: header5, children: [
1934
+ title6 && /* @__PURE__ */ jsx26("h2", { id: titleId, className: title4, children: title6 }),
1935
+ showClose && /* @__PURE__ */ jsx26(RadixPopover.Close, { className: closeButton4, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx26(XIcon4, { size: 16 }) })
1270
1936
  ] }),
1271
- content11,
1272
- showArrow && /* @__PURE__ */ jsx21(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
1937
+ content12,
1938
+ showArrow && /* @__PURE__ */ jsx26(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
1273
1939
  ]
1274
1940
  }
1275
1941
  ) })
@@ -1278,7 +1944,7 @@ function Popover2({
1278
1944
  var PopoverClose = RadixPopover.Close;
1279
1945
 
1280
1946
  // src/components/Progress/Progress.tsx
1281
- import { forwardRef as forwardRef19, useId as useId4 } from "react";
1947
+ import { forwardRef as forwardRef24, useId as useId6 } from "react";
1282
1948
 
1283
1949
  // src/components/Progress/Progress.css.ts
1284
1950
  import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -1290,9 +1956,9 @@ var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_1tvkq004", variantCla
1290
1956
  var value2 = "_1tvkq003";
1291
1957
 
1292
1958
  // src/components/Progress/Progress.tsx
1293
- import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
1959
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
1294
1960
  var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
1295
- var Progress = /* @__PURE__ */ forwardRef19(function Progress2({
1961
+ var Progress = /* @__PURE__ */ forwardRef24(function Progress2({
1296
1962
  value: value4,
1297
1963
  max = 100,
1298
1964
  label: label6,
@@ -1304,17 +1970,17 @@ var Progress = /* @__PURE__ */ forwardRef19(function Progress2({
1304
1970
  className,
1305
1971
  ...rest
1306
1972
  }, ref) {
1307
- const labelId = useId4();
1973
+ const labelId = useId6();
1308
1974
  const isIndeterminate = value4 === void 0 || value4 === null;
1309
1975
  const safeMax = max > 0 ? max : 100;
1310
1976
  const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
1311
1977
  const valueText = isIndeterminate ? void 0 : formatValue(clamped, safeMax);
1312
- return /* @__PURE__ */ jsxs19("div", { ref, className: cx(root6, className), ...rest, children: [
1313
- (label6 || showValue && valueText) && /* @__PURE__ */ jsxs19("div", { className: header6, children: [
1314
- label6 && /* @__PURE__ */ jsx22("span", { id: labelId, className: label3, children: label6 }),
1315
- showValue && valueText && /* @__PURE__ */ jsx22("span", { className: value2, "aria-hidden": true, children: valueText })
1978
+ return /* @__PURE__ */ jsxs22("div", { ref, className: cx(root6, className), ...rest, children: [
1979
+ (label6 || showValue && valueText) && /* @__PURE__ */ jsxs22("div", { className: header6, children: [
1980
+ label6 && /* @__PURE__ */ jsx27("span", { id: labelId, className: label3, children: label6 }),
1981
+ showValue && valueText && /* @__PURE__ */ jsx27("span", { className: value2, "aria-hidden": true, children: valueText })
1316
1982
  ] }),
1317
- /* @__PURE__ */ jsx22(
1983
+ /* @__PURE__ */ jsx27(
1318
1984
  "div",
1319
1985
  {
1320
1986
  role: "progressbar",
@@ -1325,7 +1991,7 @@ var Progress = /* @__PURE__ */ forwardRef19(function Progress2({
1325
1991
  "aria-valuenow": isIndeterminate ? void 0 : clamped,
1326
1992
  "aria-valuetext": valueText,
1327
1993
  className: track({ size }),
1328
- children: /* @__PURE__ */ jsx22(
1994
+ children: /* @__PURE__ */ jsx27(
1329
1995
  "div",
1330
1996
  {
1331
1997
  className: indicator({ color }),
@@ -1340,7 +2006,7 @@ var Progress = /* @__PURE__ */ forwardRef19(function Progress2({
1340
2006
 
1341
2007
  // src/components/RadioGroup/RadioGroup.tsx
1342
2008
  import * as RadixRadioGroup from "@radix-ui/react-radio-group";
1343
- import { forwardRef as forwardRef20, useId as useId5 } from "react";
2009
+ import { forwardRef as forwardRef25, useId as useId7 } from "react";
1344
2010
 
1345
2011
  // src/components/RadioGroup/RadioGroup.css.ts
1346
2012
  import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -1354,8 +2020,8 @@ var radio = /* @__PURE__ */ _7a46816({ defaultClassName: "_1w9iwjm7", variantCla
1354
2020
  var text = "_1w9iwjmb";
1355
2021
 
1356
2022
  // src/components/RadioGroup/RadioGroup.tsx
1357
- import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
1358
- var RadioGroup = /* @__PURE__ */ forwardRef20(function RadioGroup2(props, ref) {
2023
+ import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2024
+ var RadioGroup = /* @__PURE__ */ forwardRef25(function RadioGroup2(props, ref) {
1359
2025
  const {
1360
2026
  options,
1361
2027
  value: value4,
@@ -1374,16 +2040,16 @@ var RadioGroup = /* @__PURE__ */ forwardRef20(function RadioGroup2(props, ref) {
1374
2040
  className
1375
2041
  } = props;
1376
2042
  const isControlled = "value" in props;
1377
- const generatedId = useId5();
2043
+ const generatedId = useId7();
1378
2044
  const baseId = id ?? generatedId;
1379
2045
  const labelId = label6 ? `${baseId}-label` : void 0;
1380
2046
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
1381
- return /* @__PURE__ */ jsxs20("div", { className: cx(field, className), children: [
1382
- label6 && /* @__PURE__ */ jsxs20("span", { id: labelId, className: cx(label, groupLabel), children: [
2047
+ return /* @__PURE__ */ jsxs23("div", { className: cx(field, className), children: [
2048
+ label6 && /* @__PURE__ */ jsxs23("span", { id: labelId, className: cx(label, groupLabel), children: [
1383
2049
  label6,
1384
- required && /* @__PURE__ */ jsx23("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2050
+ required && /* @__PURE__ */ jsx28("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1385
2051
  ] }),
1386
- /* @__PURE__ */ jsx23(
2052
+ /* @__PURE__ */ jsx28(
1387
2053
  RadixRadioGroup.Root,
1388
2054
  {
1389
2055
  ref,
@@ -1404,8 +2070,8 @@ var RadioGroup = /* @__PURE__ */ forwardRef20(function RadioGroup2(props, ref) {
1404
2070
  const itemId = `${baseId}-${option2.value}`;
1405
2071
  const descriptionId = option2.description ? `${itemId}-description` : void 0;
1406
2072
  const itemDisabled = disabled || option2.disabled;
1407
- return /* @__PURE__ */ jsxs20("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
1408
- /* @__PURE__ */ jsx23(
2073
+ return /* @__PURE__ */ jsxs23("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2074
+ /* @__PURE__ */ jsx28(
1409
2075
  RadixRadioGroup.Item,
1410
2076
  {
1411
2077
  id: itemId,
@@ -1413,27 +2079,27 @@ var RadioGroup = /* @__PURE__ */ forwardRef20(function RadioGroup2(props, ref) {
1413
2079
  disabled: option2.disabled,
1414
2080
  "aria-describedby": descriptionId,
1415
2081
  className: radio({ size }),
1416
- children: /* @__PURE__ */ jsx23(RadixRadioGroup.Indicator, { className: indicator2 })
2082
+ children: /* @__PURE__ */ jsx28(RadixRadioGroup.Indicator, { className: indicator2 })
1417
2083
  }
1418
2084
  ),
1419
- /* @__PURE__ */ jsxs20("span", { className: text, children: [
1420
- /* @__PURE__ */ jsx23("label", { htmlFor: itemId, className: labelText, children: option2.label }),
1421
- option2.description && /* @__PURE__ */ jsx23("span", { id: descriptionId, className: description4, children: option2.description })
2085
+ /* @__PURE__ */ jsxs23("span", { className: text, children: [
2086
+ /* @__PURE__ */ jsx28("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2087
+ option2.description && /* @__PURE__ */ jsx28("span", { id: descriptionId, className: description4, children: option2.description })
1422
2088
  ] })
1423
2089
  ] }, option2.value);
1424
2090
  })
1425
2091
  }
1426
2092
  ),
1427
- helperText3 && /* @__PURE__ */ jsx23("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2093
+ helperText3 && /* @__PURE__ */ jsx28("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1428
2094
  ] });
1429
2095
  });
1430
2096
 
1431
2097
  // src/components/Select/Select.tsx
1432
2098
  import * as RadixSelect from "@radix-ui/react-select";
1433
- import { forwardRef as forwardRef21, useId as useId6 } from "react";
1434
- import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon3 } from "@bestow-ui/icons";
1435
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
1436
- var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
2099
+ import { forwardRef as forwardRef26, useId as useId8 } from "react";
2100
+ import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon4 } from "@bestow-ui/icons";
2101
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2102
+ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
1437
2103
  const {
1438
2104
  options,
1439
2105
  value: value4,
@@ -1453,16 +2119,16 @@ var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
1453
2119
  className
1454
2120
  } = props;
1455
2121
  const isControlled = "value" in props;
1456
- const generatedId = useId6();
2122
+ const generatedId = useId8();
1457
2123
  const triggerId = id ?? generatedId;
1458
2124
  const helperId = helperText3 ? `${triggerId}-helper` : void 0;
1459
2125
  const portal2 = usePortalProps();
1460
- return /* @__PURE__ */ jsxs21("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1461
- label6 && /* @__PURE__ */ jsxs21("label", { htmlFor: triggerId, className: label, children: [
2126
+ return /* @__PURE__ */ jsxs24("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2127
+ label6 && /* @__PURE__ */ jsxs24("label", { htmlFor: triggerId, className: label, children: [
1462
2128
  label6,
1463
- required && /* @__PURE__ */ jsx24("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2129
+ required && /* @__PURE__ */ jsx29("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1464
2130
  ] }),
1465
- /* @__PURE__ */ jsxs21(
2131
+ /* @__PURE__ */ jsxs24(
1466
2132
  RadixSelect.Root,
1467
2133
  {
1468
2134
  value: isControlled ? value4 ?? "" : void 0,
@@ -1472,7 +2138,7 @@ var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
1472
2138
  required,
1473
2139
  name,
1474
2140
  children: [
1475
- /* @__PURE__ */ jsxs21(
2141
+ /* @__PURE__ */ jsxs24(
1476
2142
  RadixSelect.Trigger,
1477
2143
  {
1478
2144
  ref,
@@ -1481,30 +2147,30 @@ var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
1481
2147
  "aria-invalid": error || void 0,
1482
2148
  "aria-describedby": helperId,
1483
2149
  "data-invalid": error || void 0,
1484
- className: cx(root5({ size, fullWidth }), trigger2, className),
2150
+ className: cx(root3({ size, fullWidth }), trigger2, className),
1485
2151
  children: [
1486
- /* @__PURE__ */ jsx24("span", { className: value, children: /* @__PURE__ */ jsx24(RadixSelect.Value, { placeholder }) }),
1487
- /* @__PURE__ */ jsx24(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ jsx24(ChevronDownIcon3, { size: 16 }) })
2152
+ /* @__PURE__ */ jsx29("span", { className: value, children: /* @__PURE__ */ jsx29(RadixSelect.Value, { placeholder }) }),
2153
+ /* @__PURE__ */ jsx29(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ jsx29(ChevronDownIcon4, { size: 16 }) })
1488
2154
  ]
1489
2155
  }
1490
2156
  ),
1491
- /* @__PURE__ */ jsx24(RadixSelect.Portal, { children: /* @__PURE__ */ jsx24(
2157
+ /* @__PURE__ */ jsx29(RadixSelect.Portal, { children: /* @__PURE__ */ jsx29(
1492
2158
  RadixSelect.Content,
1493
2159
  {
1494
2160
  position: "popper",
1495
2161
  sideOffset: 4,
1496
2162
  collisionPadding: 8,
1497
- className: cx(portal2.className, content3),
2163
+ className: cx(portal2.className, content5),
1498
2164
  style: portal2.style,
1499
- children: /* @__PURE__ */ jsx24(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs21(
2165
+ children: /* @__PURE__ */ jsx29(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs24(
1500
2166
  RadixSelect.Item,
1501
2167
  {
1502
2168
  value: option2.value,
1503
2169
  disabled: option2.disabled,
1504
- className: item3,
2170
+ className: item4,
1505
2171
  children: [
1506
- /* @__PURE__ */ jsx24(RadixSelect.ItemText, { children: option2.label }),
1507
- /* @__PURE__ */ jsx24(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx24(CheckIcon2, { size: 16 }) })
2172
+ /* @__PURE__ */ jsx29(RadixSelect.ItemText, { children: option2.label }),
2173
+ /* @__PURE__ */ jsx29(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx29(CheckIcon2, { size: 16 }) })
1508
2174
  ]
1509
2175
  },
1510
2176
  option2.value
@@ -1514,13 +2180,13 @@ var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
1514
2180
  ]
1515
2181
  }
1516
2182
  ),
1517
- helperText3 && /* @__PURE__ */ jsx24("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2183
+ helperText3 && /* @__PURE__ */ jsx29("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1518
2184
  ] });
1519
2185
  });
1520
2186
 
1521
2187
  // src/components/Skeleton/Skeleton.tsx
1522
2188
  import { assignInlineVars as assignInlineVars2 } from "@vanilla-extract/dynamic";
1523
- import { forwardRef as forwardRef22 } from "react";
2189
+ import { forwardRef as forwardRef27 } from "react";
1524
2190
 
1525
2191
  // src/components/Skeleton/Skeleton.css.ts
1526
2192
  import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -1530,13 +2196,13 @@ var skeleton = /* @__PURE__ */ _7a46817({ defaultClassName: "_1s8datd2", variant
1530
2196
  var width = "var(--_1s8datd0)";
1531
2197
 
1532
2198
  // src/components/Skeleton/Skeleton.tsx
1533
- import { jsx as jsx25 } from "react/jsx-runtime";
2199
+ import { jsx as jsx30 } from "react/jsx-runtime";
1534
2200
  var toCss = (value4) => typeof value4 === "number" ? `${value4}px` : value4;
1535
- var Skeleton = /* @__PURE__ */ forwardRef22(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
2201
+ var Skeleton = /* @__PURE__ */ forwardRef27(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
1536
2202
  const w = toCss(width2 ?? (variant === "circle" ? 40 : "100%"));
1537
2203
  const h = toCss(height2 ?? (variant === "circle" ? w : variant === "rect" ? 100 : "1em"));
1538
2204
  if (variant === "text" && lines2 > 1) {
1539
- return /* @__PURE__ */ jsx25(
2205
+ return /* @__PURE__ */ jsx30(
1540
2206
  "span",
1541
2207
  {
1542
2208
  ref,
@@ -1544,7 +2210,7 @@ var Skeleton = /* @__PURE__ */ forwardRef22(function Skeleton2({ variant = "text
1544
2210
  className: cx(lines, className),
1545
2211
  style: { ...assignInlineVars2({ [width]: w }), ...style },
1546
2212
  ...rest,
1547
- children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ jsx25(
2213
+ children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ jsx30(
1548
2214
  "span",
1549
2215
  {
1550
2216
  className: skeleton({ variant }),
@@ -1555,7 +2221,7 @@ var Skeleton = /* @__PURE__ */ forwardRef22(function Skeleton2({ variant = "text
1555
2221
  }
1556
2222
  );
1557
2223
  }
1558
- return /* @__PURE__ */ jsx25(
2224
+ return /* @__PURE__ */ jsx30(
1559
2225
  "span",
1560
2226
  {
1561
2227
  ref,
@@ -1569,7 +2235,7 @@ var Skeleton = /* @__PURE__ */ forwardRef22(function Skeleton2({ variant = "text
1569
2235
 
1570
2236
  // src/components/Slider/Slider.tsx
1571
2237
  import * as RadixSlider from "@radix-ui/react-slider";
1572
- import { forwardRef as forwardRef23, useId as useId7, useState as useState3 } from "react";
2238
+ import { forwardRef as forwardRef28, useId as useId9, useState as useState7 } from "react";
1573
2239
 
1574
2240
  // src/components/Slider/Slider.css.ts
1575
2241
  import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -1584,8 +2250,8 @@ var track2 = /* @__PURE__ */ _7a46818({ defaultClassName: "_126mzjm8", variantCl
1584
2250
  var value3 = "_126mzjm3";
1585
2251
 
1586
2252
  // src/components/Slider/Slider.tsx
1587
- import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
1588
- var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
2253
+ import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
2254
+ var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
1589
2255
  const {
1590
2256
  value: value4,
1591
2257
  defaultValue,
@@ -1604,12 +2270,12 @@ var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
1604
2270
  disabled,
1605
2271
  ...rest
1606
2272
  } = props;
1607
- const generatedId = useId7();
2273
+ const generatedId = useId9();
1608
2274
  const baseId = id ?? generatedId;
1609
2275
  const labelId = `${baseId}-label`;
1610
2276
  const helperId = `${baseId}-helper`;
1611
2277
  const isControlled = "value" in props;
1612
- const [innerValue, setInnerValue] = useState3(defaultValue ?? [min]);
2278
+ const [innerValue, setInnerValue] = useState7(defaultValue ?? [min]);
1613
2279
  const current2 = isControlled ? value4 ?? [min] : innerValue;
1614
2280
  const isRange = current2.length > 1;
1615
2281
  const handleChange = (next) => {
@@ -1617,12 +2283,12 @@ var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
1617
2283
  onValueChange?.(next);
1618
2284
  };
1619
2285
  const valueText = current2.map(formatValue).join(" \u2013 ");
1620
- return /* @__PURE__ */ jsxs22("div", { className: cx(field2, className), children: [
1621
- (label6 || showValue) && /* @__PURE__ */ jsxs22("div", { className: header7, children: [
1622
- label6 && /* @__PURE__ */ jsx26("span", { id: labelId, className: label4, children: label6 }),
1623
- showValue && /* @__PURE__ */ jsx26("span", { className: value3, "aria-hidden": true, children: valueText })
2286
+ return /* @__PURE__ */ jsxs25("div", { className: cx(field2, className), children: [
2287
+ (label6 || showValue) && /* @__PURE__ */ jsxs25("div", { className: header7, children: [
2288
+ label6 && /* @__PURE__ */ jsx31("span", { id: labelId, className: label4, children: label6 }),
2289
+ showValue && /* @__PURE__ */ jsx31("span", { className: value3, "aria-hidden": true, children: valueText })
1624
2290
  ] }),
1625
- /* @__PURE__ */ jsxs22(
2291
+ /* @__PURE__ */ jsxs25(
1626
2292
  RadixSlider.Root,
1627
2293
  {
1628
2294
  ref,
@@ -1635,10 +2301,10 @@ var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
1635
2301
  className: root7({ size }),
1636
2302
  ...rest,
1637
2303
  children: [
1638
- /* @__PURE__ */ jsx26(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ jsx26(RadixSlider.Range, { className: range2 }) }),
2304
+ /* @__PURE__ */ jsx31(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ jsx31(RadixSlider.Range, { className: range2 }) }),
1639
2305
  current2.map((thumbValue, index) => {
1640
2306
  const thumbLabelId = `${baseId}-thumb-${index}`;
1641
- return /* @__PURE__ */ jsx26(
2307
+ return /* @__PURE__ */ jsx31(
1642
2308
  RadixSlider.Thumb,
1643
2309
  {
1644
2310
  className: thumb({ size }),
@@ -1653,30 +2319,30 @@ var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
1653
2319
  ]
1654
2320
  }
1655
2321
  ),
1656
- isRange && current2.map((_, index) => /* @__PURE__ */ jsxs22("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
2322
+ isRange && current2.map((_, index) => /* @__PURE__ */ jsxs25("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
1657
2323
  label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
1658
2324
  thumbLabels[index] ?? `${index + 1}`
1659
2325
  ] }, index)),
1660
- helperText3 && /* @__PURE__ */ jsx26("span", { id: helperId, className: helperText2, children: helperText3 })
2326
+ helperText3 && /* @__PURE__ */ jsx31("span", { id: helperId, className: helperText2, children: helperText3 })
1661
2327
  ] });
1662
2328
  });
1663
2329
 
1664
2330
  // src/components/Stack/Stack.tsx
1665
- import { forwardRef as forwardRef24 } from "react";
2331
+ import { forwardRef as forwardRef29 } from "react";
1666
2332
 
1667
2333
  // src/components/Stack/Stack.css.ts
1668
2334
  import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
1669
2335
  var stack = /* @__PURE__ */ _7a46819({ 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: [] });
1670
2336
 
1671
2337
  // src/components/Stack/Stack.tsx
1672
- import { jsx as jsx27 } from "react/jsx-runtime";
1673
- var Stack = /* @__PURE__ */ forwardRef24(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
1674
- return /* @__PURE__ */ jsx27(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
2338
+ import { jsx as jsx32 } from "react/jsx-runtime";
2339
+ var Stack = /* @__PURE__ */ forwardRef29(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
2340
+ return /* @__PURE__ */ jsx32(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
1675
2341
  });
1676
2342
 
1677
2343
  // src/components/Switch/Switch.tsx
1678
2344
  import * as RadixSwitch from "@radix-ui/react-switch";
1679
- import { forwardRef as forwardRef25, useId as useId8 } from "react";
2345
+ import { forwardRef as forwardRef30, useId as useId10 } from "react";
1680
2346
 
1681
2347
  // src/components/Switch/Switch.css.ts
1682
2348
  import { createRuntimeFn as _7a46820 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -1686,12 +2352,12 @@ var thumb2 = /* @__PURE__ */ _7a46820({ defaultClassName: "o33ul26", variantClas
1686
2352
  var track3 = /* @__PURE__ */ _7a46820({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1687
2353
 
1688
2354
  // src/components/Switch/Switch.tsx
1689
- import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
1690
- var Switch = /* @__PURE__ */ forwardRef25(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
1691
- const generatedId = useId8();
2355
+ import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
2356
+ var Switch = /* @__PURE__ */ forwardRef30(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
2357
+ const generatedId = useId10();
1692
2358
  const switchId = id ?? generatedId;
1693
- return /* @__PURE__ */ jsxs23("span", { className: cx(root8({ size }), className), "data-disabled": disabled || void 0, children: [
1694
- /* @__PURE__ */ jsx28(
2359
+ return /* @__PURE__ */ jsxs26("span", { className: cx(root8({ size }), className), "data-disabled": disabled || void 0, children: [
2360
+ /* @__PURE__ */ jsx33(
1695
2361
  RadixSwitch.Root,
1696
2362
  {
1697
2363
  ref,
@@ -1700,19 +2366,19 @@ var Switch = /* @__PURE__ */ forwardRef25(function Switch2({ label: label6, size
1700
2366
  "aria-label": ariaLabel,
1701
2367
  className: track3({ size }),
1702
2368
  ...rest,
1703
- children: /* @__PURE__ */ jsx28(RadixSwitch.Thumb, { className: thumb2({ size }) })
2369
+ children: /* @__PURE__ */ jsx33(RadixSwitch.Thumb, { className: thumb2({ size }) })
1704
2370
  }
1705
2371
  ),
1706
- label6 && /* @__PURE__ */ jsx28("label", { htmlFor: switchId, className: label5, children: label6 })
2372
+ label6 && /* @__PURE__ */ jsx33("label", { htmlFor: switchId, className: label5, children: label6 })
1707
2373
  ] });
1708
2374
  });
1709
2375
 
1710
2376
  // src/components/Table/Table.tsx
1711
2377
  import {
1712
2378
  createContext as createContext2,
1713
- forwardRef as forwardRef26,
2379
+ forwardRef as forwardRef31,
1714
2380
  useContext as useContext2,
1715
- useId as useId9
2381
+ useId as useId11
1716
2382
  } from "react";
1717
2383
  import { ArrowDownIcon, ArrowUpIcon } from "@bestow-ui/icons";
1718
2384
 
@@ -1726,7 +2392,7 @@ var footer4 = "l3ploy7";
1726
2392
  var footerCell = "l3ployg";
1727
2393
  var head = "l3ployf";
1728
2394
  var header8 = "l3ploy3";
1729
- var row = "l3ploy8";
2395
+ var row3 = "l3ploy8";
1730
2396
  var sortButton = "l3ployh";
1731
2397
  var sortIcon = "l3ployi";
1732
2398
  var stickyHeader = "l3ploy4";
@@ -1734,10 +2400,10 @@ var striped = "l3ploy6";
1734
2400
  var table = "l3ploy1";
1735
2401
 
1736
2402
  // src/components/Table/Table.tsx
1737
- import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2403
+ import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
1738
2404
  var TableSizeContext = /* @__PURE__ */ createContext2("md");
1739
2405
  var TableSectionContext = /* @__PURE__ */ createContext2("body");
1740
- var Table = /* @__PURE__ */ forwardRef26(function Table2({
2406
+ var Table = /* @__PURE__ */ forwardRef31(function Table2({
1741
2407
  size = "md",
1742
2408
  striped: striped2,
1743
2409
  stickyHeader: stickyHeader2,
@@ -1749,8 +2415,8 @@ var Table = /* @__PURE__ */ forwardRef26(function Table2({
1749
2415
  children,
1750
2416
  ...rest
1751
2417
  }, ref) {
1752
- const captionId = useId9();
1753
- return /* @__PURE__ */ jsx29(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx29(
2418
+ const captionId = useId11();
2419
+ return /* @__PURE__ */ jsx34(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx34(
1754
2420
  "div",
1755
2421
  {
1756
2422
  className: cx(container, containerClassName),
@@ -1759,7 +2425,7 @@ var Table = /* @__PURE__ */ forwardRef26(function Table2({
1759
2425
  role: "region",
1760
2426
  "aria-labelledby": caption2 ? captionId : void 0,
1761
2427
  "aria-label": caption2 ? void 0 : ariaLabel,
1762
- children: /* @__PURE__ */ jsxs24(
2428
+ children: /* @__PURE__ */ jsxs27(
1763
2429
  "table",
1764
2430
  {
1765
2431
  ref,
@@ -1767,7 +2433,7 @@ var Table = /* @__PURE__ */ forwardRef26(function Table2({
1767
2433
  "aria-label": caption2 ? void 0 : ariaLabel,
1768
2434
  ...rest,
1769
2435
  children: [
1770
- caption2 && /* @__PURE__ */ jsx29("caption", { id: captionId, className: caption, children: caption2 }),
2436
+ caption2 && /* @__PURE__ */ jsx34("caption", { id: captionId, className: caption, children: caption2 }),
1771
2437
  children
1772
2438
  ]
1773
2439
  }
@@ -1775,31 +2441,31 @@ var Table = /* @__PURE__ */ forwardRef26(function Table2({
1775
2441
  }
1776
2442
  ) });
1777
2443
  });
1778
- var TableHeader = /* @__PURE__ */ forwardRef26(
2444
+ var TableHeader = /* @__PURE__ */ forwardRef31(
1779
2445
  function TableHeader2({ className, ...rest }, ref) {
1780
- return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx29("thead", { ref, className: cx(header8, className), ...rest }) });
2446
+ return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx34("thead", { ref, className: cx(header8, className), ...rest }) });
1781
2447
  }
1782
2448
  );
1783
- var TableBody = /* @__PURE__ */ forwardRef26(
2449
+ var TableBody = /* @__PURE__ */ forwardRef31(
1784
2450
  function TableBody2({ className, ...rest }, ref) {
1785
- return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx29("tbody", { ref, className: cx(body4, className), ...rest }) });
2451
+ return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx34("tbody", { ref, className: cx(body4, className), ...rest }) });
1786
2452
  }
1787
2453
  );
1788
- var TableFooter = /* @__PURE__ */ forwardRef26(
2454
+ var TableFooter = /* @__PURE__ */ forwardRef31(
1789
2455
  function TableFooter2({ className, ...rest }, ref) {
1790
- return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx29("tfoot", { ref, className: cx(footer4, className), ...rest }) });
2456
+ return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx34("tfoot", { ref, className: cx(footer4, className), ...rest }) });
1791
2457
  }
1792
2458
  );
1793
- var TableRow = /* @__PURE__ */ forwardRef26(function TableRow2({ selected, className, ...rest }, ref) {
1794
- return /* @__PURE__ */ jsx29("tr", { ref, className: cx(row, className), "data-state": selected ? "selected" : void 0, ...rest });
2459
+ var TableRow = /* @__PURE__ */ forwardRef31(function TableRow2({ selected, className, ...rest }, ref) {
2460
+ return /* @__PURE__ */ jsx34("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
1795
2461
  });
1796
- var TableHead = /* @__PURE__ */ forwardRef26(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
2462
+ var TableHead = /* @__PURE__ */ forwardRef31(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
1797
2463
  const size = useContext2(TableSizeContext);
1798
2464
  const section = useContext2(TableSectionContext);
1799
2465
  const sortable = onSort !== void 0;
1800
2466
  const direction = sortDirection ?? "none";
1801
2467
  const SortIcon = direction === "descending" ? ArrowDownIcon : ArrowUpIcon;
1802
- return /* @__PURE__ */ jsx29(
2468
+ return /* @__PURE__ */ jsx34(
1803
2469
  "th",
1804
2470
  {
1805
2471
  ref,
@@ -1811,17 +2477,17 @@ var TableHead = /* @__PURE__ */ forwardRef26(function TableHead2({ align, sortDi
1811
2477
  className
1812
2478
  ),
1813
2479
  ...rest,
1814
- children: sortable ? /* @__PURE__ */ jsxs24("button", { type: "button", className: sortButton, onClick: onSort, children: [
2480
+ children: sortable ? /* @__PURE__ */ jsxs27("button", { type: "button", className: sortButton, onClick: onSort, children: [
1815
2481
  children,
1816
- /* @__PURE__ */ jsx29(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
2482
+ /* @__PURE__ */ jsx34(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
1817
2483
  ] }) : children
1818
2484
  }
1819
2485
  );
1820
2486
  });
1821
- var TableCell = /* @__PURE__ */ forwardRef26(function TableCell2({ align, className, ...rest }, ref) {
2487
+ var TableCell = /* @__PURE__ */ forwardRef31(function TableCell2({ align, className, ...rest }, ref) {
1822
2488
  const size = useContext2(TableSizeContext);
1823
2489
  const section = useContext2(TableSectionContext);
1824
- return /* @__PURE__ */ jsx29(
2490
+ return /* @__PURE__ */ jsx34(
1825
2491
  "td",
1826
2492
  {
1827
2493
  ref,
@@ -1833,42 +2499,42 @@ var TableCell = /* @__PURE__ */ forwardRef26(function TableCell2({ align, classN
1833
2499
 
1834
2500
  // src/components/Tabs/Tabs.tsx
1835
2501
  import * as RadixTabs from "@radix-ui/react-tabs";
1836
- import { createContext as createContext3, forwardRef as forwardRef27, useContext as useContext3 } from "react";
2502
+ import { createContext as createContext3, forwardRef as forwardRef32, useContext as useContext3 } from "react";
1837
2503
 
1838
2504
  // src/components/Tabs/Tabs.css.ts
1839
2505
  import { createRuntimeFn as _7a46822 } from "@vanilla-extract/recipes/createRuntimeFn";
1840
- var content9 = "fvhbtda";
1841
- var list3 = /* @__PURE__ */ _7a46822({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
2506
+ var content10 = "fvhbtda";
2507
+ var list4 = /* @__PURE__ */ _7a46822({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
1842
2508
  var trigger3 = /* @__PURE__ */ _7a46822({ 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"]] });
1843
2509
 
1844
2510
  // src/components/Tabs/Tabs.tsx
1845
- import { jsx as jsx30 } from "react/jsx-runtime";
2511
+ import { jsx as jsx35 } from "react/jsx-runtime";
1846
2512
  var TabsStyleContext = /* @__PURE__ */ createContext3({ variant: "line", size: "md" });
1847
- var Tabs = /* @__PURE__ */ forwardRef27(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
2513
+ var Tabs = /* @__PURE__ */ forwardRef32(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
1848
2514
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
1849
- return /* @__PURE__ */ jsx30(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx30(RadixTabs.Root, { ref, ...props, ...controlled }) });
2515
+ return /* @__PURE__ */ jsx35(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx35(RadixTabs.Root, { ref, ...props, ...controlled }) });
1850
2516
  });
1851
- var TabsList = /* @__PURE__ */ forwardRef27(function TabsList2({ className, ...rest }, ref) {
2517
+ var TabsList = /* @__PURE__ */ forwardRef32(function TabsList2({ className, ...rest }, ref) {
1852
2518
  const { variant } = useContext3(TabsStyleContext);
1853
- return /* @__PURE__ */ jsx30(RadixTabs.List, { ref, className: cx(list3({ variant }), className), ...rest });
2519
+ return /* @__PURE__ */ jsx35(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
1854
2520
  });
1855
- var TabsTrigger = /* @__PURE__ */ forwardRef27(function TabsTrigger2({ className, ...rest }, ref) {
2521
+ var TabsTrigger = /* @__PURE__ */ forwardRef32(function TabsTrigger2({ className, ...rest }, ref) {
1856
2522
  const { variant, size } = useContext3(TabsStyleContext);
1857
- return /* @__PURE__ */ jsx30(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
2523
+ return /* @__PURE__ */ jsx35(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
1858
2524
  });
1859
- var TabsContent = /* @__PURE__ */ forwardRef27(function TabsContent2({ className, ...rest }, ref) {
1860
- return /* @__PURE__ */ jsx30(RadixTabs.Content, { ref, className: cx(content9, className), ...rest });
2525
+ var TabsContent = /* @__PURE__ */ forwardRef32(function TabsContent2({ className, ...rest }, ref) {
2526
+ return /* @__PURE__ */ jsx35(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
1861
2527
  });
1862
2528
 
1863
2529
  // src/components/Textarea/Textarea.tsx
1864
2530
  import {
1865
- forwardRef as forwardRef28,
2531
+ forwardRef as forwardRef33,
1866
2532
  useCallback,
1867
- useEffect as useEffect3,
1868
- useId as useId10,
1869
- useLayoutEffect,
1870
- useRef as useRef3,
1871
- useState as useState4
2533
+ useEffect as useEffect4,
2534
+ useId as useId12,
2535
+ useLayoutEffect as useLayoutEffect2,
2536
+ useRef as useRef9,
2537
+ useState as useState8
1872
2538
  } from "react";
1873
2539
 
1874
2540
  // src/components/Textarea/Textarea.css.ts
@@ -1880,9 +2546,9 @@ var footer5 = "_1koawa8";
1880
2546
  var textarea = /* @__PURE__ */ _7a46823({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
1881
2547
 
1882
2548
  // src/components/Textarea/Textarea.tsx
1883
- import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
1884
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect3;
1885
- var Textarea = /* @__PURE__ */ forwardRef28(function Textarea2({
2549
+ import { jsx as jsx36, jsxs as jsxs28 } from "react/jsx-runtime";
2550
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect2 : useEffect4;
2551
+ var Textarea = /* @__PURE__ */ forwardRef33(function Textarea2({
1886
2552
  label: label6,
1887
2553
  helperText: helperText3,
1888
2554
  error,
@@ -1903,11 +2569,11 @@ var Textarea = /* @__PURE__ */ forwardRef28(function Textarea2({
1903
2569
  "aria-describedby": ariaDescribedBy,
1904
2570
  ...rest
1905
2571
  }, ref) {
1906
- const generatedId = useId10();
2572
+ const generatedId = useId12();
1907
2573
  const textareaId = id ?? generatedId;
1908
2574
  const helperId = helperText3 ? `${textareaId}-helper` : void 0;
1909
- const innerRef = useRef3(null);
1910
- const [uncontrolledLength, setUncontrolledLength] = useState4(() => String(defaultValue ?? "").length);
2575
+ const innerRef = useRef9(null);
2576
+ const [uncontrolledLength, setUncontrolledLength] = useState8(() => String(defaultValue ?? "").length);
1911
2577
  const length = value4 !== void 0 ? String(value4).length : uncontrolledLength;
1912
2578
  const fitHeight = useCallback(() => {
1913
2579
  const el = innerRef.current;
@@ -1922,12 +2588,12 @@ var Textarea = /* @__PURE__ */ forwardRef28(function Textarea2({
1922
2588
  fitHeight();
1923
2589
  onChange?.(event);
1924
2590
  };
1925
- return /* @__PURE__ */ jsxs25("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1926
- label6 && /* @__PURE__ */ jsxs25("label", { htmlFor: textareaId, className: label, children: [
2591
+ return /* @__PURE__ */ jsxs28("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2592
+ label6 && /* @__PURE__ */ jsxs28("label", { htmlFor: textareaId, className: label, children: [
1927
2593
  label6,
1928
- required && /* @__PURE__ */ jsx31("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2594
+ required && /* @__PURE__ */ jsx36("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1929
2595
  ] }),
1930
- /* @__PURE__ */ jsx31(
2596
+ /* @__PURE__ */ jsx36(
1931
2597
  "textarea",
1932
2598
  {
1933
2599
  ref: mergeRefs(innerRef, ref),
@@ -1949,16 +2615,16 @@ var Textarea = /* @__PURE__ */ forwardRef28(function Textarea2({
1949
2615
  ...rest
1950
2616
  }
1951
2617
  ),
1952
- (helperText3 || showCount) && /* @__PURE__ */ jsxs25("div", { className: footer5, children: [
1953
- helperText3 && /* @__PURE__ */ jsx31("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
1954
- showCount && /* @__PURE__ */ jsx31("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
2618
+ (helperText3 || showCount) && /* @__PURE__ */ jsxs28("div", { className: footer5, children: [
2619
+ helperText3 && /* @__PURE__ */ jsx36("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2620
+ showCount && /* @__PURE__ */ jsx36("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
1955
2621
  ] })
1956
2622
  ] });
1957
2623
  });
1958
2624
 
1959
2625
  // src/components/Toast/Toast.tsx
1960
2626
  import * as RadixToast from "@radix-ui/react-toast";
1961
- import { createContext as createContext4, useCallback as useCallback2, useContext as useContext4, useMemo as useMemo3, useRef as useRef4, useState as useState5 } from "react";
2627
+ import { createContext as createContext4, useCallback as useCallback2, useContext as useContext4, useMemo as useMemo3, useRef as useRef10, useState as useState9 } from "react";
1962
2628
  import { XIcon as XIcon5 } from "@bestow-ui/icons";
1963
2629
 
1964
2630
  // src/components/Toast/Toast.css.ts
@@ -1971,12 +2637,12 @@ var toast = /* @__PURE__ */ _7a46824({ defaultClassName: "_1g11zvx1", variantCla
1971
2637
  var viewport2 = "_1g11zvx0";
1972
2638
 
1973
2639
  // src/components/Toast/Toast.tsx
1974
- import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2640
+ import { jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
1975
2641
  var REMOVE_DELAY = 500;
1976
2642
  var ToastContext = /* @__PURE__ */ createContext4(null);
1977
2643
  function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC" }) {
1978
- const [toasts, setToasts] = useState5([]);
1979
- const nextId = useRef4(0);
2644
+ const [toasts, setToasts] = useState9([]);
2645
+ const nextId = useRef10(0);
1980
2646
  const portal2 = usePortalProps();
1981
2647
  const toast2 = useCallback2((options) => {
1982
2648
  const id = nextId.current++;
@@ -1989,9 +2655,9 @@ function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC
1989
2655
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
1990
2656
  }, []);
1991
2657
  const value4 = useMemo3(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
1992
- return /* @__PURE__ */ jsx32(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ jsxs26(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
2658
+ return /* @__PURE__ */ jsx37(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ jsxs29(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
1993
2659
  children,
1994
- toasts.map(({ id, open, title: title6, description: description6, variant, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs26(
2660
+ toasts.map(({ id, open, title: title6, description: description6, variant, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs29(
1995
2661
  RadixToast.Root,
1996
2662
  {
1997
2663
  open,
@@ -2001,15 +2667,15 @@ function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC
2001
2667
  },
2002
2668
  className: toast({ variant }),
2003
2669
  children: [
2004
- /* @__PURE__ */ jsx32(RadixToast.Title, { className: title5, children: title6 }),
2005
- description6 && /* @__PURE__ */ jsx32(RadixToast.Description, { className: description5, children: description6 }),
2006
- action3 && /* @__PURE__ */ jsx32(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx32(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
2007
- /* @__PURE__ */ jsx32(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx32(XIcon5, { size: 16 }) })
2670
+ /* @__PURE__ */ jsx37(RadixToast.Title, { className: title5, children: title6 }),
2671
+ description6 && /* @__PURE__ */ jsx37(RadixToast.Description, { className: description5, children: description6 }),
2672
+ action3 && /* @__PURE__ */ jsx37(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx37(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
2673
+ /* @__PURE__ */ jsx37(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx37(XIcon5, { size: 16 }) })
2008
2674
  ]
2009
2675
  },
2010
2676
  id
2011
2677
  )),
2012
- /* @__PURE__ */ jsx32(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
2678
+ /* @__PURE__ */ jsx37(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
2013
2679
  ] }) });
2014
2680
  }
2015
2681
  function useToast() {
@@ -2023,12 +2689,12 @@ import * as RadixTooltip from "@radix-ui/react-tooltip";
2023
2689
 
2024
2690
  // src/components/Tooltip/Tooltip.css.ts
2025
2691
  var arrow2 = "z7rufs1";
2026
- var content10 = "z7rufs0";
2692
+ var content11 = "z7rufs0";
2027
2693
 
2028
2694
  // src/components/Tooltip/Tooltip.tsx
2029
- import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
2695
+ import { jsx as jsx38, jsxs as jsxs30 } from "react/jsx-runtime";
2030
2696
  function Tooltip({
2031
- content: content11,
2697
+ content: content12,
2032
2698
  children,
2033
2699
  side = "top",
2034
2700
  align = "center",
@@ -2040,21 +2706,21 @@ function Tooltip({
2040
2706
  className
2041
2707
  }) {
2042
2708
  const portal2 = usePortalProps();
2043
- if (disabled || content11 == null || content11 === "") return children;
2044
- return /* @__PURE__ */ jsx33(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs27(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
2045
- /* @__PURE__ */ jsx33(RadixTooltip.Trigger, { asChild: true, children }),
2046
- /* @__PURE__ */ jsx33(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs27(
2709
+ if (disabled || content12 == null || content12 === "") return children;
2710
+ return /* @__PURE__ */ jsx38(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs30(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
2711
+ /* @__PURE__ */ jsx38(RadixTooltip.Trigger, { asChild: true, children }),
2712
+ /* @__PURE__ */ jsx38(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs30(
2047
2713
  RadixTooltip.Content,
2048
2714
  {
2049
2715
  side,
2050
2716
  align,
2051
2717
  sideOffset: 6,
2052
2718
  collisionPadding: 8,
2053
- className: cx(portal2.className, content10, className),
2719
+ className: cx(portal2.className, content11, className),
2054
2720
  style: portal2.style,
2055
2721
  children: [
2056
- content11,
2057
- /* @__PURE__ */ jsx33(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
2722
+ content12,
2723
+ /* @__PURE__ */ jsx38(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
2058
2724
  ]
2059
2725
  }
2060
2726
  ) })
@@ -2062,14 +2728,14 @@ function Tooltip({
2062
2728
  }
2063
2729
 
2064
2730
  // src/components/Typography/Typography.tsx
2065
- import { forwardRef as forwardRef29 } from "react";
2731
+ import { forwardRef as forwardRef34 } from "react";
2066
2732
 
2067
2733
  // src/components/Typography/Typography.css.ts
2068
2734
  import { createRuntimeFn as _7a46825 } from "@vanilla-extract/recipes/createRuntimeFn";
2069
2735
  var typography = /* @__PURE__ */ _7a46825({ 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: [] });
2070
2736
 
2071
2737
  // src/components/Typography/Typography.tsx
2072
- import { jsx as jsx34 } from "react/jsx-runtime";
2738
+ import { jsx as jsx39 } from "react/jsx-runtime";
2073
2739
  var defaultElement = {
2074
2740
  display: "h1",
2075
2741
  h1: "h1",
@@ -2081,9 +2747,9 @@ var defaultElement = {
2081
2747
  "body-sm": "p",
2082
2748
  caption: "span"
2083
2749
  };
2084
- var Typography = /* @__PURE__ */ forwardRef29(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
2750
+ var Typography = /* @__PURE__ */ forwardRef34(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
2085
2751
  const Component = as ?? defaultElement[variant];
2086
- return /* @__PURE__ */ jsx34(
2752
+ return /* @__PURE__ */ jsx39(
2087
2753
  Component,
2088
2754
  {
2089
2755
  ref,
@@ -2092,13 +2758,157 @@ var Typography = /* @__PURE__ */ forwardRef29(function Typography2({ variant = "
2092
2758
  }
2093
2759
  );
2094
2760
  });
2761
+
2762
+ // src/components/VerificationCodeInput/VerificationCodeInput.tsx
2763
+ import { forwardRef as forwardRef35, useEffect as useEffect5, useId as useId13, useRef as useRef11, useState as useState10 } from "react";
2764
+
2765
+ // src/components/VerificationCodeInput/VerificationCodeInput.css.ts
2766
+ var input4 = "ea01812";
2767
+ var row4 = "ea01810";
2768
+ var slot = "ea01813";
2769
+ var slots = "ea01811";
2770
+ var timer = "ea01814";
2771
+
2772
+ // src/components/VerificationCodeInput/VerificationCodeInput.tsx
2773
+ import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
2774
+ var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
2775
+ var VerificationCodeInput = /* @__PURE__ */ forwardRef35(
2776
+ function VerificationCodeInput2(props, ref) {
2777
+ const {
2778
+ length = 6,
2779
+ value: value4,
2780
+ defaultValue,
2781
+ onValueChange,
2782
+ onComplete,
2783
+ type = "numeric",
2784
+ label: label6 = "\uC778\uC99D\uBC88\uD638",
2785
+ helperText: helperText3,
2786
+ error,
2787
+ disabled,
2788
+ autoFocus,
2789
+ expiresIn,
2790
+ onExpire,
2791
+ onResend,
2792
+ resendText = "\uC7AC\uC804\uC1A1",
2793
+ expiredText = "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.",
2794
+ name,
2795
+ id,
2796
+ className
2797
+ } = props;
2798
+ const generatedId = useId13();
2799
+ const inputId = id ?? generatedId;
2800
+ const helperId = `${inputId}-helper`;
2801
+ const statusId = `${inputId}-status`;
2802
+ const inputRef = useRef11(null);
2803
+ const isControlled = "value" in props;
2804
+ const [innerValue, setInnerValue] = useState10(defaultValue ?? "");
2805
+ const code = (isControlled ? value4 ?? "" : innerValue).slice(0, length);
2806
+ const [focused, setFocused] = useState10(false);
2807
+ const [endAt, setEndAt] = useState10(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
2808
+ const [remaining, setRemaining] = useState10(expiresIn ?? 0);
2809
+ const expired = expiresIn !== void 0 && remaining <= 0;
2810
+ const onExpireRef = useRef11(onExpire);
2811
+ useEffect5(() => {
2812
+ onExpireRef.current = onExpire;
2813
+ });
2814
+ useEffect5(() => {
2815
+ if (endAt === null) return;
2816
+ const tick = () => {
2817
+ const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
2818
+ setRemaining(left);
2819
+ if (left === 0) {
2820
+ clearInterval(timer2);
2821
+ onExpireRef.current?.();
2822
+ }
2823
+ };
2824
+ const timer2 = setInterval(tick, 250);
2825
+ tick();
2826
+ return () => clearInterval(timer2);
2827
+ }, [endAt]);
2828
+ const setCode = (next) => {
2829
+ if (!isControlled) setInnerValue(next);
2830
+ onValueChange?.(next);
2831
+ if (next.length === length && code.length !== length) onComplete?.(next);
2832
+ };
2833
+ const handleChange = (event) => {
2834
+ const raw = event.target.value;
2835
+ const cleaned = (type === "numeric" ? raw.replace(/\D/g, "") : raw.replace(/[^0-9a-z]/gi, "").toUpperCase()).slice(0, length);
2836
+ setCode(cleaned);
2837
+ };
2838
+ const resend = () => {
2839
+ onResend?.();
2840
+ setCode("");
2841
+ if (expiresIn) {
2842
+ setEndAt(Date.now() + expiresIn * 1e3);
2843
+ setRemaining(expiresIn);
2844
+ }
2845
+ inputRef.current?.focus();
2846
+ };
2847
+ const description6 = helperText3 ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
2848
+ const activeIndex = Math.min(code.length, length - 1);
2849
+ return /* @__PURE__ */ jsxs31(
2850
+ "div",
2851
+ {
2852
+ className: cx(field, className),
2853
+ "data-invalid": error || void 0,
2854
+ "data-disabled": disabled || void 0,
2855
+ children: [
2856
+ /* @__PURE__ */ jsx40("label", { htmlFor: inputId, className: label, children: label6 }),
2857
+ /* @__PURE__ */ jsxs31("div", { className: row4, children: [
2858
+ /* @__PURE__ */ jsxs31("div", { className: slots, children: [
2859
+ /* @__PURE__ */ jsx40(
2860
+ "input",
2861
+ {
2862
+ ref: mergeRefs(ref, inputRef),
2863
+ id: inputId,
2864
+ type: "text",
2865
+ inputMode: type === "numeric" ? "numeric" : "text",
2866
+ autoComplete: "one-time-code",
2867
+ pattern: type === "numeric" ? "[0-9]*" : void 0,
2868
+ value: code,
2869
+ onChange: handleChange,
2870
+ onFocus: () => setFocused(true),
2871
+ onBlur: () => setFocused(false),
2872
+ disabled,
2873
+ autoFocus,
2874
+ "aria-invalid": error || void 0,
2875
+ "aria-describedby": `${helperId} ${statusId}`,
2876
+ className: input4
2877
+ }
2878
+ ),
2879
+ Array.from({ length }, (_, index) => /* @__PURE__ */ jsx40(
2880
+ "div",
2881
+ {
2882
+ className: slot,
2883
+ "data-active": focused && index === activeIndex ? "" : void 0,
2884
+ "aria-hidden": true,
2885
+ children: code[index] ?? ""
2886
+ },
2887
+ index
2888
+ ))
2889
+ ] }),
2890
+ expiresIn !== void 0 && /* @__PURE__ */ jsx40("span", { role: "timer", className: timer, children: formatTime(remaining) }),
2891
+ onResend && /* @__PURE__ */ jsx40(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
2892
+ ] }),
2893
+ /* @__PURE__ */ jsx40("p", { id: helperId, className: helperText({ error }), children: description6 }),
2894
+ /* @__PURE__ */ jsx40("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
2895
+ name && /* @__PURE__ */ jsx40("input", { type: "hidden", name, value: code })
2896
+ ]
2897
+ }
2898
+ );
2899
+ }
2900
+ );
2095
2901
  export {
2096
2902
  Accordion,
2097
2903
  AccordionItem,
2904
+ AddressInput,
2905
+ AgreementGroup,
2098
2906
  Alert,
2907
+ AmountInput,
2099
2908
  Avatar,
2100
2909
  Badge,
2101
2910
  Breadcrumb,
2911
+ BusinessNumberInput,
2102
2912
  Button,
2103
2913
  Card,
2104
2914
  CardBody,
@@ -2122,6 +2932,7 @@ export {
2122
2932
  Modal,
2123
2933
  ModalClose,
2124
2934
  Pagination,
2935
+ PhoneNumberInput,
2125
2936
  Popover2 as Popover,
2126
2937
  PopoverClose,
2127
2938
  Progress,
@@ -2149,9 +2960,17 @@ export {
2149
2960
  ToastProvider,
2150
2961
  Tooltip,
2151
2962
  Typography,
2963
+ VerificationCodeInput,
2964
+ composeExtraAddress,
2152
2965
  contrastRatio,
2153
2966
  createIntentColors,
2154
2967
  createTheme,
2968
+ formatBusinessNumber,
2969
+ formatKoreanAmount,
2970
+ formatPhoneNumber,
2971
+ hasAllRequiredAgreements,
2972
+ isValidBusinessNumber,
2973
+ kakaoPostcodeProvider,
2155
2974
  themeClass,
2156
2975
  usePortalClassName,
2157
2976
  usePortalProps,