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