@bestow-ui/react 1.0.0 → 1.2.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 +5 -3
- package/dist/{chunk-PFEZ3D2H.js → chunk-LHT64JDG.js} +7 -1
- package/dist/chunk-LHT64JDG.js.map +1 -0
- package/dist/client.js +868 -695
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +1254 -834
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +809 -601
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +340 -111
- package/dist/index.d.ts +340 -111
- package/dist/shared.js +238 -3
- package/dist/shared.js.map +1 -1
- package/package.json +1 -2
- package/dist/chunk-PFEZ3D2H.js.map +0 -1
package/dist/client.js
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
addDays,
|
|
5
5
|
addMonths,
|
|
6
6
|
compareDays,
|
|
7
|
+
cx,
|
|
7
8
|
formatBusinessNumber,
|
|
8
9
|
formatKoreanAmount,
|
|
9
10
|
formatPhoneNumber,
|
|
@@ -18,16 +19,11 @@ import {
|
|
|
18
19
|
themeClass,
|
|
19
20
|
themeToStyle,
|
|
20
21
|
toISODate
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-LHT64JDG.js";
|
|
22
23
|
|
|
23
24
|
// src/theme/ThemeProvider.tsx
|
|
24
25
|
import { createContext, forwardRef, useContext, useMemo } from "react";
|
|
25
26
|
|
|
26
|
-
// src/utils/cx.ts
|
|
27
|
-
function cx(...classNames) {
|
|
28
|
-
return classNames.filter(Boolean).join(" ");
|
|
29
|
-
}
|
|
30
|
-
|
|
31
27
|
// src/theme/ThemeProvider.css.ts
|
|
32
28
|
var portal = "sfyhlv0";
|
|
33
29
|
var root = "sfyhlv1 sfyhlv0";
|
|
@@ -39,17 +35,17 @@ var ThemeProvider = /* @__PURE__ */ forwardRef(function ThemeProvider2({ theme:
|
|
|
39
35
|
const parent = useContext(ThemeContext);
|
|
40
36
|
const theme = themeProp ?? parent.theme;
|
|
41
37
|
const merged = useMemo(() => mergeThemes(parent.overrides, overrides), [parent.overrides, overrides]);
|
|
42
|
-
const
|
|
38
|
+
const value3 = useMemo(
|
|
43
39
|
() => ({ theme, overrides: merged, style: themeToStyle(merged, theme) }),
|
|
44
40
|
[theme, merged]
|
|
45
41
|
);
|
|
46
|
-
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value:
|
|
42
|
+
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: value3, children: /* @__PURE__ */ jsx(
|
|
47
43
|
"div",
|
|
48
44
|
{
|
|
49
45
|
ref,
|
|
50
46
|
"data-theme": theme,
|
|
51
47
|
className: cx(themeClass[theme], root, className),
|
|
52
|
-
style:
|
|
48
|
+
style: value3.style ? { ...value3.style, ...style } : style,
|
|
53
49
|
...rest,
|
|
54
50
|
children
|
|
55
51
|
}
|
|
@@ -69,8 +65,8 @@ import { jsx as jsx2 } from "react/jsx-runtime";
|
|
|
69
65
|
var MessagesContext = /* @__PURE__ */ createContext2({});
|
|
70
66
|
function LocaleProvider({ messages, children }) {
|
|
71
67
|
const parent = useContext2(MessagesContext);
|
|
72
|
-
const
|
|
73
|
-
return /* @__PURE__ */ jsx2(MessagesContext.Provider, { value:
|
|
68
|
+
const value3 = useMemo2(() => ({ ...parent, ...messages }), [parent, messages]);
|
|
69
|
+
return /* @__PURE__ */ jsx2(MessagesContext.Provider, { value: value3, children });
|
|
74
70
|
}
|
|
75
71
|
function useMessages() {
|
|
76
72
|
return useContext2(MessagesContext);
|
|
@@ -130,11 +126,11 @@ var spinner = /* @__PURE__ */ _7a468({ defaultClassName: "_4b5tg40", variantClas
|
|
|
130
126
|
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
131
127
|
var Spinner = /* @__PURE__ */ forwardRef3(function Spinner2({ size, color, label: labelProp, className, ...rest }, ref) {
|
|
132
128
|
const m = useMessages();
|
|
133
|
-
const
|
|
134
|
-
const a11y =
|
|
129
|
+
const label5 = labelProp ?? m.loading ?? "\uB85C\uB529 \uC911";
|
|
130
|
+
const a11y = label5 ? { role: "status" } : { "aria-hidden": true };
|
|
135
131
|
return /* @__PURE__ */ jsxs2("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
|
|
136
132
|
/* @__PURE__ */ jsx4(LoaderIcon, { size: "100%" }),
|
|
137
|
-
|
|
133
|
+
label5 && /* @__PURE__ */ jsx4("span", { className: visuallyHidden, children: label5 })
|
|
138
134
|
] });
|
|
139
135
|
});
|
|
140
136
|
|
|
@@ -228,13 +224,13 @@ var Input = /* @__PURE__ */ forwardRef5(function Input2({ size, invalid, fullWid
|
|
|
228
224
|
// src/components/Input/TextField.tsx
|
|
229
225
|
import { forwardRef as forwardRef6, useId } from "react";
|
|
230
226
|
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
231
|
-
var TextField = /* @__PURE__ */ forwardRef6(function TextField2({ label:
|
|
227
|
+
var TextField = /* @__PURE__ */ forwardRef6(function TextField2({ label: label5, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
|
|
232
228
|
const generatedId = useId();
|
|
233
229
|
const inputId = id ?? generatedId;
|
|
234
230
|
const helperId = helperText3 ? `${inputId}-helper` : void 0;
|
|
235
231
|
return /* @__PURE__ */ jsxs5("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
236
|
-
|
|
237
|
-
|
|
232
|
+
label5 && /* @__PURE__ */ jsxs5("label", { htmlFor: inputId, className: label, children: [
|
|
233
|
+
label5,
|
|
238
234
|
required && /* @__PURE__ */ jsx7("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
239
235
|
] }),
|
|
240
236
|
/* @__PURE__ */ jsx7(
|
|
@@ -299,7 +295,7 @@ function Modal({
|
|
|
299
295
|
title: title6,
|
|
300
296
|
description: description6,
|
|
301
297
|
children,
|
|
302
|
-
footer:
|
|
298
|
+
footer: footer5,
|
|
303
299
|
size,
|
|
304
300
|
hideCloseButton = false,
|
|
305
301
|
closeOnOverlayClick = true,
|
|
@@ -331,7 +327,7 @@ function Modal({
|
|
|
331
327
|
!hideCloseButton && /* @__PURE__ */ jsx8(Dialog.Close, { className: closeButton, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx8(XIcon, { size: 16 }) })
|
|
332
328
|
] }),
|
|
333
329
|
children && /* @__PURE__ */ jsx8("div", { className: body, children }),
|
|
334
|
-
|
|
330
|
+
footer5 && /* @__PURE__ */ jsx8("div", { className: footer, children: footer5 })
|
|
335
331
|
]
|
|
336
332
|
}
|
|
337
333
|
)
|
|
@@ -388,7 +384,7 @@ function SearchArea({
|
|
|
388
384
|
var AddressInput = /* @__PURE__ */ forwardRef7(
|
|
389
385
|
function AddressInput2(props, ref) {
|
|
390
386
|
const {
|
|
391
|
-
value:
|
|
387
|
+
value: value3,
|
|
392
388
|
defaultValue,
|
|
393
389
|
onValueChange,
|
|
394
390
|
label: labelProp,
|
|
@@ -404,7 +400,7 @@ var AddressInput = /* @__PURE__ */ forwardRef7(
|
|
|
404
400
|
className
|
|
405
401
|
} = props;
|
|
406
402
|
const m = useMessages();
|
|
407
|
-
const
|
|
403
|
+
const label5 = labelProp ?? m.address ?? "\uC8FC\uC18C";
|
|
408
404
|
const searchLabel = searchLabelProp ?? m.addressSearch ?? "\uC8FC\uC18C \uAC80\uC0C9";
|
|
409
405
|
const detailPlaceholder = detailPlaceholderProp ?? m.detailAddressPlaceholder ?? "\uC0C1\uC138 \uC8FC\uC18C (\uB3D9\xB7\uD638\uC218 \uB4F1)";
|
|
410
406
|
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.";
|
|
@@ -415,7 +411,7 @@ var AddressInput = /* @__PURE__ */ forwardRef7(
|
|
|
415
411
|
const [open, setOpen] = useState(false);
|
|
416
412
|
const isControlled = "value" in props;
|
|
417
413
|
const [innerValue, setInnerValue] = useState(defaultValue ?? EMPTY);
|
|
418
|
-
const current2 = isControlled ?
|
|
414
|
+
const current2 = isControlled ? value3 ?? EMPTY : innerValue;
|
|
419
415
|
const update = (next) => {
|
|
420
416
|
if (!isControlled) setInnerValue(next);
|
|
421
417
|
onValueChange?.(next);
|
|
@@ -438,7 +434,7 @@ var AddressInput = /* @__PURE__ */ forwardRef7(
|
|
|
438
434
|
const fullAddress = `${current2.address}${current2.extraAddress ?? ""}`;
|
|
439
435
|
return /* @__PURE__ */ jsxs7("fieldset", { ref, className: cx(fieldset, className), disabled, "aria-describedby": helperId, children: [
|
|
440
436
|
/* @__PURE__ */ jsxs7("legend", { className: legend, children: [
|
|
441
|
-
|
|
437
|
+
label5,
|
|
442
438
|
required && /* @__PURE__ */ jsx9("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
443
439
|
] }),
|
|
444
440
|
/* @__PURE__ */ jsxs7("div", { className: row, children: [
|
|
@@ -525,10 +521,10 @@ import { forwardRef as forwardRef8, useEffect as useEffect2, useRef as useRef3 }
|
|
|
525
521
|
|
|
526
522
|
// src/utils/mergeRefs.ts
|
|
527
523
|
function mergeRefs(...refs) {
|
|
528
|
-
return (
|
|
524
|
+
return (value3) => {
|
|
529
525
|
for (const ref of refs) {
|
|
530
|
-
if (typeof ref === "function") ref(
|
|
531
|
-
else if (ref) ref.current =
|
|
526
|
+
if (typeof ref === "function") ref(value3);
|
|
527
|
+
else if (ref) ref.current = value3;
|
|
532
528
|
}
|
|
533
529
|
};
|
|
534
530
|
}
|
|
@@ -543,7 +539,7 @@ var root4 = /* @__PURE__ */ _7a4685({ defaultClassName: "_1y7mzsn0", variantClas
|
|
|
543
539
|
|
|
544
540
|
// src/components/Checkbox/Checkbox.tsx
|
|
545
541
|
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
546
|
-
var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label:
|
|
542
|
+
var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label5, size, indeterminate = false, invalid, disabled, onChange, onCheckedChange, className, ...rest }, ref) {
|
|
547
543
|
const innerRef = useRef3(null);
|
|
548
544
|
useEffect2(() => {
|
|
549
545
|
if (innerRef.current) innerRef.current.indeterminate = indeterminate;
|
|
@@ -577,7 +573,7 @@ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label6, s
|
|
|
577
573
|
) }),
|
|
578
574
|
/* @__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" }) })
|
|
579
575
|
] }),
|
|
580
|
-
|
|
576
|
+
label5
|
|
581
577
|
] });
|
|
582
578
|
});
|
|
583
579
|
|
|
@@ -600,10 +596,10 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
600
596
|
function AgreementGroup2(props, ref) {
|
|
601
597
|
const {
|
|
602
598
|
items: items2,
|
|
603
|
-
value:
|
|
599
|
+
value: value3,
|
|
604
600
|
defaultValue,
|
|
605
601
|
onValueChange,
|
|
606
|
-
label:
|
|
602
|
+
label: label5,
|
|
607
603
|
allLabel: allLabelProp,
|
|
608
604
|
helperText: helperText3,
|
|
609
605
|
error,
|
|
@@ -625,13 +621,13 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
625
621
|
const helperId = helperText3 ? `${baseId}-helper` : void 0;
|
|
626
622
|
const isControlled = "value" in props;
|
|
627
623
|
const [innerValue, setInnerValue] = useState2(defaultValue ?? []);
|
|
628
|
-
const agreed = isControlled ?
|
|
624
|
+
const agreed = isControlled ? value3 ?? [] : innerValue;
|
|
629
625
|
const [expanded, setExpanded] = useState2([]);
|
|
630
626
|
const update = (next) => {
|
|
631
627
|
if (!isControlled) setInnerValue(next);
|
|
632
628
|
onValueChange?.(next);
|
|
633
629
|
};
|
|
634
|
-
const allValues = items2.map((
|
|
630
|
+
const allValues = items2.map((item8) => item8.value);
|
|
635
631
|
const agreedCount = allValues.filter((v) => agreed.includes(v)).length;
|
|
636
632
|
const allChecked = items2.length > 0 && agreedCount === items2.length;
|
|
637
633
|
const toggleItem = (itemValue, checked) => update(checked ? [...agreed.filter((v) => v !== itemValue), itemValue] : agreed.filter((v) => v !== itemValue));
|
|
@@ -644,7 +640,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
644
640
|
"aria-describedby": helperId,
|
|
645
641
|
"data-invalid": error || void 0,
|
|
646
642
|
children: [
|
|
647
|
-
|
|
643
|
+
label5 && /* @__PURE__ */ jsx11("legend", { className: legend2, children: label5 }),
|
|
648
644
|
/* @__PURE__ */ jsxs9("div", { className: box, children: [
|
|
649
645
|
/* @__PURE__ */ jsx11("div", { className: all, children: /* @__PURE__ */ jsx11(
|
|
650
646
|
Checkbox,
|
|
@@ -655,28 +651,28 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
655
651
|
onChange: (event) => update(event.target.checked ? allValues : [])
|
|
656
652
|
}
|
|
657
653
|
) }),
|
|
658
|
-
/* @__PURE__ */ jsx11("ul", { className: list, children: items2.map((
|
|
659
|
-
const labelId = `${baseId}-${
|
|
660
|
-
const toggleTextId = `${baseId}-${
|
|
661
|
-
const contentId = `${baseId}-${
|
|
662
|
-
const isOpen = expanded.includes(
|
|
654
|
+
/* @__PURE__ */ jsx11("ul", { className: list, children: items2.map((item8) => {
|
|
655
|
+
const labelId = `${baseId}-${item8.value}-label`;
|
|
656
|
+
const toggleTextId = `${baseId}-${item8.value}-toggle`;
|
|
657
|
+
const contentId = `${baseId}-${item8.value}-content`;
|
|
658
|
+
const isOpen = expanded.includes(item8.value);
|
|
663
659
|
return /* @__PURE__ */ jsxs9("li", { className: item2, children: [
|
|
664
660
|
/* @__PURE__ */ jsxs9("div", { className: row2, children: [
|
|
665
661
|
/* @__PURE__ */ jsx11(
|
|
666
662
|
Checkbox,
|
|
667
663
|
{
|
|
668
664
|
size: "sm",
|
|
669
|
-
checked: agreed.includes(
|
|
670
|
-
invalid: error &&
|
|
671
|
-
onChange: (event) => toggleItem(
|
|
665
|
+
checked: agreed.includes(item8.value),
|
|
666
|
+
invalid: error && item8.required && !agreed.includes(item8.value),
|
|
667
|
+
onChange: (event) => toggleItem(item8.value, event.target.checked),
|
|
672
668
|
label: /* @__PURE__ */ jsxs9("span", { id: labelId, children: [
|
|
673
|
-
/* @__PURE__ */ jsx11("span", { className: tag, "data-required":
|
|
669
|
+
/* @__PURE__ */ jsx11("span", { className: tag, "data-required": item8.required || void 0, children: item8.required ? requiredText : optionalText }),
|
|
674
670
|
" ",
|
|
675
|
-
|
|
671
|
+
item8.label
|
|
676
672
|
] })
|
|
677
673
|
}
|
|
678
674
|
),
|
|
679
|
-
|
|
675
|
+
item8.content && /* @__PURE__ */ jsxs9(
|
|
680
676
|
"button",
|
|
681
677
|
{
|
|
682
678
|
type: "button",
|
|
@@ -684,7 +680,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
684
680
|
"aria-expanded": isOpen,
|
|
685
681
|
"aria-controls": contentId,
|
|
686
682
|
"aria-labelledby": `${labelId} ${toggleTextId}`,
|
|
687
|
-
onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !==
|
|
683
|
+
onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item8.value) : [...prev, item8.value]),
|
|
688
684
|
children: [
|
|
689
685
|
/* @__PURE__ */ jsx11("span", { id: toggleTextId, children: isOpen ? hideText : showText }),
|
|
690
686
|
/* @__PURE__ */ jsx11(ChevronDownIcon2, { size: 14, className: chevron2 })
|
|
@@ -692,10 +688,10 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
|
|
|
692
688
|
}
|
|
693
689
|
)
|
|
694
690
|
] }),
|
|
695
|
-
|
|
691
|
+
item8.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
|
|
696
692
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
697
|
-
/* @__PURE__ */ jsx11("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children:
|
|
698
|
-
] },
|
|
693
|
+
/* @__PURE__ */ jsx11("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item8.content })
|
|
694
|
+
] }, item8.value);
|
|
699
695
|
}) })
|
|
700
696
|
] }),
|
|
701
697
|
name && agreed.map((v) => /* @__PURE__ */ jsx11("input", { type: "hidden", name, value: v }, v)),
|
|
@@ -767,34 +763,34 @@ import { useEffect as useEffect3, useLayoutEffect } from "react";
|
|
|
767
763
|
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect3;
|
|
768
764
|
|
|
769
765
|
// src/utils/useFormattedInput.ts
|
|
770
|
-
function caretAfter(display, count2,
|
|
766
|
+
function caretAfter(display, count2, isMeaningful2) {
|
|
771
767
|
if (count2 <= 0) return 0;
|
|
772
768
|
let seen = 0;
|
|
773
769
|
for (let i = 0; i < display.length; i++) {
|
|
774
|
-
if (
|
|
770
|
+
if (isMeaningful2(display[i])) seen++;
|
|
775
771
|
if (seen === count2) return i + 1;
|
|
776
772
|
}
|
|
777
773
|
return display.length;
|
|
778
774
|
}
|
|
779
775
|
function useFormattedInput({
|
|
780
776
|
isControlled,
|
|
781
|
-
value:
|
|
777
|
+
value: value3,
|
|
782
778
|
defaultValue,
|
|
783
779
|
onValueChange,
|
|
784
780
|
sanitize: sanitize4,
|
|
785
781
|
format: format2,
|
|
786
|
-
isMeaningful,
|
|
782
|
+
isMeaningful: isMeaningful2,
|
|
787
783
|
inputRef
|
|
788
784
|
}) {
|
|
789
785
|
const [innerValue, setInnerValue] = useState3(() => sanitize4(defaultValue ?? ""));
|
|
790
|
-
const raw = isControlled ? sanitize4(
|
|
786
|
+
const raw = isControlled ? sanitize4(value3 ?? "") : innerValue;
|
|
791
787
|
const display = format2(raw);
|
|
792
788
|
const pendingCaret = useRef4(null);
|
|
793
789
|
useIsomorphicLayoutEffect(() => {
|
|
794
|
-
const
|
|
795
|
-
if (pendingCaret.current === null || !
|
|
796
|
-
const position = caretAfter(
|
|
797
|
-
|
|
790
|
+
const input6 = inputRef.current;
|
|
791
|
+
if (pendingCaret.current === null || !input6 || document.activeElement !== input6) return;
|
|
792
|
+
const position = caretAfter(input6.value, pendingCaret.current, isMeaningful2);
|
|
793
|
+
input6.setSelectionRange(position, position);
|
|
798
794
|
pendingCaret.current = null;
|
|
799
795
|
});
|
|
800
796
|
const commit = (next, caretCount) => {
|
|
@@ -809,17 +805,17 @@ function useFormattedInput({
|
|
|
809
805
|
commit(next, Math.min(before.length, next.length));
|
|
810
806
|
};
|
|
811
807
|
const onKeyDown = (event) => {
|
|
812
|
-
const
|
|
813
|
-
const { selectionStart: start, selectionEnd:
|
|
814
|
-
if (start === null || start !==
|
|
815
|
-
const countBefore = (text2) => [...text2].filter(
|
|
816
|
-
if (event.key === "Backspace" && start > 0 && !
|
|
817
|
-
const index = countBefore(
|
|
808
|
+
const input6 = event.currentTarget;
|
|
809
|
+
const { selectionStart: start, selectionEnd: end2 } = input6;
|
|
810
|
+
if (start === null || start !== end2) return;
|
|
811
|
+
const countBefore = (text2) => [...text2].filter(isMeaningful2).length;
|
|
812
|
+
if (event.key === "Backspace" && start > 0 && !isMeaningful2(input6.value[start - 1])) {
|
|
813
|
+
const index = countBefore(input6.value.slice(0, start)) - 1;
|
|
818
814
|
if (index < 0) return;
|
|
819
815
|
event.preventDefault();
|
|
820
816
|
commit(raw.slice(0, index) + raw.slice(index + 1), index);
|
|
821
|
-
} else if (event.key === "Delete" && start <
|
|
822
|
-
const index = countBefore(
|
|
817
|
+
} else if (event.key === "Delete" && start < input6.value.length && !isMeaningful2(input6.value[start])) {
|
|
818
|
+
const index = countBefore(input6.value.slice(0, start));
|
|
823
819
|
if (index >= raw.length) return;
|
|
824
820
|
event.preventDefault();
|
|
825
821
|
commit(raw.slice(0, index) + raw.slice(index + 1), index);
|
|
@@ -839,7 +835,7 @@ var isDigit = (char) => /\d/.test(char);
|
|
|
839
835
|
var AmountInput = /* @__PURE__ */ forwardRef11(
|
|
840
836
|
function AmountInput2(props, ref) {
|
|
841
837
|
const {
|
|
842
|
-
value:
|
|
838
|
+
value: value3,
|
|
843
839
|
defaultValue,
|
|
844
840
|
onValueChange,
|
|
845
841
|
max,
|
|
@@ -854,17 +850,17 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
|
|
|
854
850
|
} = props;
|
|
855
851
|
const inputRef = useRef5(null);
|
|
856
852
|
const m = useMessages();
|
|
857
|
-
const
|
|
858
|
-
const
|
|
859
|
-
const sanitize4 = (
|
|
860
|
-
let digits =
|
|
853
|
+
const unit2 = unitProp ?? m.currencyUnit ?? "\uC6D0";
|
|
854
|
+
const label5 = labelProp ?? m.amount ?? "\uAE08\uC561";
|
|
855
|
+
const sanitize4 = (input6) => {
|
|
856
|
+
let digits = input6.replace(/\D/g, "").replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS);
|
|
861
857
|
if (max !== void 0 && digits && Number(digits) > max) digits = String(Math.floor(max));
|
|
862
858
|
return digits;
|
|
863
859
|
};
|
|
864
860
|
const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
|
|
865
861
|
const field3 = useFormattedInput({
|
|
866
862
|
isControlled: "value" in props,
|
|
867
|
-
value: toRaw(
|
|
863
|
+
value: toRaw(value3),
|
|
868
864
|
defaultValue: toRaw(defaultValue),
|
|
869
865
|
onValueChange: (digits) => onValueChange?.(digits === "" ? null : Number(digits)),
|
|
870
866
|
sanitize: sanitize4,
|
|
@@ -872,12 +868,12 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
|
|
|
872
868
|
isMeaningful: isDigit,
|
|
873
869
|
inputRef
|
|
874
870
|
});
|
|
875
|
-
const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw),
|
|
871
|
+
const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit2) : null;
|
|
876
872
|
return /* @__PURE__ */ jsx13(
|
|
877
873
|
TextField,
|
|
878
874
|
{
|
|
879
875
|
ref: mergeRefs(ref, inputRef),
|
|
880
|
-
label:
|
|
876
|
+
label: label5,
|
|
881
877
|
placeholder,
|
|
882
878
|
inputMode: "numeric",
|
|
883
879
|
value: field3.display,
|
|
@@ -886,7 +882,7 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
|
|
|
886
882
|
field3.onKeyDown(event);
|
|
887
883
|
onKeyDown?.(event);
|
|
888
884
|
},
|
|
889
|
-
endAdornment:
|
|
885
|
+
endAdornment: unit2,
|
|
890
886
|
helperText: reading && helperText3 ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
891
887
|
reading,
|
|
892
888
|
/* @__PURE__ */ jsx13("br", {}),
|
|
@@ -918,8 +914,8 @@ function getInitials(name) {
|
|
|
918
914
|
return (first(a) + first(b)).toUpperCase();
|
|
919
915
|
}
|
|
920
916
|
var Avatar = /* @__PURE__ */ forwardRef12(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
|
|
921
|
-
const
|
|
922
|
-
const a11y =
|
|
917
|
+
const label5 = alt ?? name;
|
|
918
|
+
const a11y = label5 ? { role: "img", "aria-label": label5 } : { "aria-hidden": true };
|
|
923
919
|
const initials = name ? getInitials(name) : "";
|
|
924
920
|
return /* @__PURE__ */ jsxs12(RadixAvatar.Root, { ref, className: cx(root5({ size, shape }), className), ...a11y, ...rest, children: [
|
|
925
921
|
src && /* @__PURE__ */ jsx14(RadixAvatar.Image, { src, alt: "", className: image }),
|
|
@@ -927,40 +923,23 @@ var Avatar = /* @__PURE__ */ forwardRef12(function Avatar2({ src, alt, name, fal
|
|
|
927
923
|
] });
|
|
928
924
|
});
|
|
929
925
|
|
|
930
|
-
// src/components/Badge/Badge.tsx
|
|
931
|
-
import { forwardRef as forwardRef13 } from "react";
|
|
932
|
-
|
|
933
|
-
// src/components/Badge/Badge.css.ts
|
|
934
|
-
import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
935
|
-
var badge = /* @__PURE__ */ _7a4688({ defaultClassName: "_1295cfn4", variantClassNames: { variant: { solid: "_1295cfn5", soft: "_1295cfn6", outline: "_1295cfn7" }, color: { primary: "_1295cfn8", neutral: "_1295cfn9", danger: "_1295cfna", success: "_1295cfnb", warning: "_1295cfnc" }, size: { sm: "_1295cfnd", md: "_1295cfne", lg: "_1295cfnf" } }, defaultVariants: { variant: "soft", color: "neutral", size: "md" }, compoundVariants: [] });
|
|
936
|
-
var icon3 = "_1295cfng";
|
|
937
|
-
|
|
938
|
-
// src/components/Badge/Badge.tsx
|
|
939
|
-
import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
940
|
-
var Badge = /* @__PURE__ */ forwardRef13(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
|
|
941
|
-
return /* @__PURE__ */ jsxs13("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
|
|
942
|
-
startIcon && /* @__PURE__ */ jsx15("span", { className: icon3, children: startIcon }),
|
|
943
|
-
children
|
|
944
|
-
] });
|
|
945
|
-
});
|
|
946
|
-
|
|
947
926
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
948
|
-
import { forwardRef as
|
|
927
|
+
import { forwardRef as forwardRef14 } from "react";
|
|
949
928
|
import { ChevronRightIcon } from "@bestow-ui/icons";
|
|
950
929
|
|
|
951
930
|
// src/components/Link/Link.tsx
|
|
952
931
|
import { Slot } from "@radix-ui/react-slot";
|
|
953
|
-
import { forwardRef as
|
|
932
|
+
import { forwardRef as forwardRef13 } from "react";
|
|
954
933
|
import { ExternalLinkIcon } from "@bestow-ui/icons";
|
|
955
934
|
|
|
956
935
|
// src/components/Link/Link.css.ts
|
|
957
|
-
import { createRuntimeFn as
|
|
936
|
+
import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
958
937
|
var externalIcon = "_1t4hlp6";
|
|
959
|
-
var link = /* @__PURE__ */
|
|
938
|
+
var link = /* @__PURE__ */ _7a4688({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
|
|
960
939
|
|
|
961
940
|
// src/components/Link/Link.tsx
|
|
962
|
-
import { Fragment as Fragment3, jsx as
|
|
963
|
-
var Link = /* @__PURE__ */
|
|
941
|
+
import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
942
|
+
var Link = /* @__PURE__ */ forwardRef13(function Link2({
|
|
964
943
|
as: Component = "a",
|
|
965
944
|
asChild,
|
|
966
945
|
color,
|
|
@@ -979,10 +958,10 @@ var Link = /* @__PURE__ */ forwardRef14(function Link2({
|
|
|
979
958
|
if (asChild) {
|
|
980
959
|
return (
|
|
981
960
|
// Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
|
|
982
|
-
/* @__PURE__ */
|
|
961
|
+
/* @__PURE__ */ jsx15(Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children })
|
|
983
962
|
);
|
|
984
963
|
}
|
|
985
|
-
return /* @__PURE__ */
|
|
964
|
+
return /* @__PURE__ */ jsxs13(
|
|
986
965
|
Component,
|
|
987
966
|
{
|
|
988
967
|
ref,
|
|
@@ -992,10 +971,10 @@ var Link = /* @__PURE__ */ forwardRef14(function Link2({
|
|
|
992
971
|
...rest,
|
|
993
972
|
children: [
|
|
994
973
|
children,
|
|
995
|
-
external && /* @__PURE__ */
|
|
974
|
+
external && /* @__PURE__ */ jsxs13(Fragment3, { children: [
|
|
996
975
|
" ",
|
|
997
|
-
/* @__PURE__ */
|
|
998
|
-
/* @__PURE__ */
|
|
976
|
+
/* @__PURE__ */ jsx15(ExternalLinkIcon, { className: externalIcon }),
|
|
977
|
+
/* @__PURE__ */ jsx15("span", { className: visuallyHidden, children: externalLabel })
|
|
999
978
|
] })
|
|
1000
979
|
]
|
|
1001
980
|
}
|
|
@@ -1010,29 +989,29 @@ var list2 = "_18t8ztt0";
|
|
|
1010
989
|
var separator = "_18t8ztt4";
|
|
1011
990
|
|
|
1012
991
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
1013
|
-
import { jsx as
|
|
1014
|
-
var Breadcrumb = /* @__PURE__ */
|
|
992
|
+
import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
993
|
+
var Breadcrumb = /* @__PURE__ */ forwardRef14(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabelProp, className, ...rest }, ref) {
|
|
1015
994
|
const m = useMessages();
|
|
1016
995
|
const ariaLabel = ariaLabelProp ?? m.breadcrumb ?? "\uC774\uB3D9 \uACBD\uB85C";
|
|
1017
|
-
const sep = separator3 ?? /* @__PURE__ */
|
|
1018
|
-
return /* @__PURE__ */
|
|
996
|
+
const sep = separator3 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
|
|
997
|
+
return /* @__PURE__ */ jsx16("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx16("ol", { className: list2, children: items2.map((item8, index) => {
|
|
1019
998
|
const isCurrent = index === items2.length - 1;
|
|
1020
|
-
return /* @__PURE__ */
|
|
1021
|
-
index > 0 && /* @__PURE__ */
|
|
1022
|
-
isCurrent ||
|
|
999
|
+
return /* @__PURE__ */ jsxs14("li", { className: item3, children: [
|
|
1000
|
+
index > 0 && /* @__PURE__ */ jsx16("span", { className: separator, "aria-hidden": true, children: sep }),
|
|
1001
|
+
isCurrent || item8.href === void 0 ? /* @__PURE__ */ jsx16("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item8.label }) : /* @__PURE__ */ jsx16(Link, { as: linkAs, href: item8.href, color: "neutral", underline: "hover", className: link2, children: item8.label })
|
|
1023
1002
|
] }, index);
|
|
1024
1003
|
}) }) });
|
|
1025
1004
|
});
|
|
1026
1005
|
|
|
1027
1006
|
// src/components/BusinessNumberInput/BusinessNumberInput.tsx
|
|
1028
|
-
import { forwardRef as
|
|
1029
|
-
import { jsx as
|
|
1030
|
-
var sanitize = (
|
|
1007
|
+
import { forwardRef as forwardRef15, useRef as useRef6, useState as useState4 } from "react";
|
|
1008
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
1009
|
+
var sanitize = (input6) => input6.replace(/\D/g, "").slice(0, 10);
|
|
1031
1010
|
var isDigit2 = (char) => /\d/.test(char);
|
|
1032
|
-
var BusinessNumberInput = /* @__PURE__ */
|
|
1011
|
+
var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
|
|
1033
1012
|
function BusinessNumberInput2(props, ref) {
|
|
1034
1013
|
const {
|
|
1035
|
-
value:
|
|
1014
|
+
value: value3,
|
|
1036
1015
|
defaultValue,
|
|
1037
1016
|
onValueChange,
|
|
1038
1017
|
validate = true,
|
|
@@ -1048,12 +1027,12 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef16(
|
|
|
1048
1027
|
const inputRef = useRef6(null);
|
|
1049
1028
|
const m = useMessages();
|
|
1050
1029
|
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.";
|
|
1051
|
-
const
|
|
1030
|
+
const label5 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
|
|
1052
1031
|
const incompleteText = m.businessNumberIncomplete ?? "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
|
|
1053
1032
|
const [touched, setTouched] = useState4(false);
|
|
1054
1033
|
const field3 = useFormattedInput({
|
|
1055
1034
|
isControlled: "value" in props,
|
|
1056
|
-
value:
|
|
1035
|
+
value: value3,
|
|
1057
1036
|
defaultValue,
|
|
1058
1037
|
onValueChange: (digits) => onValueChange?.(digits, digits.length === 10 ? isValidBusinessNumber(digits) : null),
|
|
1059
1038
|
sanitize,
|
|
@@ -1064,11 +1043,11 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef16(
|
|
|
1064
1043
|
const complete = field3.raw.length === 10;
|
|
1065
1044
|
const autoInvalid = validate && field3.raw.length > 0 && (complete ? !isValidBusinessNumber(field3.raw) : touched);
|
|
1066
1045
|
const showAuto = autoInvalid && error === void 0;
|
|
1067
|
-
return /* @__PURE__ */
|
|
1046
|
+
return /* @__PURE__ */ jsx17(
|
|
1068
1047
|
TextField,
|
|
1069
1048
|
{
|
|
1070
1049
|
ref: mergeRefs(ref, inputRef),
|
|
1071
|
-
label:
|
|
1050
|
+
label: label5,
|
|
1072
1051
|
placeholder,
|
|
1073
1052
|
inputMode: "numeric",
|
|
1074
1053
|
value: field3.display,
|
|
@@ -1090,7 +1069,7 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef16(
|
|
|
1090
1069
|
);
|
|
1091
1070
|
|
|
1092
1071
|
// src/components/Calendar/Calendar.tsx
|
|
1093
|
-
import { forwardRef as
|
|
1072
|
+
import { forwardRef as forwardRef17, useEffect as useEffect4, useId as useId4, useRef as useRef7, useState as useState5 } from "react";
|
|
1094
1073
|
import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2 } from "@bestow-ui/icons";
|
|
1095
1074
|
|
|
1096
1075
|
// src/utils/useIsClient.ts
|
|
@@ -1106,16 +1085,16 @@ function useIsClient() {
|
|
|
1106
1085
|
}
|
|
1107
1086
|
|
|
1108
1087
|
// src/components/IconButton/IconButton.tsx
|
|
1109
|
-
import { forwardRef as
|
|
1088
|
+
import { forwardRef as forwardRef16 } from "react";
|
|
1110
1089
|
|
|
1111
1090
|
// src/components/IconButton/IconButton.css.ts
|
|
1112
|
-
import { createRuntimeFn as
|
|
1113
|
-
var iconButton = /* @__PURE__ */
|
|
1091
|
+
import { createRuntimeFn as _7a4689 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1092
|
+
var iconButton = /* @__PURE__ */ _7a4689({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1114
1093
|
|
|
1115
1094
|
// src/components/IconButton/IconButton.tsx
|
|
1116
|
-
import { jsx as
|
|
1117
|
-
var IconButton = /* @__PURE__ */
|
|
1118
|
-
return /* @__PURE__ */
|
|
1095
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1096
|
+
var IconButton = /* @__PURE__ */ forwardRef16(function IconButton2({ variant = "ghost", color = "neutral", size, loading, className, children, ...rest }, ref) {
|
|
1097
|
+
return /* @__PURE__ */ jsx18(
|
|
1119
1098
|
Button,
|
|
1120
1099
|
{
|
|
1121
1100
|
ref,
|
|
@@ -1140,10 +1119,10 @@ var root6 = "_1qyq67b0";
|
|
|
1140
1119
|
var weekday = "_1qyq67b4";
|
|
1141
1120
|
|
|
1142
1121
|
// src/components/Calendar/Calendar.tsx
|
|
1143
|
-
import { jsx as
|
|
1144
|
-
var Calendar = /* @__PURE__ */
|
|
1122
|
+
import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1123
|
+
var Calendar = /* @__PURE__ */ forwardRef17(function Calendar2(props, ref) {
|
|
1145
1124
|
const {
|
|
1146
|
-
value:
|
|
1125
|
+
value: value3,
|
|
1147
1126
|
defaultValue,
|
|
1148
1127
|
onValueChange,
|
|
1149
1128
|
min,
|
|
@@ -1165,7 +1144,7 @@ var Calendar = /* @__PURE__ */ forwardRef18(function Calendar2(props, ref) {
|
|
|
1165
1144
|
const gridRef = useRef7(null);
|
|
1166
1145
|
const isControlled = "value" in props;
|
|
1167
1146
|
const [innerValue, setInnerValue] = useState5(defaultValue ?? "");
|
|
1168
|
-
const selected = parseISODate(isControlled ?
|
|
1147
|
+
const selected = parseISODate(isControlled ? value3 : innerValue);
|
|
1169
1148
|
const isClient = useIsClient();
|
|
1170
1149
|
const today = parseISODate(todayProp) ?? (isClient ? /* @__PURE__ */ new Date() : null);
|
|
1171
1150
|
const minDate = parseISODate(min);
|
|
@@ -1225,46 +1204,46 @@ var Calendar = /* @__PURE__ */ forwardRef18(function Calendar2(props, ref) {
|
|
|
1225
1204
|
) : [];
|
|
1226
1205
|
const canPrev = !!visible && (!minDate || compareDays(new Date(visible.getFullYear(), visible.getMonth(), 0), minDate) >= 0);
|
|
1227
1206
|
const canNext = !!visible && (!maxDate || compareDays(new Date(visible.getFullYear(), visible.getMonth() + 1, 1), maxDate) <= 0);
|
|
1228
|
-
return /* @__PURE__ */
|
|
1229
|
-
/* @__PURE__ */
|
|
1230
|
-
/* @__PURE__ */
|
|
1207
|
+
return /* @__PURE__ */ jsxs15("div", { ref, className: cx(root6, className), children: [
|
|
1208
|
+
/* @__PURE__ */ jsxs15("div", { className: header3, children: [
|
|
1209
|
+
/* @__PURE__ */ jsx19(
|
|
1231
1210
|
IconButton,
|
|
1232
1211
|
{
|
|
1233
1212
|
"aria-label": prevMonthLabel,
|
|
1234
1213
|
size: "sm",
|
|
1235
1214
|
disabled: !canPrev,
|
|
1236
1215
|
onClick: () => visible && setFocused(clamp(addMonths(visible, -1))),
|
|
1237
|
-
children: /* @__PURE__ */
|
|
1216
|
+
children: /* @__PURE__ */ jsx19(ChevronLeftIcon, {})
|
|
1238
1217
|
}
|
|
1239
1218
|
),
|
|
1240
|
-
/* @__PURE__ */
|
|
1241
|
-
/* @__PURE__ */
|
|
1219
|
+
/* @__PURE__ */ jsx19("div", { id: headingId, className: heading, "aria-live": "polite", children: visible && (m.monthTitle?.(visible.getFullYear(), visible.getMonth() + 1) ?? `${visible.getFullYear()}\uB144 ${visible.getMonth() + 1}\uC6D4`) }),
|
|
1220
|
+
/* @__PURE__ */ jsx19(
|
|
1242
1221
|
IconButton,
|
|
1243
1222
|
{
|
|
1244
1223
|
"aria-label": nextMonthLabel,
|
|
1245
1224
|
size: "sm",
|
|
1246
1225
|
disabled: !canNext,
|
|
1247
1226
|
onClick: () => visible && setFocused(clamp(addMonths(visible, 1))),
|
|
1248
|
-
children: /* @__PURE__ */
|
|
1227
|
+
children: /* @__PURE__ */ jsx19(ChevronRightIcon2, {})
|
|
1249
1228
|
}
|
|
1250
1229
|
)
|
|
1251
1230
|
] }),
|
|
1252
|
-
/* @__PURE__ */
|
|
1253
|
-
/* @__PURE__ */
|
|
1254
|
-
/* @__PURE__ */
|
|
1231
|
+
/* @__PURE__ */ jsxs15("table", { ref: gridRef, role: "grid", "aria-labelledby": headingId, className: grid, onKeyDown: handleKeyDown, children: [
|
|
1232
|
+
/* @__PURE__ */ jsx19("thead", { children: /* @__PURE__ */ jsx19("tr", { children: weekdaysShort.map((name, index) => /* @__PURE__ */ jsx19("th", { scope: "col", abbr: weekdaysLong[index], className: weekday, "data-weekday": index, children: name }, index)) }) }),
|
|
1233
|
+
/* @__PURE__ */ jsx19("tbody", { children: weeks.map((week) => /* @__PURE__ */ jsx19("tr", { children: week.map((date) => {
|
|
1255
1234
|
const iso = toISODate(date);
|
|
1256
1235
|
if (!visible || !isSameMonth(date, visible))
|
|
1257
|
-
return /* @__PURE__ */
|
|
1236
|
+
return /* @__PURE__ */ jsx19("td", { role: "gridcell", className: cell }, iso);
|
|
1258
1237
|
const isSelected = isSameDay(date, selected);
|
|
1259
1238
|
const isToday = isSameDay(date, today);
|
|
1260
1239
|
const holiday = !!isHoliday?.(date);
|
|
1261
1240
|
const disabled = isDisabled(date);
|
|
1262
|
-
const
|
|
1241
|
+
const label5 = [
|
|
1263
1242
|
m.dayLabel?.(date, weekdaysLong[date.getDay()]) ?? `${date.getDate()}, ${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${weekdaysLong[date.getDay()]}`,
|
|
1264
1243
|
holiday && (m.holiday ?? "\uACF5\uD734\uC77C"),
|
|
1265
1244
|
isToday && (m.today ?? "\uC624\uB298")
|
|
1266
1245
|
].filter(Boolean).join(", ");
|
|
1267
|
-
return /* @__PURE__ */
|
|
1246
|
+
return /* @__PURE__ */ jsx19("td", { role: "gridcell", "aria-selected": isSelected, className: cell, children: /* @__PURE__ */ jsx19(
|
|
1268
1247
|
"button",
|
|
1269
1248
|
{
|
|
1270
1249
|
type: "button",
|
|
@@ -1274,7 +1253,7 @@ var Calendar = /* @__PURE__ */ forwardRef18(function Calendar2(props, ref) {
|
|
|
1274
1253
|
"data-holiday": holiday || void 0,
|
|
1275
1254
|
"data-selected": isSelected || void 0,
|
|
1276
1255
|
tabIndex: isSameDay(date, focused) ? 0 : -1,
|
|
1277
|
-
"aria-label":
|
|
1256
|
+
"aria-label": label5,
|
|
1278
1257
|
"aria-current": isToday ? "date" : void 0,
|
|
1279
1258
|
"aria-disabled": disabled || void 0,
|
|
1280
1259
|
onClick: () => select(date),
|
|
@@ -1287,46 +1266,21 @@ var Calendar = /* @__PURE__ */ forwardRef18(function Calendar2(props, ref) {
|
|
|
1287
1266
|
] });
|
|
1288
1267
|
});
|
|
1289
1268
|
|
|
1290
|
-
// src/components/Card/Card.tsx
|
|
1291
|
-
import { forwardRef as forwardRef19 } from "react";
|
|
1292
|
-
|
|
1293
|
-
// src/components/Card/Card.css.ts
|
|
1294
|
-
import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1295
|
-
var body2 = "dnuf1u9";
|
|
1296
|
-
var card = /* @__PURE__ */ _7a46811({ defaultClassName: "dnuf1u0", variantClassNames: { variant: { outline: "dnuf1u1", elevated: "dnuf1u2", soft: "dnuf1u3" }, padding: { none: "dnuf1u4", sm: "dnuf1u5", md: "dnuf1u6", lg: "dnuf1u7" } }, defaultVariants: { variant: "outline", padding: "md" }, compoundVariants: [] });
|
|
1297
|
-
var footer2 = "dnuf1ua";
|
|
1298
|
-
var header4 = "dnuf1u8";
|
|
1299
|
-
|
|
1300
|
-
// src/components/Card/Card.tsx
|
|
1301
|
-
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1302
|
-
var Card = /* @__PURE__ */ forwardRef19(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
|
|
1303
|
-
return /* @__PURE__ */ jsx21(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
|
|
1304
|
-
});
|
|
1305
|
-
var CardHeader = /* @__PURE__ */ forwardRef19(function CardHeader2({ className, ...rest }, ref) {
|
|
1306
|
-
return /* @__PURE__ */ jsx21("div", { ref, className: cx(header4, className), ...rest });
|
|
1307
|
-
});
|
|
1308
|
-
var CardBody = /* @__PURE__ */ forwardRef19(function CardBody2({ className, ...rest }, ref) {
|
|
1309
|
-
return /* @__PURE__ */ jsx21("div", { ref, className: cx(body2, className), ...rest });
|
|
1310
|
-
});
|
|
1311
|
-
var CardFooter = /* @__PURE__ */ forwardRef19(function CardFooter2({ className, ...rest }, ref) {
|
|
1312
|
-
return /* @__PURE__ */ jsx21("div", { ref, className: cx(footer2, className), ...rest });
|
|
1313
|
-
});
|
|
1314
|
-
|
|
1315
1269
|
// src/components/Combobox/Combobox.tsx
|
|
1316
1270
|
import * as Popover from "@radix-ui/react-popover";
|
|
1317
1271
|
import {
|
|
1318
|
-
forwardRef as
|
|
1272
|
+
forwardRef as forwardRef18,
|
|
1319
1273
|
useEffect as useEffect5,
|
|
1320
1274
|
useId as useId5,
|
|
1321
1275
|
useMemo as useMemo3,
|
|
1322
1276
|
useRef as useRef8,
|
|
1323
1277
|
useState as useState6
|
|
1324
1278
|
} from "react";
|
|
1325
|
-
import { CheckIcon, ChevronDownIcon as ChevronDownIcon3 } from "@bestow-ui/icons";
|
|
1279
|
+
import { CheckIcon, ChevronDownIcon as ChevronDownIcon3, XIcon as XIcon3 } from "@bestow-ui/icons";
|
|
1326
1280
|
|
|
1327
1281
|
// src/components/Select/Select.css.ts
|
|
1328
1282
|
var content5 = "_1kx81e83";
|
|
1329
|
-
var
|
|
1283
|
+
var icon3 = "_1kx81e82";
|
|
1330
1284
|
var item4 = "_1kx81e85";
|
|
1331
1285
|
var itemIndicator = "_1kx81e86";
|
|
1332
1286
|
var trigger2 = "_1kx81e80";
|
|
@@ -1334,23 +1288,24 @@ var value = "_1kx81e81";
|
|
|
1334
1288
|
var viewport = "_1kx81e84";
|
|
1335
1289
|
|
|
1336
1290
|
// src/components/Combobox/Combobox.css.ts
|
|
1337
|
-
var
|
|
1338
|
-
var
|
|
1339
|
-
var
|
|
1291
|
+
var clear = "c2pbq72 c2pbq70";
|
|
1292
|
+
var content6 = "c2pbq73";
|
|
1293
|
+
var empty = "c2pbq74";
|
|
1294
|
+
var toggle2 = "c2pbq71 c2pbq70";
|
|
1340
1295
|
|
|
1341
1296
|
// src/components/Combobox/Combobox.tsx
|
|
1342
|
-
import { jsx as
|
|
1297
|
+
import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1343
1298
|
var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
|
|
1344
|
-
var Combobox = /* @__PURE__ */
|
|
1299
|
+
var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
|
|
1345
1300
|
const {
|
|
1346
1301
|
options,
|
|
1347
|
-
value:
|
|
1302
|
+
value: value3,
|
|
1348
1303
|
defaultValue,
|
|
1349
1304
|
onValueChange,
|
|
1350
1305
|
filter = defaultFilter,
|
|
1351
1306
|
emptyMessage: emptyMessageProp,
|
|
1352
1307
|
placeholder,
|
|
1353
|
-
label:
|
|
1308
|
+
label: label5,
|
|
1354
1309
|
helperText: helperText3,
|
|
1355
1310
|
error,
|
|
1356
1311
|
size,
|
|
@@ -1361,11 +1316,14 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1361
1316
|
id,
|
|
1362
1317
|
"aria-label": ariaLabel,
|
|
1363
1318
|
toggleLabel: toggleLabelProp,
|
|
1319
|
+
clearable,
|
|
1320
|
+
clearLabel: clearLabelProp,
|
|
1364
1321
|
className
|
|
1365
1322
|
} = props;
|
|
1366
1323
|
const m = useMessages();
|
|
1367
1324
|
const emptyMessage = emptyMessageProp ?? m.noResults ?? "\uACB0\uACFC\uAC00 \uC5C6\uC5B4\uC694";
|
|
1368
1325
|
const toggleLabel = toggleLabelProp ?? m.openList ?? "\uBAA9\uB85D \uC5F4\uAE30";
|
|
1326
|
+
const clearLabel = clearLabelProp ?? m.clearSelection ?? "\uC120\uD0DD \uC9C0\uC6B0\uAE30";
|
|
1369
1327
|
const generatedId = useId5();
|
|
1370
1328
|
const inputId = id ?? generatedId;
|
|
1371
1329
|
const labelId = `${inputId}-label`;
|
|
@@ -1377,7 +1335,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1377
1335
|
const anchorRef = useRef8(null);
|
|
1378
1336
|
const isControlled = "value" in props;
|
|
1379
1337
|
const [innerValue, setInnerValue] = useState6(defaultValue);
|
|
1380
|
-
const selectedValue = isControlled ?
|
|
1338
|
+
const selectedValue = isControlled ? value3 : innerValue;
|
|
1381
1339
|
const selectedOption = options.find((o) => o.value === selectedValue);
|
|
1382
1340
|
const [open, setOpen] = useState6(false);
|
|
1383
1341
|
const [query, setQuery] = useState6(null);
|
|
@@ -1395,16 +1353,24 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1395
1353
|
selectedIndex >= 0 && !list5[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list5, list5.length - 1, -1) : firstEnabled(list5)
|
|
1396
1354
|
);
|
|
1397
1355
|
};
|
|
1398
|
-
const
|
|
1356
|
+
const reset = () => {
|
|
1399
1357
|
setOpen(false);
|
|
1400
1358
|
setQuery(null);
|
|
1401
1359
|
setActiveIndex(-1);
|
|
1402
1360
|
};
|
|
1361
|
+
const clearSelection = () => {
|
|
1362
|
+
if (!isControlled) setInnerValue(void 0);
|
|
1363
|
+
if (selectedValue) onValueChange?.("");
|
|
1364
|
+
};
|
|
1365
|
+
const close2 = () => {
|
|
1366
|
+
if (query === "" && selectedValue) clearSelection();
|
|
1367
|
+
reset();
|
|
1368
|
+
};
|
|
1403
1369
|
const select = (option2) => {
|
|
1404
1370
|
if (option2.disabled) return;
|
|
1405
1371
|
if (!isControlled) setInnerValue(option2.value);
|
|
1406
1372
|
if (option2.value !== selectedValue) onValueChange?.(option2.value);
|
|
1407
|
-
|
|
1373
|
+
reset();
|
|
1408
1374
|
};
|
|
1409
1375
|
const move = (step) => {
|
|
1410
1376
|
const start = activeIndex < 0 ? step === 1 ? 0 : filtered.length - 1 : activeIndex + step;
|
|
@@ -1416,7 +1382,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1416
1382
|
const nextList = nextQuery ? options.filter((o) => filter(o, nextQuery)) : options;
|
|
1417
1383
|
setQuery(nextQuery);
|
|
1418
1384
|
setOpen(true);
|
|
1419
|
-
setActiveIndex(firstEnabled(nextList));
|
|
1385
|
+
setActiveIndex(nextQuery ? firstEnabled(nextList) : -1);
|
|
1420
1386
|
};
|
|
1421
1387
|
const handleKeyDown = (event) => {
|
|
1422
1388
|
switch (event.key) {
|
|
@@ -1435,6 +1401,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1435
1401
|
event.preventDefault();
|
|
1436
1402
|
const option2 = filtered[activeIndex];
|
|
1437
1403
|
if (option2) select(option2);
|
|
1404
|
+
else close2();
|
|
1438
1405
|
}
|
|
1439
1406
|
break;
|
|
1440
1407
|
case "Escape":
|
|
@@ -1453,13 +1420,13 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1453
1420
|
document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
|
|
1454
1421
|
}, [open, activeIndex]);
|
|
1455
1422
|
const hasOptions = filtered.length > 0;
|
|
1456
|
-
return /* @__PURE__ */
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
required && /* @__PURE__ */
|
|
1423
|
+
return /* @__PURE__ */ jsxs16("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
1424
|
+
label5 && /* @__PURE__ */ jsxs16("label", { id: labelId, htmlFor: inputId, className: label, children: [
|
|
1425
|
+
label5,
|
|
1426
|
+
required && /* @__PURE__ */ jsx20("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
1460
1427
|
] }),
|
|
1461
|
-
/* @__PURE__ */
|
|
1462
|
-
/* @__PURE__ */
|
|
1428
|
+
/* @__PURE__ */ jsxs16(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
|
|
1429
|
+
/* @__PURE__ */ jsx20(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs16(
|
|
1463
1430
|
"div",
|
|
1464
1431
|
{
|
|
1465
1432
|
ref: anchorRef,
|
|
@@ -1467,7 +1434,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1467
1434
|
"data-invalid": error || void 0,
|
|
1468
1435
|
"data-disabled": disabled || void 0,
|
|
1469
1436
|
children: [
|
|
1470
|
-
/* @__PURE__ */
|
|
1437
|
+
/* @__PURE__ */ jsx20(
|
|
1471
1438
|
"input",
|
|
1472
1439
|
{
|
|
1473
1440
|
ref: mergeRefs(ref, inputRef),
|
|
@@ -1478,7 +1445,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1478
1445
|
"aria-controls": open && hasOptions ? listId : void 0,
|
|
1479
1446
|
"aria-autocomplete": "list",
|
|
1480
1447
|
"aria-activedescendant": open && activeIndex >= 0 ? optionId(activeIndex) : void 0,
|
|
1481
|
-
"aria-label":
|
|
1448
|
+
"aria-label": label5 ? void 0 : ariaLabel,
|
|
1482
1449
|
"aria-invalid": error || void 0,
|
|
1483
1450
|
"aria-required": required || void 0,
|
|
1484
1451
|
"aria-describedby": helperId,
|
|
@@ -1494,7 +1461,23 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1494
1461
|
className: input
|
|
1495
1462
|
}
|
|
1496
1463
|
),
|
|
1497
|
-
/* @__PURE__ */
|
|
1464
|
+
clearable && selectedOption && !disabled && /* @__PURE__ */ jsx20(
|
|
1465
|
+
"button",
|
|
1466
|
+
{
|
|
1467
|
+
type: "button",
|
|
1468
|
+
tabIndex: -1,
|
|
1469
|
+
"aria-label": clearLabel,
|
|
1470
|
+
className: clear,
|
|
1471
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
1472
|
+
onClick: () => {
|
|
1473
|
+
clearSelection();
|
|
1474
|
+
reset();
|
|
1475
|
+
inputRef.current?.focus();
|
|
1476
|
+
},
|
|
1477
|
+
children: /* @__PURE__ */ jsx20(XIcon3, { size: 16 })
|
|
1478
|
+
}
|
|
1479
|
+
),
|
|
1480
|
+
/* @__PURE__ */ jsx20(
|
|
1498
1481
|
"button",
|
|
1499
1482
|
{
|
|
1500
1483
|
type: "button",
|
|
@@ -1509,13 +1492,13 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1509
1492
|
else openList(options);
|
|
1510
1493
|
inputRef.current?.focus();
|
|
1511
1494
|
},
|
|
1512
|
-
children: /* @__PURE__ */
|
|
1495
|
+
children: /* @__PURE__ */ jsx20(ChevronDownIcon3, { size: 16 })
|
|
1513
1496
|
}
|
|
1514
1497
|
)
|
|
1515
1498
|
]
|
|
1516
1499
|
}
|
|
1517
1500
|
) }),
|
|
1518
|
-
/* @__PURE__ */
|
|
1501
|
+
/* @__PURE__ */ jsx20(Popover.Portal, { children: /* @__PURE__ */ jsx20(
|
|
1519
1502
|
Popover.Content,
|
|
1520
1503
|
{
|
|
1521
1504
|
role: "presentation",
|
|
@@ -1530,19 +1513,19 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1530
1513
|
onInteractOutside: (event) => {
|
|
1531
1514
|
if (anchorRef.current?.contains(event.target)) event.preventDefault();
|
|
1532
1515
|
},
|
|
1533
|
-
children: hasOptions ? /* @__PURE__ */
|
|
1516
|
+
children: hasOptions ? /* @__PURE__ */ jsx20(
|
|
1534
1517
|
"div",
|
|
1535
1518
|
{
|
|
1536
1519
|
id: listId,
|
|
1537
1520
|
role: "listbox",
|
|
1538
|
-
"aria-labelledby":
|
|
1539
|
-
"aria-label":
|
|
1521
|
+
"aria-labelledby": label5 ? labelId : void 0,
|
|
1522
|
+
"aria-label": label5 ? void 0 : ariaLabel,
|
|
1540
1523
|
children: filtered.map((option2, index) => {
|
|
1541
1524
|
const isSelected = option2.value === selectedValue;
|
|
1542
1525
|
return (
|
|
1543
1526
|
// aria-activedescendant 패턴: 포커스·키보드는 입력창이 맡고 항목은 포커스를 받지 않는다 (WAI-ARIA combobox)
|
|
1544
1527
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
|
|
1545
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ jsxs16(
|
|
1546
1529
|
"div",
|
|
1547
1530
|
{
|
|
1548
1531
|
id: optionId(index),
|
|
@@ -1558,7 +1541,7 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1558
1541
|
onClick: () => select(option2),
|
|
1559
1542
|
children: [
|
|
1560
1543
|
option2.label,
|
|
1561
|
-
isSelected && /* @__PURE__ */
|
|
1544
|
+
isSelected && /* @__PURE__ */ jsx20("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ jsx20(CheckIcon, { size: 16 }) })
|
|
1562
1545
|
]
|
|
1563
1546
|
},
|
|
1564
1547
|
option2.value
|
|
@@ -1566,33 +1549,33 @@ var Combobox = /* @__PURE__ */ forwardRef20(function Combobox2(props, ref) {
|
|
|
1566
1549
|
);
|
|
1567
1550
|
})
|
|
1568
1551
|
}
|
|
1569
|
-
) : /* @__PURE__ */
|
|
1552
|
+
) : /* @__PURE__ */ jsx20("div", { className: empty, role: "status", children: emptyMessage })
|
|
1570
1553
|
}
|
|
1571
1554
|
) })
|
|
1572
1555
|
] }),
|
|
1573
|
-
name && /* @__PURE__ */
|
|
1574
|
-
helperText3 && /* @__PURE__ */
|
|
1556
|
+
name && /* @__PURE__ */ jsx20("input", { type: "hidden", name, value: selectedValue ?? "" }),
|
|
1557
|
+
helperText3 && /* @__PURE__ */ jsx20("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
1575
1558
|
] });
|
|
1576
1559
|
});
|
|
1577
1560
|
|
|
1578
1561
|
// src/components/DatePicker/DatePicker.tsx
|
|
1579
|
-
import { forwardRef as
|
|
1562
|
+
import { forwardRef as forwardRef19, useEffect as useEffect6, useRef as useRef9, useState as useState7 } from "react";
|
|
1580
1563
|
import { CalendarIcon } from "@bestow-ui/icons";
|
|
1581
1564
|
|
|
1582
1565
|
// src/components/Popover/Popover.tsx
|
|
1583
1566
|
import * as RadixPopover from "@radix-ui/react-popover";
|
|
1584
|
-
import { XIcon as
|
|
1567
|
+
import { XIcon as XIcon4 } from "@bestow-ui/icons";
|
|
1585
1568
|
import { useId as useId6 } from "react";
|
|
1586
1569
|
|
|
1587
1570
|
// src/components/Popover/Popover.css.ts
|
|
1588
1571
|
var arrow = "_1j99p8x4";
|
|
1589
1572
|
var closeButton3 = "_1j99p8x3";
|
|
1590
1573
|
var content7 = "_1j99p8x0";
|
|
1591
|
-
var
|
|
1574
|
+
var header4 = "_1j99p8x1";
|
|
1592
1575
|
var title3 = "_1j99p8x2";
|
|
1593
1576
|
|
|
1594
1577
|
// src/components/Popover/Popover.tsx
|
|
1595
|
-
import { jsx as
|
|
1578
|
+
import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1596
1579
|
function Popover2({
|
|
1597
1580
|
content: content12,
|
|
1598
1581
|
children,
|
|
@@ -1613,9 +1596,9 @@ function Popover2({
|
|
|
1613
1596
|
const portal2 = usePortalProps();
|
|
1614
1597
|
const m = useMessages();
|
|
1615
1598
|
const titleId = useId6();
|
|
1616
|
-
return /* @__PURE__ */
|
|
1617
|
-
/* @__PURE__ */
|
|
1618
|
-
/* @__PURE__ */
|
|
1599
|
+
return /* @__PURE__ */ jsxs17(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
|
|
1600
|
+
/* @__PURE__ */ jsx21(RadixPopover.Trigger, { asChild: true, children }),
|
|
1601
|
+
/* @__PURE__ */ jsx21(RadixPopover.Portal, { children: /* @__PURE__ */ jsxs17(
|
|
1619
1602
|
RadixPopover.Content,
|
|
1620
1603
|
{
|
|
1621
1604
|
side,
|
|
@@ -1628,12 +1611,12 @@ function Popover2({
|
|
|
1628
1611
|
className: cx(portal2.className, content7, className),
|
|
1629
1612
|
style: { ...portal2.style, ...style },
|
|
1630
1613
|
children: [
|
|
1631
|
-
(title6 || showClose) && /* @__PURE__ */
|
|
1632
|
-
title6 && /* @__PURE__ */
|
|
1633
|
-
showClose && /* @__PURE__ */
|
|
1614
|
+
(title6 || showClose) && /* @__PURE__ */ jsxs17("div", { className: header4, children: [
|
|
1615
|
+
title6 && /* @__PURE__ */ jsx21("h2", { id: titleId, className: title3, children: title6 }),
|
|
1616
|
+
showClose && /* @__PURE__ */ jsx21(RadixPopover.Close, { className: closeButton3, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx21(XIcon4, { size: 16 }) })
|
|
1634
1617
|
] }),
|
|
1635
1618
|
content12,
|
|
1636
|
-
showArrow && /* @__PURE__ */
|
|
1619
|
+
showArrow && /* @__PURE__ */ jsx21(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
|
|
1637
1620
|
]
|
|
1638
1621
|
}
|
|
1639
1622
|
) })
|
|
@@ -1642,14 +1625,14 @@ function Popover2({
|
|
|
1642
1625
|
var PopoverClose = RadixPopover.Close;
|
|
1643
1626
|
|
|
1644
1627
|
// src/components/DatePicker/DatePicker.tsx
|
|
1645
|
-
import { Fragment as Fragment4, jsx as
|
|
1646
|
-
var sanitize2 = (
|
|
1628
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1629
|
+
var sanitize2 = (input6) => input6.replace(/\D/g, "").slice(0, 8);
|
|
1647
1630
|
var format = (digits) => digits.length <= 4 ? digits : digits.length <= 6 ? `${digits.slice(0, 4)}-${digits.slice(4)}` : `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6)}`;
|
|
1648
1631
|
var isDigit3 = (char) => /\d/.test(char);
|
|
1649
|
-
var DatePicker = /* @__PURE__ */
|
|
1632
|
+
var DatePicker = /* @__PURE__ */ forwardRef19(
|
|
1650
1633
|
function DatePicker2(props, ref) {
|
|
1651
1634
|
const {
|
|
1652
|
-
value:
|
|
1635
|
+
value: value3,
|
|
1653
1636
|
defaultValue,
|
|
1654
1637
|
onValueChange,
|
|
1655
1638
|
min,
|
|
@@ -1674,7 +1657,7 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1674
1657
|
} = props;
|
|
1675
1658
|
const inputRef = useRef9(null);
|
|
1676
1659
|
const m = useMessages();
|
|
1677
|
-
const
|
|
1660
|
+
const label5 = labelProp ?? m.date ?? "\uB0A0\uC9DC";
|
|
1678
1661
|
const calendarLabel = calendarLabelProp ?? m.openCalendar ?? "\uB2EC\uB825 \uC5F4\uAE30";
|
|
1679
1662
|
const invalidText = invalidTextProp ?? m.dateInvalid ?? "\uC62C\uBC14\uB978 \uB0A0\uC9DC\uAC00 \uC544\uB2C8\uC5D0\uC694.";
|
|
1680
1663
|
const unavailableText = unavailableTextProp ?? m.dateUnavailable ?? "\uACE0\uB97C \uC218 \uC5C6\uB294 \uB0A0\uC9DC\uC608\uC694.";
|
|
@@ -1682,7 +1665,7 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1682
1665
|
const [open, setOpen] = useState7(false);
|
|
1683
1666
|
const [touched, setTouched] = useState7(false);
|
|
1684
1667
|
const isControlled = "value" in props;
|
|
1685
|
-
const lastEmitted = useRef9(isControlled ?
|
|
1668
|
+
const lastEmitted = useRef9(isControlled ? value3 ?? "" : defaultValue ?? "");
|
|
1686
1669
|
const minDate = parseISODate(min);
|
|
1687
1670
|
const maxDate = parseISODate(max);
|
|
1688
1671
|
const toIso = (digits) => digits.length === 8 ? `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6)}` : "";
|
|
@@ -1695,7 +1678,7 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1695
1678
|
const field3 = useFormattedInput({
|
|
1696
1679
|
isControlled: false,
|
|
1697
1680
|
value: void 0,
|
|
1698
|
-
defaultValue: (isControlled ?
|
|
1681
|
+
defaultValue: (isControlled ? value3 : defaultValue)?.replace(/\D/g, ""),
|
|
1699
1682
|
onValueChange: (digits) => {
|
|
1700
1683
|
const date2 = parseISODate(toIso(digits));
|
|
1701
1684
|
emit(date2 && !isUnavailable(date2) ? toIso(digits) : "");
|
|
@@ -1709,26 +1692,26 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1709
1692
|
const { setRaw } = field3;
|
|
1710
1693
|
useEffect6(() => {
|
|
1711
1694
|
if (!isControlled) return;
|
|
1712
|
-
const next =
|
|
1695
|
+
const next = value3 ?? "";
|
|
1713
1696
|
lastEmitted.current = next;
|
|
1714
1697
|
if (next === textIso) return;
|
|
1715
1698
|
const textDate = parseISODate(textIso);
|
|
1716
1699
|
const textIsValid = textDate !== null && !isUnavailable(textDate);
|
|
1717
1700
|
if (next === "" && !textIsValid) return;
|
|
1718
1701
|
setRaw(next.replace(/\D/g, ""));
|
|
1719
|
-
}, [
|
|
1702
|
+
}, [value3]);
|
|
1720
1703
|
const date = parseISODate(textIso);
|
|
1721
1704
|
const complete = field3.raw.length === 8;
|
|
1722
1705
|
const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field3.raw.length > 0 ? incompleteText : null;
|
|
1723
1706
|
const showAuto = autoError !== null && error === void 0;
|
|
1724
1707
|
const selectedIso = date && !isUnavailable(date) ? textIso : "";
|
|
1725
|
-
return /* @__PURE__ */
|
|
1726
|
-
/* @__PURE__ */
|
|
1708
|
+
return /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
1709
|
+
/* @__PURE__ */ jsx22(
|
|
1727
1710
|
TextField,
|
|
1728
1711
|
{
|
|
1729
1712
|
ref: mergeRefs(ref, inputRef),
|
|
1730
1713
|
id,
|
|
1731
|
-
label:
|
|
1714
|
+
label: label5,
|
|
1732
1715
|
placeholder,
|
|
1733
1716
|
inputMode: "numeric",
|
|
1734
1717
|
autoComplete: "off",
|
|
@@ -1742,7 +1725,7 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1742
1725
|
disabled,
|
|
1743
1726
|
fullWidth,
|
|
1744
1727
|
rootClassName: className,
|
|
1745
|
-
endAdornment: /* @__PURE__ */
|
|
1728
|
+
endAdornment: /* @__PURE__ */ jsx22(
|
|
1746
1729
|
Popover2,
|
|
1747
1730
|
{
|
|
1748
1731
|
open,
|
|
@@ -1751,7 +1734,7 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1751
1734
|
align: "end",
|
|
1752
1735
|
"aria-label": m.calendar ?? "\uB2EC\uB825",
|
|
1753
1736
|
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
1754
|
-
content: /* @__PURE__ */
|
|
1737
|
+
content: /* @__PURE__ */ jsx22(
|
|
1755
1738
|
Calendar,
|
|
1756
1739
|
{
|
|
1757
1740
|
value: selectedIso,
|
|
@@ -1768,57 +1751,34 @@ var DatePicker = /* @__PURE__ */ forwardRef21(
|
|
|
1768
1751
|
initialFocus: true
|
|
1769
1752
|
}
|
|
1770
1753
|
),
|
|
1771
|
-
children: /* @__PURE__ */
|
|
1754
|
+
children: /* @__PURE__ */ jsx22(IconButton, { "aria-label": calendarLabel, size: "sm", disabled, children: /* @__PURE__ */ jsx22(CalendarIcon, {}) })
|
|
1772
1755
|
}
|
|
1773
1756
|
)
|
|
1774
1757
|
}
|
|
1775
1758
|
),
|
|
1776
|
-
name && /* @__PURE__ */
|
|
1759
|
+
name && /* @__PURE__ */ jsx22("input", { type: "hidden", name, value: selectedIso })
|
|
1777
1760
|
] });
|
|
1778
1761
|
}
|
|
1779
1762
|
);
|
|
1780
1763
|
|
|
1781
|
-
// src/components/Divider/Divider.tsx
|
|
1782
|
-
import { forwardRef as forwardRef22 } from "react";
|
|
1783
|
-
|
|
1784
|
-
// src/components/Divider/Divider.css.ts
|
|
1785
|
-
import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1786
|
-
var divider = /* @__PURE__ */ _7a46812({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
|
|
1787
|
-
var labeled = "_1t3gq8v3";
|
|
1788
|
-
var line = "_1t3gq8v4";
|
|
1789
|
-
|
|
1790
|
-
// src/components/Divider/Divider.tsx
|
|
1791
|
-
import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1792
|
-
var Divider = /* @__PURE__ */ forwardRef22(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
|
|
1793
|
-
if (children && orientation === "horizontal") {
|
|
1794
|
-
return /* @__PURE__ */ jsxs20("div", { ref, className: cx(labeled, className), ...rest, children: [
|
|
1795
|
-
/* @__PURE__ */ jsx25("span", { className: line, "aria-hidden": true }),
|
|
1796
|
-
children,
|
|
1797
|
-
/* @__PURE__ */ jsx25("span", { className: line, "aria-hidden": true })
|
|
1798
|
-
] });
|
|
1799
|
-
}
|
|
1800
|
-
const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation === "vertical" ? "vertical" : void 0 };
|
|
1801
|
-
return /* @__PURE__ */ jsx25("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
|
|
1802
|
-
});
|
|
1803
|
-
|
|
1804
1764
|
// src/components/Drawer/Drawer.tsx
|
|
1805
1765
|
import * as Dialog2 from "@radix-ui/react-dialog";
|
|
1806
|
-
import { XIcon as
|
|
1766
|
+
import { XIcon as XIcon5 } from "@bestow-ui/icons";
|
|
1807
1767
|
|
|
1808
1768
|
// src/components/Drawer/Drawer.css.ts
|
|
1809
|
-
import { createRuntimeFn as
|
|
1810
|
-
var
|
|
1769
|
+
import { createRuntimeFn as _7a46810 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1770
|
+
var body2 = "nmobyvy";
|
|
1811
1771
|
var closeButton4 = "nmobyvx";
|
|
1812
|
-
var content8 = /* @__PURE__ */
|
|
1772
|
+
var content8 = /* @__PURE__ */ _7a46810({ defaultClassName: "nmobyv9", variantClassNames: { side: { right: "nmobyva", left: "nmobyvb", top: "nmobyvc", bottom: "nmobyvd" }, size: { sm: "nmobyve", md: "nmobyvf", lg: "nmobyvg" } }, defaultVariants: { side: "right", size: "md" }, compoundVariants: [[{ side: "right", size: "sm" }, "nmobyvh"], [{ side: "right", size: "md" }, "nmobyvi"], [{ side: "right", size: "lg" }, "nmobyvj"], [{ side: "left", size: "sm" }, "nmobyvk"], [{ side: "left", size: "md" }, "nmobyvl"], [{ side: "left", size: "lg" }, "nmobyvm"], [{ side: "top", size: "sm" }, "nmobyvn"], [{ side: "top", size: "md" }, "nmobyvo"], [{ side: "top", size: "lg" }, "nmobyvp"], [{ side: "bottom", size: "sm" }, "nmobyvq"], [{ side: "bottom", size: "md" }, "nmobyvr"], [{ side: "bottom", size: "lg" }, "nmobyvs"]] });
|
|
1813
1773
|
var description3 = "nmobyvw";
|
|
1814
|
-
var
|
|
1815
|
-
var
|
|
1774
|
+
var footer2 = "nmobyvz";
|
|
1775
|
+
var header5 = "nmobyvt";
|
|
1816
1776
|
var headings2 = "nmobyvu";
|
|
1817
1777
|
var overlay2 = "nmobyv0";
|
|
1818
1778
|
var title4 = "nmobyvv";
|
|
1819
1779
|
|
|
1820
1780
|
// src/components/Drawer/Drawer.tsx
|
|
1821
|
-
import { jsx as
|
|
1781
|
+
import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1822
1782
|
function Drawer({
|
|
1823
1783
|
open,
|
|
1824
1784
|
defaultOpen,
|
|
@@ -1827,7 +1787,7 @@ function Drawer({
|
|
|
1827
1787
|
title: title6,
|
|
1828
1788
|
description: description6,
|
|
1829
1789
|
children,
|
|
1830
|
-
footer:
|
|
1790
|
+
footer: footer5,
|
|
1831
1791
|
side,
|
|
1832
1792
|
size,
|
|
1833
1793
|
hideCloseButton = false,
|
|
@@ -1837,11 +1797,11 @@ function Drawer({
|
|
|
1837
1797
|
const portal2 = usePortalProps();
|
|
1838
1798
|
const m = useMessages();
|
|
1839
1799
|
const focus = useReturnFocus(Boolean(trigger4));
|
|
1840
|
-
return /* @__PURE__ */
|
|
1841
|
-
trigger4 && /* @__PURE__ */
|
|
1842
|
-
/* @__PURE__ */
|
|
1843
|
-
/* @__PURE__ */
|
|
1844
|
-
/* @__PURE__ */
|
|
1800
|
+
return /* @__PURE__ */ jsxs19(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
|
|
1801
|
+
trigger4 && /* @__PURE__ */ jsx23(Dialog2.Trigger, { asChild: true, children: trigger4 }),
|
|
1802
|
+
/* @__PURE__ */ jsxs19(Dialog2.Portal, { children: [
|
|
1803
|
+
/* @__PURE__ */ jsx23(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
|
|
1804
|
+
/* @__PURE__ */ jsxs19(
|
|
1845
1805
|
Dialog2.Content,
|
|
1846
1806
|
{
|
|
1847
1807
|
className: cx(portal2.className, content8({ side, size }), className),
|
|
@@ -1852,15 +1812,15 @@ function Drawer({
|
|
|
1852
1812
|
onCloseAutoFocus: focus.onCloseAutoFocus,
|
|
1853
1813
|
...description6 ? {} : { "aria-describedby": void 0 },
|
|
1854
1814
|
children: [
|
|
1855
|
-
/* @__PURE__ */
|
|
1856
|
-
/* @__PURE__ */
|
|
1857
|
-
/* @__PURE__ */
|
|
1858
|
-
description6 && /* @__PURE__ */
|
|
1815
|
+
/* @__PURE__ */ jsxs19("div", { className: header5, children: [
|
|
1816
|
+
/* @__PURE__ */ jsxs19("div", { className: headings2, children: [
|
|
1817
|
+
/* @__PURE__ */ jsx23(Dialog2.Title, { className: title4, children: title6 }),
|
|
1818
|
+
description6 && /* @__PURE__ */ jsx23(Dialog2.Description, { className: description3, children: description6 })
|
|
1859
1819
|
] }),
|
|
1860
|
-
!hideCloseButton && /* @__PURE__ */
|
|
1820
|
+
!hideCloseButton && /* @__PURE__ */ jsx23(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx23(IconButton, { "aria-label": m.close ?? "\uB2EB\uAE30", size: "sm", className: closeButton4, children: /* @__PURE__ */ jsx23(XIcon5, {}) }) })
|
|
1861
1821
|
] }),
|
|
1862
|
-
children && /* @__PURE__ */
|
|
1863
|
-
|
|
1822
|
+
children && /* @__PURE__ */ jsx23("div", { className: body2, children }),
|
|
1823
|
+
footer5 && /* @__PURE__ */ jsx23("div", { className: footer2, children: footer5 })
|
|
1864
1824
|
]
|
|
1865
1825
|
}
|
|
1866
1826
|
)
|
|
@@ -1871,26 +1831,32 @@ var DrawerClose = Dialog2.Close;
|
|
|
1871
1831
|
|
|
1872
1832
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
1873
1833
|
import * as RadixMenu from "@radix-ui/react-dropdown-menu";
|
|
1874
|
-
import {
|
|
1834
|
+
import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, MinusIcon } from "@bestow-ui/icons";
|
|
1835
|
+
import { forwardRef as forwardRef20 } from "react";
|
|
1875
1836
|
|
|
1876
1837
|
// src/components/DropdownMenu/DropdownMenu.css.ts
|
|
1877
1838
|
var content9 = "_1d7ahux0";
|
|
1878
1839
|
var danger = "_1d7ahux2";
|
|
1879
|
-
var
|
|
1840
|
+
var icon4 = "_1d7ahux3";
|
|
1841
|
+
var indicator = "_1d7ahux7";
|
|
1842
|
+
var indicatorInner = "_1d7ahux8";
|
|
1880
1843
|
var item5 = "_1d7ahux1";
|
|
1881
1844
|
var label2 = "_1d7ahux5";
|
|
1845
|
+
var radioDot = "_1d7ahux9";
|
|
1882
1846
|
var separator2 = "_1d7ahux6";
|
|
1883
1847
|
var shortcut = "_1d7ahux4";
|
|
1848
|
+
var subChevron = "_1d7ahuxb";
|
|
1849
|
+
var subTrigger = "_1d7ahuxa";
|
|
1884
1850
|
|
|
1885
1851
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
1886
|
-
import { jsx as
|
|
1852
|
+
import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1887
1853
|
var DropdownMenu = RadixMenu.Root;
|
|
1888
1854
|
var DropdownMenuTrigger = RadixMenu.Trigger;
|
|
1889
1855
|
var DropdownMenuGroup = RadixMenu.Group;
|
|
1890
|
-
var DropdownMenuContent = /* @__PURE__ */
|
|
1856
|
+
var DropdownMenuContent = /* @__PURE__ */ forwardRef20(
|
|
1891
1857
|
function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
|
|
1892
1858
|
const portal2 = usePortalProps();
|
|
1893
|
-
return /* @__PURE__ */
|
|
1859
|
+
return /* @__PURE__ */ jsx24(RadixMenu.Portal, { children: /* @__PURE__ */ jsx24(
|
|
1894
1860
|
RadixMenu.Content,
|
|
1895
1861
|
{
|
|
1896
1862
|
ref,
|
|
@@ -1905,32 +1871,248 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef23(
|
|
|
1905
1871
|
) });
|
|
1906
1872
|
}
|
|
1907
1873
|
);
|
|
1908
|
-
var DropdownMenuItem = /* @__PURE__ */
|
|
1874
|
+
var DropdownMenuItem = /* @__PURE__ */ forwardRef20(
|
|
1909
1875
|
function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "neutral", className, children, ...rest }, ref) {
|
|
1910
|
-
return /* @__PURE__ */
|
|
1911
|
-
icon6 && /* @__PURE__ */
|
|
1876
|
+
return /* @__PURE__ */ jsxs20(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
|
|
1877
|
+
icon6 && /* @__PURE__ */ jsx24("span", { className: icon4, "aria-hidden": true, children: icon6 }),
|
|
1912
1878
|
children,
|
|
1913
|
-
shortcut2 && /* @__PURE__ */
|
|
1879
|
+
shortcut2 && /* @__PURE__ */ jsx24("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
|
|
1914
1880
|
] });
|
|
1915
1881
|
}
|
|
1916
1882
|
);
|
|
1917
|
-
var DropdownMenuLabel = /* @__PURE__ */
|
|
1883
|
+
var DropdownMenuLabel = /* @__PURE__ */ forwardRef20(
|
|
1918
1884
|
function DropdownMenuLabel2({ className, ...rest }, ref) {
|
|
1919
|
-
return /* @__PURE__ */
|
|
1885
|
+
return /* @__PURE__ */ jsx24(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
|
|
1920
1886
|
}
|
|
1921
1887
|
);
|
|
1922
|
-
var DropdownMenuSeparator = /* @__PURE__ */
|
|
1888
|
+
var DropdownMenuSeparator = /* @__PURE__ */ forwardRef20(
|
|
1923
1889
|
function DropdownMenuSeparator2({ className, ...rest }, ref) {
|
|
1924
|
-
return /* @__PURE__ */
|
|
1890
|
+
return /* @__PURE__ */ jsx24(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
|
|
1891
|
+
}
|
|
1892
|
+
);
|
|
1893
|
+
var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef20(
|
|
1894
|
+
function DropdownMenuCheckboxItem2({ className, children, ...rest }, ref) {
|
|
1895
|
+
return /* @__PURE__ */ jsxs20(RadixMenu.CheckboxItem, { ref, className: cx(item5, className), ...rest, children: [
|
|
1896
|
+
/* @__PURE__ */ jsx24("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx24(RadixMenu.ItemIndicator, { className: indicatorInner, children: rest.checked === "indeterminate" ? /* @__PURE__ */ jsx24(MinusIcon, { size: 16 }) : /* @__PURE__ */ jsx24(CheckIcon2, { size: 16 }) }) }),
|
|
1897
|
+
children
|
|
1898
|
+
] });
|
|
1899
|
+
}
|
|
1900
|
+
);
|
|
1901
|
+
var DropdownMenuRadioGroup = RadixMenu.RadioGroup;
|
|
1902
|
+
var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef20(
|
|
1903
|
+
function DropdownMenuRadioItem2({ className, children, ...rest }, ref) {
|
|
1904
|
+
return /* @__PURE__ */ jsxs20(RadixMenu.RadioItem, { ref, className: cx(item5, className), ...rest, children: [
|
|
1905
|
+
/* @__PURE__ */ jsx24("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx24(RadixMenu.ItemIndicator, { className: indicatorInner, children: /* @__PURE__ */ jsx24("span", { className: radioDot }) }) }),
|
|
1906
|
+
children
|
|
1907
|
+
] });
|
|
1908
|
+
}
|
|
1909
|
+
);
|
|
1910
|
+
var DropdownMenuSub = RadixMenu.Sub;
|
|
1911
|
+
var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef20(
|
|
1912
|
+
function DropdownMenuSubTrigger2({ icon: icon6, className, children, ...rest }, ref) {
|
|
1913
|
+
return /* @__PURE__ */ jsxs20(RadixMenu.SubTrigger, { ref, className: cx(item5, subTrigger, className), ...rest, children: [
|
|
1914
|
+
icon6 && /* @__PURE__ */ jsx24("span", { className: icon4, "aria-hidden": true, children: icon6 }),
|
|
1915
|
+
children,
|
|
1916
|
+
/* @__PURE__ */ jsx24("span", { className: subChevron, "aria-hidden": true, children: /* @__PURE__ */ jsx24(ChevronRightIcon3, { size: 16 }) })
|
|
1917
|
+
] });
|
|
1918
|
+
}
|
|
1919
|
+
);
|
|
1920
|
+
var DropdownMenuSubContent = /* @__PURE__ */ forwardRef20(
|
|
1921
|
+
function DropdownMenuSubContent2({ className, style, sideOffset = 4, alignOffset = -5, collisionPadding = 8, ...rest }, ref) {
|
|
1922
|
+
const portal2 = usePortalProps();
|
|
1923
|
+
return /* @__PURE__ */ jsx24(RadixMenu.Portal, { children: /* @__PURE__ */ jsx24(
|
|
1924
|
+
RadixMenu.SubContent,
|
|
1925
|
+
{
|
|
1926
|
+
ref,
|
|
1927
|
+
sideOffset,
|
|
1928
|
+
alignOffset,
|
|
1929
|
+
collisionPadding,
|
|
1930
|
+
className: cx(portal2.className, content9, className),
|
|
1931
|
+
style: { ...portal2.style, ...style },
|
|
1932
|
+
...rest
|
|
1933
|
+
}
|
|
1934
|
+
) });
|
|
1935
|
+
}
|
|
1936
|
+
);
|
|
1937
|
+
|
|
1938
|
+
// src/components/NumberInput/NumberInput.tsx
|
|
1939
|
+
import { forwardRef as forwardRef21, useEffect as useEffect7, useId as useId7, useRef as useRef10 } from "react";
|
|
1940
|
+
import { MinusIcon as MinusIcon2, PlusIcon } from "@bestow-ui/icons";
|
|
1941
|
+
|
|
1942
|
+
// src/components/NumberInput/NumberInput.css.ts
|
|
1943
|
+
import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1944
|
+
var end = "_1vq2qhv1";
|
|
1945
|
+
var input4 = "_1vq2qhv0";
|
|
1946
|
+
var stepper = /* @__PURE__ */ _7a46811({ defaultClassName: "_1vq2qhv3", variantClassNames: { size: { sm: "_1vq2qhv4", md: "_1vq2qhv5", lg: "_1vq2qhv6" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1947
|
+
var unit = "_1vq2qhv2";
|
|
1948
|
+
|
|
1949
|
+
// src/components/NumberInput/NumberInput.tsx
|
|
1950
|
+
import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1951
|
+
var MAX_DIGITS2 = 15;
|
|
1952
|
+
var isMeaningful = (char) => /[\d.-]/.test(char);
|
|
1953
|
+
var decimalsOf = (n) => Number.isFinite(n) ? String(n).split(".")[1]?.length ?? 0 : 0;
|
|
1954
|
+
var parse = (raw) => /\d/.test(raw) ? Number(raw) : null;
|
|
1955
|
+
var NumberInput = /* @__PURE__ */ forwardRef21(
|
|
1956
|
+
function NumberInput2(props, ref) {
|
|
1957
|
+
const {
|
|
1958
|
+
value: value3,
|
|
1959
|
+
defaultValue,
|
|
1960
|
+
onValueChange,
|
|
1961
|
+
min,
|
|
1962
|
+
max,
|
|
1963
|
+
step = 1,
|
|
1964
|
+
largeStep = step * 10,
|
|
1965
|
+
precision: precisionProp,
|
|
1966
|
+
unit: unit2,
|
|
1967
|
+
thousandSeparator = true,
|
|
1968
|
+
hideStepper,
|
|
1969
|
+
size,
|
|
1970
|
+
disabled,
|
|
1971
|
+
readOnly,
|
|
1972
|
+
id,
|
|
1973
|
+
name,
|
|
1974
|
+
onKeyDown,
|
|
1975
|
+
onBlur,
|
|
1976
|
+
className,
|
|
1977
|
+
...rest
|
|
1978
|
+
} = props;
|
|
1979
|
+
const isControlled = "value" in props;
|
|
1980
|
+
const m = useMessages();
|
|
1981
|
+
const inputRef = useRef10(null);
|
|
1982
|
+
const generatedId = useId7();
|
|
1983
|
+
const inputId = id ?? generatedId;
|
|
1984
|
+
const precision = Math.max(0, precisionProp ?? decimalsOf(step));
|
|
1985
|
+
const allowNegative = min === void 0 || min < 0;
|
|
1986
|
+
const round = (n) => Number(n.toFixed(precision));
|
|
1987
|
+
const clamp = (n) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, round(n)));
|
|
1988
|
+
const toRaw = (n) => n === null || n === void 0 || !Number.isFinite(n) ? "" : String(round(n));
|
|
1989
|
+
const sanitize4 = (input6) => {
|
|
1990
|
+
const negative = allowNegative && input6.trimStart().startsWith("-");
|
|
1991
|
+
const [intPart = "", ...fracParts] = input6.replace(/[^\d.]/g, "").split(".");
|
|
1992
|
+
const int = intPart.replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS2);
|
|
1993
|
+
const hasDot = precision > 0 && fracParts.length > 0;
|
|
1994
|
+
const frac = hasDot ? fracParts.join("").slice(0, precision) : "";
|
|
1995
|
+
return `${negative ? "-" : ""}${int}${hasDot ? `.${frac}` : ""}`;
|
|
1996
|
+
};
|
|
1997
|
+
const format2 = (raw) => {
|
|
1998
|
+
if (!thousandSeparator) return raw;
|
|
1999
|
+
const [, sign = "", int = "", rest2 = ""] = raw.match(/^(-?)(\d*)(.*)$/) ?? [];
|
|
2000
|
+
return `${sign}${int ? Number(int).toLocaleString("ko-KR") : ""}${rest2}`;
|
|
2001
|
+
};
|
|
2002
|
+
const lastEmitted = useRef10(parse(toRaw(isControlled ? value3 : defaultValue)));
|
|
2003
|
+
const emit = (next) => {
|
|
2004
|
+
if (next === lastEmitted.current) return;
|
|
2005
|
+
lastEmitted.current = next;
|
|
2006
|
+
onValueChange?.(next);
|
|
2007
|
+
};
|
|
2008
|
+
const field3 = useFormattedInput({
|
|
2009
|
+
isControlled: false,
|
|
2010
|
+
value: void 0,
|
|
2011
|
+
defaultValue: toRaw(isControlled ? value3 : defaultValue),
|
|
2012
|
+
onValueChange: (raw) => emit(parse(raw)),
|
|
2013
|
+
sanitize: sanitize4,
|
|
2014
|
+
format: format2,
|
|
2015
|
+
isMeaningful,
|
|
2016
|
+
inputRef
|
|
2017
|
+
});
|
|
2018
|
+
const { setRaw } = field3;
|
|
2019
|
+
useEffect7(() => {
|
|
2020
|
+
if (!isControlled) return;
|
|
2021
|
+
const next = value3 ?? null;
|
|
2022
|
+
lastEmitted.current = next;
|
|
2023
|
+
if (parse(field3.raw) !== next) setRaw(toRaw(next));
|
|
2024
|
+
}, [value3]);
|
|
2025
|
+
const current2 = parse(field3.raw);
|
|
2026
|
+
const setValue = (next) => {
|
|
2027
|
+
setRaw(toRaw(next));
|
|
2028
|
+
emit(next);
|
|
2029
|
+
};
|
|
2030
|
+
const stepBy = (delta) => {
|
|
2031
|
+
if (disabled || readOnly) return;
|
|
2032
|
+
setValue(current2 === null ? clamp(0) : clamp(current2 + delta));
|
|
2033
|
+
};
|
|
2034
|
+
const canDecrement = !disabled && !readOnly && (current2 === null || min === void 0 || current2 > min);
|
|
2035
|
+
const canIncrement = !disabled && !readOnly && (current2 === null || max === void 0 || current2 < max);
|
|
2036
|
+
const handleKeyDown = (event) => {
|
|
2037
|
+
onKeyDown?.(event);
|
|
2038
|
+
if (event.defaultPrevented) return;
|
|
2039
|
+
const deltas = {
|
|
2040
|
+
ArrowUp: step,
|
|
2041
|
+
ArrowDown: -step,
|
|
2042
|
+
PageUp: largeStep,
|
|
2043
|
+
PageDown: -largeStep
|
|
2044
|
+
};
|
|
2045
|
+
if (event.key in deltas) {
|
|
2046
|
+
event.preventDefault();
|
|
2047
|
+
stepBy(deltas[event.key]);
|
|
2048
|
+
} else if (event.key === "Home" && min !== void 0 && !readOnly) {
|
|
2049
|
+
event.preventDefault();
|
|
2050
|
+
setValue(min);
|
|
2051
|
+
} else if (event.key === "End" && max !== void 0 && !readOnly) {
|
|
2052
|
+
event.preventDefault();
|
|
2053
|
+
setValue(max);
|
|
2054
|
+
} else {
|
|
2055
|
+
field3.onKeyDown(event);
|
|
2056
|
+
}
|
|
2057
|
+
};
|
|
2058
|
+
const stepper2 = (direction) => /* @__PURE__ */ jsx25(
|
|
2059
|
+
IconButton,
|
|
2060
|
+
{
|
|
2061
|
+
size: "sm",
|
|
2062
|
+
"aria-label": direction < 0 ? m.decrement ?? "\uC904\uC774\uAE30" : m.increment ?? "\uB298\uB9AC\uAE30",
|
|
2063
|
+
"aria-controls": inputId,
|
|
2064
|
+
tabIndex: -1,
|
|
2065
|
+
disabled: direction < 0 ? !canDecrement : !canIncrement,
|
|
2066
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
2067
|
+
onClick: () => stepBy(direction * step),
|
|
2068
|
+
className: stepper({ size }),
|
|
2069
|
+
children: direction < 0 ? /* @__PURE__ */ jsx25(MinusIcon2, {}) : /* @__PURE__ */ jsx25(PlusIcon, {})
|
|
2070
|
+
}
|
|
2071
|
+
);
|
|
2072
|
+
return /* @__PURE__ */ jsxs21(Fragment5, { children: [
|
|
2073
|
+
/* @__PURE__ */ jsx25(
|
|
2074
|
+
TextField,
|
|
2075
|
+
{
|
|
2076
|
+
ref: mergeRefs(ref, inputRef),
|
|
2077
|
+
id: inputId,
|
|
2078
|
+
role: "spinbutton",
|
|
2079
|
+
inputMode: allowNegative ? "text" : precision > 0 ? "decimal" : "numeric",
|
|
2080
|
+
autoComplete: "off",
|
|
2081
|
+
"aria-valuenow": current2 ?? void 0,
|
|
2082
|
+
"aria-valuemin": min,
|
|
2083
|
+
"aria-valuemax": max,
|
|
2084
|
+
"aria-valuetext": current2 === null ? void 0 : `${field3.display}${unit2 ?? ""}`,
|
|
2085
|
+
value: field3.display,
|
|
2086
|
+
onChange: field3.onChange,
|
|
2087
|
+
onKeyDown: handleKeyDown,
|
|
2088
|
+
onBlur: (event) => {
|
|
2089
|
+
if (current2 !== null && clamp(current2) !== current2) setValue(clamp(current2));
|
|
2090
|
+
else if (current2 === null && field3.raw !== "") setRaw("");
|
|
2091
|
+
onBlur?.(event);
|
|
2092
|
+
},
|
|
2093
|
+
size,
|
|
2094
|
+
disabled,
|
|
2095
|
+
readOnly,
|
|
2096
|
+
startAdornment: hideStepper ? void 0 : stepper2(-1),
|
|
2097
|
+
endAdornment: unit2 || !hideStepper ? /* @__PURE__ */ jsxs21("span", { className: end, children: [
|
|
2098
|
+
unit2 && /* @__PURE__ */ jsx25("span", { className: unit, children: unit2 }),
|
|
2099
|
+
!hideStepper && stepper2(1)
|
|
2100
|
+
] }) : void 0,
|
|
2101
|
+
className: cx(input4, className),
|
|
2102
|
+
...rest
|
|
2103
|
+
}
|
|
2104
|
+
),
|
|
2105
|
+
name && /* @__PURE__ */ jsx25("input", { type: "hidden", name, value: current2 === null ? "" : String(current2) })
|
|
2106
|
+
] });
|
|
1925
2107
|
}
|
|
1926
2108
|
);
|
|
1927
2109
|
|
|
1928
2110
|
// src/components/Pagination/Pagination.tsx
|
|
1929
|
-
import { ChevronLeftIcon as ChevronLeftIcon2, ChevronRightIcon as
|
|
1930
|
-
import { forwardRef as
|
|
2111
|
+
import { ChevronLeftIcon as ChevronLeftIcon2, ChevronRightIcon as ChevronRightIcon4 } from "@bestow-ui/icons";
|
|
2112
|
+
import { forwardRef as forwardRef22, useState as useState8 } from "react";
|
|
1931
2113
|
|
|
1932
2114
|
// src/components/Pagination/getPaginationItems.ts
|
|
1933
|
-
var range = (start,
|
|
2115
|
+
var range = (start, end2) => end2 < start ? [] : Array.from({ length: end2 - start + 1 }, (_, i) => start + i);
|
|
1934
2116
|
function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount = 1) {
|
|
1935
2117
|
if (totalPages < 1) return [];
|
|
1936
2118
|
const startPages = range(1, Math.min(boundaryCount, totalPages));
|
|
@@ -1954,14 +2136,14 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
|
|
|
1954
2136
|
}
|
|
1955
2137
|
|
|
1956
2138
|
// src/components/Pagination/Pagination.css.ts
|
|
1957
|
-
import { createRuntimeFn as
|
|
2139
|
+
import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
1958
2140
|
var ellipsis = "_1iraoak4";
|
|
1959
|
-
var item6 = /* @__PURE__ */
|
|
2141
|
+
var item6 = /* @__PURE__ */ _7a46812({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1960
2142
|
var list3 = "_1iraoak0";
|
|
1961
2143
|
|
|
1962
2144
|
// src/components/Pagination/Pagination.tsx
|
|
1963
|
-
import { jsx as
|
|
1964
|
-
var Pagination = /* @__PURE__ */
|
|
2145
|
+
import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2146
|
+
var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
|
|
1965
2147
|
totalPages,
|
|
1966
2148
|
page: pageProp,
|
|
1967
2149
|
defaultPage = 1,
|
|
@@ -1986,8 +2168,8 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
|
|
|
1986
2168
|
onPageChange?.(next);
|
|
1987
2169
|
};
|
|
1988
2170
|
const itemClass = item6({ size });
|
|
1989
|
-
return /* @__PURE__ */
|
|
1990
|
-
/* @__PURE__ */
|
|
2171
|
+
return /* @__PURE__ */ jsx26("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs22("ul", { className: list3, children: [
|
|
2172
|
+
/* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
|
|
1991
2173
|
"button",
|
|
1992
2174
|
{
|
|
1993
2175
|
type: "button",
|
|
@@ -1995,23 +2177,23 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
|
|
|
1995
2177
|
"aria-label": getItemLabel("previous", page - 1),
|
|
1996
2178
|
disabled: page <= 1,
|
|
1997
2179
|
onClick: () => goTo(page - 1),
|
|
1998
|
-
children: /* @__PURE__ */
|
|
2180
|
+
children: /* @__PURE__ */ jsx26(ChevronLeftIcon2, { size: 16 })
|
|
1999
2181
|
}
|
|
2000
2182
|
) }),
|
|
2001
2183
|
getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
|
|
2002
|
-
(
|
|
2184
|
+
(item8) => typeof item8 === "number" ? /* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
|
|
2003
2185
|
"button",
|
|
2004
2186
|
{
|
|
2005
2187
|
type: "button",
|
|
2006
2188
|
className: itemClass,
|
|
2007
|
-
"aria-label": getItemLabel("page",
|
|
2008
|
-
"aria-current":
|
|
2009
|
-
onClick: () => goTo(
|
|
2010
|
-
children:
|
|
2189
|
+
"aria-label": getItemLabel("page", item8),
|
|
2190
|
+
"aria-current": item8 === page ? "page" : void 0,
|
|
2191
|
+
onClick: () => goTo(item8),
|
|
2192
|
+
children: item8
|
|
2011
2193
|
}
|
|
2012
|
-
) },
|
|
2194
|
+
) }, item8) : /* @__PURE__ */ jsx26("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item8)
|
|
2013
2195
|
),
|
|
2014
|
-
/* @__PURE__ */
|
|
2196
|
+
/* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
|
|
2015
2197
|
"button",
|
|
2016
2198
|
{
|
|
2017
2199
|
type: "button",
|
|
@@ -2019,24 +2201,24 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
|
|
|
2019
2201
|
"aria-label": getItemLabel("next", page + 1),
|
|
2020
2202
|
disabled: page >= totalPages,
|
|
2021
2203
|
onClick: () => goTo(page + 1),
|
|
2022
|
-
children: /* @__PURE__ */
|
|
2204
|
+
children: /* @__PURE__ */ jsx26(ChevronRightIcon4, { size: 16 })
|
|
2023
2205
|
}
|
|
2024
2206
|
) })
|
|
2025
2207
|
] }) });
|
|
2026
2208
|
});
|
|
2027
2209
|
|
|
2028
2210
|
// src/components/PhoneNumberInput/PhoneNumberInput.tsx
|
|
2029
|
-
import { forwardRef as
|
|
2030
|
-
import { jsx as
|
|
2031
|
-
var sanitize3 = (
|
|
2032
|
-
const digits =
|
|
2211
|
+
import { forwardRef as forwardRef23, useRef as useRef11 } from "react";
|
|
2212
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2213
|
+
var sanitize3 = (input6) => {
|
|
2214
|
+
const digits = input6.replace(/\D/g, "");
|
|
2033
2215
|
return digits.slice(0, phoneNumberMaxDigits(digits));
|
|
2034
2216
|
};
|
|
2035
2217
|
var isDigit4 = (char) => /\d/.test(char);
|
|
2036
|
-
var PhoneNumberInput = /* @__PURE__ */
|
|
2218
|
+
var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
|
|
2037
2219
|
function PhoneNumberInput2(props, ref) {
|
|
2038
2220
|
const {
|
|
2039
|
-
value:
|
|
2221
|
+
value: value3,
|
|
2040
2222
|
defaultValue,
|
|
2041
2223
|
onValueChange,
|
|
2042
2224
|
label: labelProp,
|
|
@@ -2044,12 +2226,12 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
|
|
|
2044
2226
|
onKeyDown,
|
|
2045
2227
|
...rest
|
|
2046
2228
|
} = props;
|
|
2047
|
-
const inputRef =
|
|
2229
|
+
const inputRef = useRef11(null);
|
|
2048
2230
|
const m = useMessages();
|
|
2049
|
-
const
|
|
2231
|
+
const label5 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
|
|
2050
2232
|
const field3 = useFormattedInput({
|
|
2051
2233
|
isControlled: "value" in props,
|
|
2052
|
-
value:
|
|
2234
|
+
value: value3,
|
|
2053
2235
|
defaultValue,
|
|
2054
2236
|
onValueChange,
|
|
2055
2237
|
sanitize: sanitize3,
|
|
@@ -2057,11 +2239,11 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
|
|
|
2057
2239
|
isMeaningful: isDigit4,
|
|
2058
2240
|
inputRef
|
|
2059
2241
|
});
|
|
2060
|
-
return /* @__PURE__ */
|
|
2242
|
+
return /* @__PURE__ */ jsx27(
|
|
2061
2243
|
TextField,
|
|
2062
2244
|
{
|
|
2063
2245
|
ref: mergeRefs(ref, inputRef),
|
|
2064
|
-
label:
|
|
2246
|
+
label: label5,
|
|
2065
2247
|
placeholder,
|
|
2066
2248
|
type: "tel",
|
|
2067
2249
|
inputMode: "tel",
|
|
@@ -2078,91 +2260,28 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
|
|
|
2078
2260
|
}
|
|
2079
2261
|
);
|
|
2080
2262
|
|
|
2081
|
-
// src/components/Progress/Progress.tsx
|
|
2082
|
-
import { forwardRef as forwardRef26, useId as useId7 } from "react";
|
|
2083
|
-
|
|
2084
|
-
// src/components/Progress/Progress.css.ts
|
|
2085
|
-
import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2086
|
-
var header7 = "_1tvkq001";
|
|
2087
|
-
var indicator = /* @__PURE__ */ _7a46815({ defaultClassName: "_1tvkq008", variantClassNames: { color: { primary: "_1tvkq009", neutral: "_1tvkq00a", success: "_1tvkq00b", warning: "_1tvkq00c", danger: "_1tvkq00d" } }, defaultVariants: { color: "primary" }, compoundVariants: [] });
|
|
2088
|
-
var label3 = "_1tvkq002";
|
|
2089
|
-
var root7 = "_1tvkq000";
|
|
2090
|
-
var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_1tvkq004", variantClassNames: { size: { sm: "_1tvkq005", md: "_1tvkq006", lg: "_1tvkq007" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2091
|
-
var value2 = "_1tvkq003";
|
|
2092
|
-
|
|
2093
|
-
// src/components/Progress/Progress.tsx
|
|
2094
|
-
import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2095
|
-
var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
|
|
2096
|
-
var Progress = /* @__PURE__ */ forwardRef26(function Progress2({
|
|
2097
|
-
value: value4,
|
|
2098
|
-
max = 100,
|
|
2099
|
-
label: label6,
|
|
2100
|
-
"aria-label": ariaLabel,
|
|
2101
|
-
showValue,
|
|
2102
|
-
formatValue = defaultFormat,
|
|
2103
|
-
size,
|
|
2104
|
-
color,
|
|
2105
|
-
className,
|
|
2106
|
-
...rest
|
|
2107
|
-
}, ref) {
|
|
2108
|
-
const labelId = useId7();
|
|
2109
|
-
const isIndeterminate = value4 === void 0 || value4 === null;
|
|
2110
|
-
const safeMax = max > 0 ? max : 100;
|
|
2111
|
-
const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
|
|
2112
|
-
const valueText = isIndeterminate ? void 0 : formatValue(clamped, safeMax);
|
|
2113
|
-
return /* @__PURE__ */ jsxs24("div", { ref, className: cx(root7, className), ...rest, children: [
|
|
2114
|
-
(label6 || showValue && valueText) && /* @__PURE__ */ jsxs24("div", { className: header7, children: [
|
|
2115
|
-
label6 && /* @__PURE__ */ jsx30("span", { id: labelId, className: label3, children: label6 }),
|
|
2116
|
-
showValue && valueText && /* @__PURE__ */ jsx30("span", { className: value2, "aria-hidden": true, children: valueText })
|
|
2117
|
-
] }),
|
|
2118
|
-
/* @__PURE__ */ jsx30(
|
|
2119
|
-
"div",
|
|
2120
|
-
{
|
|
2121
|
-
role: "progressbar",
|
|
2122
|
-
"aria-labelledby": label6 ? labelId : void 0,
|
|
2123
|
-
"aria-label": label6 ? void 0 : ariaLabel,
|
|
2124
|
-
"aria-valuemin": 0,
|
|
2125
|
-
"aria-valuemax": safeMax,
|
|
2126
|
-
"aria-valuenow": isIndeterminate ? void 0 : clamped,
|
|
2127
|
-
"aria-valuetext": valueText,
|
|
2128
|
-
className: track({ size }),
|
|
2129
|
-
children: /* @__PURE__ */ jsx30(
|
|
2130
|
-
"div",
|
|
2131
|
-
{
|
|
2132
|
-
className: indicator({ color }),
|
|
2133
|
-
"data-state": isIndeterminate ? "indeterminate" : clamped >= safeMax ? "complete" : "loading",
|
|
2134
|
-
style: isIndeterminate ? void 0 : { width: `${clamped / safeMax * 100}%` }
|
|
2135
|
-
}
|
|
2136
|
-
)
|
|
2137
|
-
}
|
|
2138
|
-
)
|
|
2139
|
-
] });
|
|
2140
|
-
});
|
|
2141
|
-
|
|
2142
2263
|
// src/components/RadioGroup/RadioGroup.tsx
|
|
2143
|
-
import
|
|
2144
|
-
import { forwardRef as forwardRef27, useId as useId8 } from "react";
|
|
2264
|
+
import { forwardRef as forwardRef24, useId as useId8, useState as useState9 } from "react";
|
|
2145
2265
|
|
|
2146
2266
|
// src/components/RadioGroup/RadioGroup.css.ts
|
|
2147
|
-
import { createRuntimeFn as
|
|
2148
|
-
var description4 = "
|
|
2149
|
-
var groupLabel = "
|
|
2150
|
-
var
|
|
2151
|
-
var
|
|
2152
|
-
var
|
|
2153
|
-
var
|
|
2154
|
-
var
|
|
2155
|
-
var text = "_1w9iwjmb";
|
|
2267
|
+
import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2268
|
+
var description4 = "_1w9iwjmc";
|
|
2269
|
+
var groupLabel = "_1w9iwjmd";
|
|
2270
|
+
var items = /* @__PURE__ */ _7a46813({ defaultClassName: "_1w9iwjm0", variantClassNames: { orientation: { vertical: "_1w9iwjm1", horizontal: "_1w9iwjm2" } }, defaultVariants: { orientation: "vertical" }, compoundVariants: [] });
|
|
2271
|
+
var labelText = "_1w9iwjmb";
|
|
2272
|
+
var option = /* @__PURE__ */ _7a46813({ defaultClassName: "_1w9iwjm3", variantClassNames: { size: { sm: "_1w9iwjm4", md: "_1w9iwjm5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2273
|
+
var radio = /* @__PURE__ */ _7a46813({ defaultClassName: "_1w9iwjm7", variantClassNames: { size: { sm: "_1w9iwjm8", md: "_1w9iwjm9" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2274
|
+
var text = "_1w9iwjma";
|
|
2156
2275
|
|
|
2157
2276
|
// src/components/RadioGroup/RadioGroup.tsx
|
|
2158
|
-
import { jsx as
|
|
2159
|
-
var
|
|
2277
|
+
import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2278
|
+
var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref) {
|
|
2160
2279
|
const {
|
|
2161
2280
|
options,
|
|
2162
|
-
value:
|
|
2281
|
+
value: value3,
|
|
2163
2282
|
defaultValue,
|
|
2164
2283
|
onValueChange,
|
|
2165
|
-
label:
|
|
2284
|
+
label: label5,
|
|
2166
2285
|
helperText: helperText3,
|
|
2167
2286
|
error,
|
|
2168
2287
|
orientation = "vertical",
|
|
@@ -2175,73 +2294,198 @@ var RadioGroup = /* @__PURE__ */ forwardRef27(function RadioGroup2(props, ref) {
|
|
|
2175
2294
|
className
|
|
2176
2295
|
} = props;
|
|
2177
2296
|
const isControlled = "value" in props;
|
|
2297
|
+
const [innerValue, setInnerValue] = useState9(defaultValue ?? "");
|
|
2298
|
+
const current2 = isControlled ? value3 ?? "" : innerValue;
|
|
2178
2299
|
const generatedId = useId8();
|
|
2179
2300
|
const baseId = id ?? generatedId;
|
|
2180
|
-
const labelId =
|
|
2301
|
+
const labelId = label5 ? `${baseId}-label` : void 0;
|
|
2181
2302
|
const helperId = helperText3 ? `${baseId}-helper` : void 0;
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2303
|
+
const groupName = name ?? `${baseId}-radio`;
|
|
2304
|
+
const detachedForm = name ? void 0 : `${baseId}-no-form`;
|
|
2305
|
+
const handleChange = (next) => {
|
|
2306
|
+
if (next === current2) return;
|
|
2307
|
+
if (!isControlled) setInnerValue(next);
|
|
2308
|
+
onValueChange?.(next);
|
|
2309
|
+
};
|
|
2310
|
+
return /* @__PURE__ */ jsxs23("div", { className: cx(field, className), children: [
|
|
2311
|
+
label5 && /* @__PURE__ */ jsxs23("span", { id: labelId, className: cx(label, groupLabel), children: [
|
|
2312
|
+
label5,
|
|
2313
|
+
required && /* @__PURE__ */ jsx28("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
2186
2314
|
] }),
|
|
2187
|
-
/* @__PURE__ */
|
|
2188
|
-
|
|
2315
|
+
/* @__PURE__ */ jsx28(
|
|
2316
|
+
"div",
|
|
2189
2317
|
{
|
|
2190
2318
|
ref,
|
|
2191
2319
|
id: baseId,
|
|
2192
|
-
|
|
2193
|
-
defaultValue,
|
|
2194
|
-
onValueChange,
|
|
2195
|
-
orientation,
|
|
2196
|
-
disabled,
|
|
2197
|
-
required,
|
|
2198
|
-
name,
|
|
2320
|
+
role: "radiogroup",
|
|
2199
2321
|
"aria-label": ariaLabel,
|
|
2200
2322
|
"aria-labelledby": labelId,
|
|
2201
2323
|
"aria-describedby": helperId,
|
|
2202
2324
|
"aria-invalid": error || void 0,
|
|
2325
|
+
"aria-required": required || void 0,
|
|
2326
|
+
"data-disabled": disabled || void 0,
|
|
2203
2327
|
className: items({ orientation }),
|
|
2204
2328
|
children: options.map((option2) => {
|
|
2205
2329
|
const itemId = `${baseId}-${option2.value}`;
|
|
2206
2330
|
const descriptionId = option2.description ? `${itemId}-description` : void 0;
|
|
2207
2331
|
const itemDisabled = disabled || option2.disabled;
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2332
|
+
const checked = option2.value === current2;
|
|
2333
|
+
return /* @__PURE__ */ jsxs23("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
|
|
2334
|
+
/* @__PURE__ */ jsx28(
|
|
2335
|
+
"input",
|
|
2211
2336
|
{
|
|
2337
|
+
type: "radio",
|
|
2212
2338
|
id: itemId,
|
|
2339
|
+
name: groupName,
|
|
2340
|
+
form: detachedForm,
|
|
2213
2341
|
value: option2.value,
|
|
2214
|
-
|
|
2342
|
+
checked,
|
|
2343
|
+
onChange: () => handleChange(option2.value),
|
|
2344
|
+
disabled: itemDisabled,
|
|
2345
|
+
required,
|
|
2215
2346
|
"aria-describedby": descriptionId,
|
|
2216
|
-
|
|
2217
|
-
|
|
2347
|
+
"data-state": checked ? "checked" : "unchecked",
|
|
2348
|
+
className: radio({ size })
|
|
2218
2349
|
}
|
|
2219
2350
|
),
|
|
2220
|
-
/* @__PURE__ */
|
|
2221
|
-
/* @__PURE__ */
|
|
2222
|
-
option2.description && /* @__PURE__ */
|
|
2351
|
+
/* @__PURE__ */ jsxs23("span", { className: text, children: [
|
|
2352
|
+
/* @__PURE__ */ jsx28("label", { htmlFor: itemId, className: labelText, children: option2.label }),
|
|
2353
|
+
option2.description && /* @__PURE__ */ jsx28("span", { id: descriptionId, className: description4, children: option2.description })
|
|
2223
2354
|
] })
|
|
2224
2355
|
] }, option2.value);
|
|
2225
2356
|
})
|
|
2226
2357
|
}
|
|
2227
2358
|
),
|
|
2228
|
-
helperText3 && /* @__PURE__ */
|
|
2359
|
+
helperText3 && /* @__PURE__ */ jsx28("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
2229
2360
|
] });
|
|
2230
2361
|
});
|
|
2231
2362
|
|
|
2363
|
+
// src/components/SegmentedControl/SegmentedControl.tsx
|
|
2364
|
+
import { forwardRef as forwardRef25, useId as useId9, useRef as useRef12, useState as useState10 } from "react";
|
|
2365
|
+
|
|
2366
|
+
// src/components/SegmentedControl/SegmentedControl.css.ts
|
|
2367
|
+
import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2368
|
+
var icon5 = "_1h65mmo7";
|
|
2369
|
+
var item7 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo2", variantClassNames: { size: { sm: "_1h65mmo3", md: "_1h65mmo4", lg: "_1h65mmo5" }, fullWidth: { true: "_1h65mmo6" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2370
|
+
var root7 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo0", variantClassNames: { fullWidth: { true: "_1h65mmo1" } }, defaultVariants: {}, compoundVariants: [] });
|
|
2371
|
+
|
|
2372
|
+
// src/components/SegmentedControl/SegmentedControl.tsx
|
|
2373
|
+
import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2374
|
+
var NEXT_KEYS = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 };
|
|
2375
|
+
var SegmentedControl = /* @__PURE__ */ forwardRef25(
|
|
2376
|
+
function SegmentedControl2(props, ref) {
|
|
2377
|
+
const {
|
|
2378
|
+
options,
|
|
2379
|
+
value: value3,
|
|
2380
|
+
defaultValue,
|
|
2381
|
+
onValueChange,
|
|
2382
|
+
label: label5,
|
|
2383
|
+
"aria-label": ariaLabel,
|
|
2384
|
+
size,
|
|
2385
|
+
fullWidth,
|
|
2386
|
+
disabled,
|
|
2387
|
+
name,
|
|
2388
|
+
id,
|
|
2389
|
+
className
|
|
2390
|
+
} = props;
|
|
2391
|
+
const isControlled = "value" in props;
|
|
2392
|
+
const [innerValue, setInnerValue] = useState10(defaultValue ?? "");
|
|
2393
|
+
const current2 = isControlled ? value3 ?? "" : innerValue;
|
|
2394
|
+
const generatedId = useId9();
|
|
2395
|
+
const labelId = label5 ? `${id ?? generatedId}-label` : void 0;
|
|
2396
|
+
const itemRefs = useRef12([]);
|
|
2397
|
+
const isEnabled = (index) => !disabled && !options[index]?.disabled;
|
|
2398
|
+
const select = (index) => {
|
|
2399
|
+
const next = options[index].value;
|
|
2400
|
+
if (next === current2) return;
|
|
2401
|
+
if (!isControlled) setInnerValue(next);
|
|
2402
|
+
onValueChange?.(next);
|
|
2403
|
+
};
|
|
2404
|
+
const checkedIndex = options.findIndex((option2) => option2.value === current2);
|
|
2405
|
+
const tabStop = checkedIndex >= 0 && isEnabled(checkedIndex) ? checkedIndex : options.findIndex((_, i) => isEnabled(i));
|
|
2406
|
+
const handleKeyDown = (event, index) => {
|
|
2407
|
+
let target = -1;
|
|
2408
|
+
const step = NEXT_KEYS[event.key];
|
|
2409
|
+
if (step) {
|
|
2410
|
+
for (let i = 1; i <= options.length; i++) {
|
|
2411
|
+
const candidate = (index + step * i + options.length) % options.length;
|
|
2412
|
+
if (isEnabled(candidate)) {
|
|
2413
|
+
target = candidate;
|
|
2414
|
+
break;
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
} else if (event.key === "Home") {
|
|
2418
|
+
target = options.findIndex((_, i) => isEnabled(i));
|
|
2419
|
+
} else if (event.key === "End") {
|
|
2420
|
+
for (let i = options.length - 1; i >= 0 && target < 0; i--) if (isEnabled(i)) target = i;
|
|
2421
|
+
}
|
|
2422
|
+
if (target < 0) return;
|
|
2423
|
+
event.preventDefault();
|
|
2424
|
+
itemRefs.current[target]?.focus();
|
|
2425
|
+
select(target);
|
|
2426
|
+
};
|
|
2427
|
+
const group = /* @__PURE__ */ jsxs24(
|
|
2428
|
+
"div",
|
|
2429
|
+
{
|
|
2430
|
+
ref,
|
|
2431
|
+
id,
|
|
2432
|
+
role: "radiogroup",
|
|
2433
|
+
"aria-labelledby": labelId,
|
|
2434
|
+
"aria-label": label5 ? void 0 : ariaLabel,
|
|
2435
|
+
"aria-disabled": disabled || void 0,
|
|
2436
|
+
className: cx(root7({ fullWidth }), !label5 && className),
|
|
2437
|
+
children: [
|
|
2438
|
+
options.map((option2, index) => {
|
|
2439
|
+
const checked = index === checkedIndex;
|
|
2440
|
+
return /* @__PURE__ */ jsxs24(
|
|
2441
|
+
"button",
|
|
2442
|
+
{
|
|
2443
|
+
ref: (node) => {
|
|
2444
|
+
itemRefs.current[index] = node;
|
|
2445
|
+
},
|
|
2446
|
+
type: "button",
|
|
2447
|
+
role: "radio",
|
|
2448
|
+
"aria-checked": checked,
|
|
2449
|
+
tabIndex: index === tabStop ? 0 : -1,
|
|
2450
|
+
disabled: !isEnabled(index),
|
|
2451
|
+
"data-state": checked ? "checked" : "unchecked",
|
|
2452
|
+
"data-disabled": isEnabled(index) ? void 0 : "",
|
|
2453
|
+
className: item7({ size, fullWidth }),
|
|
2454
|
+
onClick: () => select(index),
|
|
2455
|
+
onKeyDown: (event) => handleKeyDown(event, index),
|
|
2456
|
+
children: [
|
|
2457
|
+
option2.icon && /* @__PURE__ */ jsx29("span", { "aria-hidden": true, className: icon5, children: option2.icon }),
|
|
2458
|
+
option2.label
|
|
2459
|
+
]
|
|
2460
|
+
},
|
|
2461
|
+
option2.value
|
|
2462
|
+
);
|
|
2463
|
+
}),
|
|
2464
|
+
name && /* @__PURE__ */ jsx29("input", { type: "hidden", name, value: current2 })
|
|
2465
|
+
]
|
|
2466
|
+
}
|
|
2467
|
+
);
|
|
2468
|
+
if (!label5) return group;
|
|
2469
|
+
return /* @__PURE__ */ jsxs24("div", { className: cx(field, className), children: [
|
|
2470
|
+
/* @__PURE__ */ jsx29("span", { id: labelId, className: label, children: label5 }),
|
|
2471
|
+
group
|
|
2472
|
+
] });
|
|
2473
|
+
}
|
|
2474
|
+
);
|
|
2475
|
+
|
|
2232
2476
|
// src/components/Select/Select.tsx
|
|
2233
2477
|
import * as RadixSelect from "@radix-ui/react-select";
|
|
2234
|
-
import { forwardRef as
|
|
2235
|
-
import { CheckIcon as
|
|
2236
|
-
import { jsx as
|
|
2237
|
-
var Select = /* @__PURE__ */
|
|
2478
|
+
import { forwardRef as forwardRef26, useId as useId10 } from "react";
|
|
2479
|
+
import { CheckIcon as CheckIcon3, ChevronDownIcon as ChevronDownIcon4 } from "@bestow-ui/icons";
|
|
2480
|
+
import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2481
|
+
var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
|
|
2238
2482
|
const {
|
|
2239
2483
|
options,
|
|
2240
|
-
value:
|
|
2484
|
+
value: value3,
|
|
2241
2485
|
defaultValue,
|
|
2242
2486
|
onValueChange,
|
|
2243
2487
|
placeholder,
|
|
2244
|
-
label:
|
|
2488
|
+
label: label5,
|
|
2245
2489
|
helperText: helperText3,
|
|
2246
2490
|
error,
|
|
2247
2491
|
size,
|
|
@@ -2254,26 +2498,26 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
|
|
|
2254
2498
|
className
|
|
2255
2499
|
} = props;
|
|
2256
2500
|
const isControlled = "value" in props;
|
|
2257
|
-
const generatedId =
|
|
2501
|
+
const generatedId = useId10();
|
|
2258
2502
|
const triggerId = id ?? generatedId;
|
|
2259
2503
|
const helperId = helperText3 ? `${triggerId}-helper` : void 0;
|
|
2260
2504
|
const portal2 = usePortalProps();
|
|
2261
|
-
return /* @__PURE__ */
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
required && /* @__PURE__ */
|
|
2505
|
+
return /* @__PURE__ */ jsxs25("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
2506
|
+
label5 && /* @__PURE__ */ jsxs25("label", { htmlFor: triggerId, className: label, children: [
|
|
2507
|
+
label5,
|
|
2508
|
+
required && /* @__PURE__ */ jsx30("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
2265
2509
|
] }),
|
|
2266
|
-
/* @__PURE__ */
|
|
2510
|
+
/* @__PURE__ */ jsxs25(
|
|
2267
2511
|
RadixSelect.Root,
|
|
2268
2512
|
{
|
|
2269
|
-
value: isControlled ?
|
|
2513
|
+
value: isControlled ? value3 ?? "" : void 0,
|
|
2270
2514
|
defaultValue,
|
|
2271
2515
|
onValueChange,
|
|
2272
2516
|
disabled,
|
|
2273
2517
|
required,
|
|
2274
2518
|
name,
|
|
2275
2519
|
children: [
|
|
2276
|
-
/* @__PURE__ */
|
|
2520
|
+
/* @__PURE__ */ jsxs25(
|
|
2277
2521
|
RadixSelect.Trigger,
|
|
2278
2522
|
{
|
|
2279
2523
|
ref,
|
|
@@ -2284,12 +2528,12 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
|
|
|
2284
2528
|
"data-invalid": error || void 0,
|
|
2285
2529
|
className: cx(root3({ size, fullWidth }), trigger2, className),
|
|
2286
2530
|
children: [
|
|
2287
|
-
/* @__PURE__ */
|
|
2288
|
-
/* @__PURE__ */
|
|
2531
|
+
/* @__PURE__ */ jsx30("span", { className: value, children: /* @__PURE__ */ jsx30(RadixSelect.Value, { placeholder }) }),
|
|
2532
|
+
/* @__PURE__ */ jsx30(RadixSelect.Icon, { className: icon3, children: /* @__PURE__ */ jsx30(ChevronDownIcon4, { size: 16 }) })
|
|
2289
2533
|
]
|
|
2290
2534
|
}
|
|
2291
2535
|
),
|
|
2292
|
-
/* @__PURE__ */
|
|
2536
|
+
/* @__PURE__ */ jsx30(RadixSelect.Portal, { children: /* @__PURE__ */ jsx30(
|
|
2293
2537
|
RadixSelect.Content,
|
|
2294
2538
|
{
|
|
2295
2539
|
position: "popper",
|
|
@@ -2297,15 +2541,15 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
|
|
|
2297
2541
|
collisionPadding: 8,
|
|
2298
2542
|
className: cx(portal2.className, content5),
|
|
2299
2543
|
style: portal2.style,
|
|
2300
|
-
children: /* @__PURE__ */
|
|
2544
|
+
children: /* @__PURE__ */ jsx30(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs25(
|
|
2301
2545
|
RadixSelect.Item,
|
|
2302
2546
|
{
|
|
2303
2547
|
value: option2.value,
|
|
2304
2548
|
disabled: option2.disabled,
|
|
2305
2549
|
className: item4,
|
|
2306
2550
|
children: [
|
|
2307
|
-
/* @__PURE__ */
|
|
2308
|
-
/* @__PURE__ */
|
|
2551
|
+
/* @__PURE__ */ jsx30(RadixSelect.ItemText, { children: option2.label }),
|
|
2552
|
+
/* @__PURE__ */ jsx30(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx30(CheckIcon3, { size: 16 }) })
|
|
2309
2553
|
]
|
|
2310
2554
|
},
|
|
2311
2555
|
option2.value
|
|
@@ -2315,85 +2559,59 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
|
|
|
2315
2559
|
]
|
|
2316
2560
|
}
|
|
2317
2561
|
),
|
|
2318
|
-
helperText3 && /* @__PURE__ */
|
|
2562
|
+
helperText3 && /* @__PURE__ */ jsx30("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
2319
2563
|
] });
|
|
2320
2564
|
});
|
|
2321
2565
|
|
|
2322
|
-
// src/components/
|
|
2323
|
-
import {
|
|
2324
|
-
import { forwardRef as forwardRef29 } from "react";
|
|
2566
|
+
// src/components/SkipLink/SkipLink.tsx
|
|
2567
|
+
import { forwardRef as forwardRef27 } from "react";
|
|
2325
2568
|
|
|
2326
|
-
// src/components/
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
var
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
"aria-hidden": true,
|
|
2345
|
-
className: cx(lines, className),
|
|
2346
|
-
style: { ...assignInlineVars({ [width]: w }), ...style },
|
|
2347
|
-
...rest,
|
|
2348
|
-
children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ jsx33(
|
|
2349
|
-
"span",
|
|
2350
|
-
{
|
|
2351
|
-
className: skeleton({ variant }),
|
|
2352
|
-
style: assignInlineVars({ [width]: i === lines2 - 1 ? "60%" : "100%", [height]: h })
|
|
2353
|
-
},
|
|
2354
|
-
i
|
|
2355
|
-
))
|
|
2356
|
-
}
|
|
2357
|
-
);
|
|
2358
|
-
}
|
|
2359
|
-
return /* @__PURE__ */ jsx33(
|
|
2360
|
-
"span",
|
|
2361
|
-
{
|
|
2362
|
-
ref,
|
|
2363
|
-
"aria-hidden": true,
|
|
2364
|
-
className: cx(skeleton({ variant }), className),
|
|
2365
|
-
style: { ...assignInlineVars({ [width]: w, [height]: h }), ...style },
|
|
2366
|
-
...rest
|
|
2367
|
-
}
|
|
2368
|
-
);
|
|
2569
|
+
// src/components/SkipLink/SkipLink.css.ts
|
|
2570
|
+
var skipLink = "_1t9jaar0";
|
|
2571
|
+
|
|
2572
|
+
// src/components/SkipLink/SkipLink.tsx
|
|
2573
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2574
|
+
var SkipLink = /* @__PURE__ */ forwardRef27(function SkipLink2({ href = "#main", className, children, onClick, ...rest }, ref) {
|
|
2575
|
+
const m = useMessages();
|
|
2576
|
+
const handleClick = (event) => {
|
|
2577
|
+
onClick?.(event);
|
|
2578
|
+
if (event.defaultPrevented || !href.startsWith("#")) return;
|
|
2579
|
+
const target = document.getElementById(decodeURIComponent(href.slice(1)));
|
|
2580
|
+
if (!target) return;
|
|
2581
|
+
event.preventDefault();
|
|
2582
|
+
if (!target.hasAttribute("tabindex")) target.setAttribute("tabindex", "-1");
|
|
2583
|
+
target.focus();
|
|
2584
|
+
target.scrollIntoView?.({ block: "start" });
|
|
2585
|
+
};
|
|
2586
|
+
return /* @__PURE__ */ jsx31("a", { ref, href, className: cx(skipLink, className), onClick: handleClick, ...rest, children: children ?? m.skipToContent ?? "\uBCF8\uBB38 \uBC14\uB85C\uAC00\uAE30" });
|
|
2369
2587
|
});
|
|
2370
2588
|
|
|
2371
2589
|
// src/components/Slider/Slider.tsx
|
|
2372
2590
|
import * as RadixSlider from "@radix-ui/react-slider";
|
|
2373
|
-
import { forwardRef as
|
|
2591
|
+
import { forwardRef as forwardRef28, useId as useId11, useState as useState11 } from "react";
|
|
2374
2592
|
|
|
2375
2593
|
// src/components/Slider/Slider.css.ts
|
|
2376
|
-
import { createRuntimeFn as
|
|
2594
|
+
import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2377
2595
|
var field2 = "_126mzjm0";
|
|
2378
|
-
var
|
|
2596
|
+
var header6 = "_126mzjm1";
|
|
2379
2597
|
var helperText2 = "_126mzjm4";
|
|
2380
|
-
var
|
|
2598
|
+
var label3 = "_126mzjm2";
|
|
2381
2599
|
var range2 = "_126mzjmb";
|
|
2382
|
-
var root8 = /* @__PURE__ */
|
|
2383
|
-
var thumb = /* @__PURE__ */
|
|
2384
|
-
var
|
|
2385
|
-
var
|
|
2600
|
+
var root8 = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm5", variantClassNames: { size: { sm: "_126mzjm6", md: "_126mzjm7" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2601
|
+
var thumb = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjmc", variantClassNames: { size: { sm: "_126mzjmd", md: "_126mzjme" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2602
|
+
var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm8", variantClassNames: { size: { sm: "_126mzjm9", md: "_126mzjma" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2603
|
+
var value2 = "_126mzjm3";
|
|
2386
2604
|
|
|
2387
2605
|
// src/components/Slider/Slider.tsx
|
|
2388
|
-
import { jsx as
|
|
2389
|
-
var Slider = /* @__PURE__ */
|
|
2606
|
+
import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2607
|
+
var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
|
|
2390
2608
|
const {
|
|
2391
|
-
value:
|
|
2609
|
+
value: value3,
|
|
2392
2610
|
defaultValue,
|
|
2393
2611
|
onValueChange,
|
|
2394
2612
|
min = 0,
|
|
2395
2613
|
max = 100,
|
|
2396
|
-
label:
|
|
2614
|
+
label: label5,
|
|
2397
2615
|
"aria-label": ariaLabel,
|
|
2398
2616
|
helperText: helperText3,
|
|
2399
2617
|
showValue,
|
|
@@ -2407,25 +2625,25 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
|
|
|
2407
2625
|
} = props;
|
|
2408
2626
|
const m = useMessages();
|
|
2409
2627
|
const thumbLabels = thumbLabelsProp ?? [m.rangeStart ?? "\uCD5C\uC18C", m.rangeEnd ?? "\uCD5C\uB300"];
|
|
2410
|
-
const generatedId =
|
|
2628
|
+
const generatedId = useId11();
|
|
2411
2629
|
const baseId = id ?? generatedId;
|
|
2412
2630
|
const labelId = `${baseId}-label`;
|
|
2413
2631
|
const helperId = `${baseId}-helper`;
|
|
2414
2632
|
const isControlled = "value" in props;
|
|
2415
|
-
const [innerValue, setInnerValue] =
|
|
2416
|
-
const current2 = isControlled ?
|
|
2633
|
+
const [innerValue, setInnerValue] = useState11(defaultValue ?? [min]);
|
|
2634
|
+
const current2 = isControlled ? value3 ?? [min] : innerValue;
|
|
2417
2635
|
const isRange = current2.length > 1;
|
|
2418
2636
|
const handleChange = (next) => {
|
|
2419
2637
|
if (!isControlled) setInnerValue(next);
|
|
2420
2638
|
onValueChange?.(next);
|
|
2421
2639
|
};
|
|
2422
2640
|
const valueText = current2.map(formatValue).join(" \u2013 ");
|
|
2423
|
-
return /* @__PURE__ */
|
|
2424
|
-
(
|
|
2425
|
-
|
|
2426
|
-
showValue && /* @__PURE__ */
|
|
2641
|
+
return /* @__PURE__ */ jsxs26("div", { className: cx(field2, className), children: [
|
|
2642
|
+
(label5 || showValue) && /* @__PURE__ */ jsxs26("div", { className: header6, children: [
|
|
2643
|
+
label5 && /* @__PURE__ */ jsx32("span", { id: labelId, className: label3, children: label5 }),
|
|
2644
|
+
showValue && /* @__PURE__ */ jsx32("span", { className: value2, "aria-hidden": true, children: valueText })
|
|
2427
2645
|
] }),
|
|
2428
|
-
/* @__PURE__ */
|
|
2646
|
+
/* @__PURE__ */ jsxs26(
|
|
2429
2647
|
RadixSlider.Root,
|
|
2430
2648
|
{
|
|
2431
2649
|
ref,
|
|
@@ -2438,15 +2656,15 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
|
|
|
2438
2656
|
className: root8({ size }),
|
|
2439
2657
|
...rest,
|
|
2440
2658
|
children: [
|
|
2441
|
-
/* @__PURE__ */
|
|
2659
|
+
/* @__PURE__ */ jsx32(RadixSlider.Track, { className: track({ size }), children: /* @__PURE__ */ jsx32(RadixSlider.Range, { className: range2 }) }),
|
|
2442
2660
|
current2.map((thumbValue, index) => {
|
|
2443
2661
|
const thumbLabelId = `${baseId}-thumb-${index}`;
|
|
2444
|
-
return /* @__PURE__ */
|
|
2662
|
+
return /* @__PURE__ */ jsx32(
|
|
2445
2663
|
RadixSlider.Thumb,
|
|
2446
2664
|
{
|
|
2447
2665
|
className: thumb({ size }),
|
|
2448
|
-
"aria-labelledby":
|
|
2449
|
-
"aria-label":
|
|
2666
|
+
"aria-labelledby": label5 ? isRange ? `${labelId} ${thumbLabelId}` : labelId : isRange ? thumbLabelId : void 0,
|
|
2667
|
+
"aria-label": label5 ? void 0 : isRange ? void 0 : ariaLabel,
|
|
2450
2668
|
"aria-valuetext": formatValue(thumbValue),
|
|
2451
2669
|
"aria-describedby": helperText3 ? helperId : void 0
|
|
2452
2670
|
},
|
|
@@ -2456,79 +2674,66 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
|
|
|
2456
2674
|
]
|
|
2457
2675
|
}
|
|
2458
2676
|
),
|
|
2459
|
-
isRange && current2.map((_, index) => /* @__PURE__ */
|
|
2460
|
-
|
|
2677
|
+
isRange && current2.map((_, index) => /* @__PURE__ */ jsxs26("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
|
|
2678
|
+
label5 ? "" : ariaLabel ? `${ariaLabel} ` : "",
|
|
2461
2679
|
thumbLabels[index] ?? `${index + 1}`
|
|
2462
2680
|
] }, index)),
|
|
2463
|
-
helperText3 && /* @__PURE__ */
|
|
2681
|
+
helperText3 && /* @__PURE__ */ jsx32("span", { id: helperId, className: helperText2, children: helperText3 })
|
|
2464
2682
|
] });
|
|
2465
2683
|
});
|
|
2466
2684
|
|
|
2467
|
-
// src/components/Stack/Stack.tsx
|
|
2468
|
-
import { forwardRef as forwardRef31 } from "react";
|
|
2469
|
-
|
|
2470
|
-
// src/components/Stack/Stack.css.ts
|
|
2471
|
-
import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2472
|
-
var stack = /* @__PURE__ */ _7a46819({ defaultClassName: "_1jz9hj90", variantClassNames: { direction: { row: "_1jz9hj91", column: "_1jz9hj92", "row-reverse": "_1jz9hj93", "column-reverse": "_1jz9hj94" }, gap: { "0": "_1jz9hj95", "1": "_1jz9hj96", "2": "_1jz9hj97", "3": "_1jz9hj98", "4": "_1jz9hj99", "5": "_1jz9hj9a", "6": "_1jz9hj9b", "8": "_1jz9hj9c", "10": "_1jz9hj9d", "12": "_1jz9hj9e", "16": "_1jz9hj9f" }, align: { start: "_1jz9hj9g", center: "_1jz9hj9h", end: "_1jz9hj9i", stretch: "_1jz9hj9j", baseline: "_1jz9hj9k" }, justify: { start: "_1jz9hj9l", center: "_1jz9hj9m", end: "_1jz9hj9n", between: "_1jz9hj9o", around: "_1jz9hj9p", evenly: "_1jz9hj9q" }, wrap: { true: "_1jz9hj9r" } }, defaultVariants: { direction: "column" }, compoundVariants: [] });
|
|
2473
|
-
|
|
2474
|
-
// src/components/Stack/Stack.tsx
|
|
2475
|
-
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2476
|
-
var Stack = /* @__PURE__ */ forwardRef31(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
|
|
2477
|
-
return /* @__PURE__ */ jsx35(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
|
|
2478
|
-
});
|
|
2479
|
-
|
|
2480
2685
|
// src/components/Switch/Switch.tsx
|
|
2481
2686
|
import * as RadixSwitch from "@radix-ui/react-switch";
|
|
2482
|
-
import { forwardRef as
|
|
2687
|
+
import { forwardRef as forwardRef29, useId as useId12 } from "react";
|
|
2483
2688
|
|
|
2484
2689
|
// src/components/Switch/Switch.css.ts
|
|
2485
|
-
import { createRuntimeFn as
|
|
2486
|
-
var
|
|
2487
|
-
var root9 = /* @__PURE__ */
|
|
2488
|
-
var thumb2 = /* @__PURE__ */
|
|
2489
|
-
var
|
|
2690
|
+
import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2691
|
+
var label4 = "o33ul29";
|
|
2692
|
+
var root9 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2693
|
+
var thumb2 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2694
|
+
var track2 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2490
2695
|
|
|
2491
2696
|
// src/components/Switch/Switch.tsx
|
|
2492
|
-
import { jsx as
|
|
2493
|
-
var Switch = /* @__PURE__ */
|
|
2494
|
-
const generatedId =
|
|
2697
|
+
import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2698
|
+
var Switch = /* @__PURE__ */ forwardRef29(function Switch2({ label: label5, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
|
|
2699
|
+
const generatedId = useId12();
|
|
2495
2700
|
const switchId = id ?? generatedId;
|
|
2496
|
-
return /* @__PURE__ */
|
|
2497
|
-
/* @__PURE__ */
|
|
2701
|
+
return /* @__PURE__ */ jsxs27("span", { className: cx(root9({ size }), className), "data-disabled": disabled || void 0, children: [
|
|
2702
|
+
/* @__PURE__ */ jsx33(
|
|
2498
2703
|
RadixSwitch.Root,
|
|
2499
2704
|
{
|
|
2500
2705
|
ref,
|
|
2501
2706
|
id: switchId,
|
|
2502
2707
|
disabled,
|
|
2503
2708
|
"aria-label": ariaLabel,
|
|
2504
|
-
className:
|
|
2709
|
+
className: track2({ size }),
|
|
2505
2710
|
...rest,
|
|
2506
|
-
children: /* @__PURE__ */
|
|
2711
|
+
children: /* @__PURE__ */ jsx33(RadixSwitch.Thumb, { className: thumb2({ size }) })
|
|
2507
2712
|
}
|
|
2508
2713
|
),
|
|
2509
|
-
|
|
2714
|
+
label5 && /* @__PURE__ */ jsx33("label", { htmlFor: switchId, className: label4, children: label5 })
|
|
2510
2715
|
] });
|
|
2511
2716
|
});
|
|
2512
2717
|
|
|
2513
2718
|
// src/components/Table/Table.tsx
|
|
2514
2719
|
import {
|
|
2515
2720
|
createContext as createContext3,
|
|
2516
|
-
forwardRef as
|
|
2721
|
+
forwardRef as forwardRef30,
|
|
2517
2722
|
useContext as useContext3,
|
|
2518
|
-
useId as
|
|
2723
|
+
useId as useId13
|
|
2519
2724
|
} from "react";
|
|
2520
2725
|
import { ArrowDownIcon, ArrowUpIcon } from "@bestow-ui/icons";
|
|
2521
2726
|
|
|
2522
2727
|
// src/components/Table/Table.css.ts
|
|
2523
|
-
import { createRuntimeFn as
|
|
2524
|
-
var
|
|
2728
|
+
import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2729
|
+
var body3 = "l3ploy5";
|
|
2525
2730
|
var caption = "l3ploy2";
|
|
2526
|
-
var cell2 = /* @__PURE__ */
|
|
2731
|
+
var cell2 = /* @__PURE__ */ _7a46817({ defaultClassName: "l3ploy9", variantClassNames: { size: { sm: "l3ploya", md: "l3ployb" }, align: { left: "l3ployc", center: "l3ployd", right: "l3ploye" } }, defaultVariants: { size: "md", align: "left" }, compoundVariants: [] });
|
|
2527
2732
|
var container = "l3ploy0";
|
|
2528
|
-
var
|
|
2733
|
+
var footer3 = "l3ploy7";
|
|
2529
2734
|
var footerCell = "l3ployg";
|
|
2530
2735
|
var head = "l3ployf";
|
|
2531
|
-
var
|
|
2736
|
+
var header7 = "l3ploy3";
|
|
2532
2737
|
var row3 = "l3ploy8";
|
|
2533
2738
|
var sortButton = "l3ployh";
|
|
2534
2739
|
var sortIcon = "l3ployi";
|
|
@@ -2537,10 +2742,10 @@ var striped = "l3ploy6";
|
|
|
2537
2742
|
var table = "l3ploy1";
|
|
2538
2743
|
|
|
2539
2744
|
// src/components/Table/Table.tsx
|
|
2540
|
-
import { jsx as
|
|
2745
|
+
import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2541
2746
|
var TableSizeContext = /* @__PURE__ */ createContext3("md");
|
|
2542
2747
|
var TableSectionContext = /* @__PURE__ */ createContext3("body");
|
|
2543
|
-
var Table = /* @__PURE__ */
|
|
2748
|
+
var Table = /* @__PURE__ */ forwardRef30(function Table2({
|
|
2544
2749
|
size = "md",
|
|
2545
2750
|
striped: striped2,
|
|
2546
2751
|
stickyHeader: stickyHeader2,
|
|
@@ -2552,8 +2757,8 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
|
|
|
2552
2757
|
children,
|
|
2553
2758
|
...rest
|
|
2554
2759
|
}, ref) {
|
|
2555
|
-
const captionId =
|
|
2556
|
-
return /* @__PURE__ */
|
|
2760
|
+
const captionId = useId13();
|
|
2761
|
+
return /* @__PURE__ */ jsx34(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx34(
|
|
2557
2762
|
"div",
|
|
2558
2763
|
{
|
|
2559
2764
|
className: cx(container, containerClassName),
|
|
@@ -2562,7 +2767,7 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
|
|
|
2562
2767
|
role: "region",
|
|
2563
2768
|
"aria-labelledby": caption2 ? captionId : void 0,
|
|
2564
2769
|
"aria-label": caption2 ? void 0 : ariaLabel,
|
|
2565
|
-
children: /* @__PURE__ */
|
|
2770
|
+
children: /* @__PURE__ */ jsxs28(
|
|
2566
2771
|
"table",
|
|
2567
2772
|
{
|
|
2568
2773
|
ref,
|
|
@@ -2570,7 +2775,7 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
|
|
|
2570
2775
|
"aria-label": caption2 ? void 0 : ariaLabel,
|
|
2571
2776
|
...rest,
|
|
2572
2777
|
children: [
|
|
2573
|
-
caption2 && /* @__PURE__ */
|
|
2778
|
+
caption2 && /* @__PURE__ */ jsx34("caption", { id: captionId, className: caption, children: caption2 }),
|
|
2574
2779
|
children
|
|
2575
2780
|
]
|
|
2576
2781
|
}
|
|
@@ -2578,31 +2783,31 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
|
|
|
2578
2783
|
}
|
|
2579
2784
|
) });
|
|
2580
2785
|
});
|
|
2581
|
-
var TableHeader = /* @__PURE__ */
|
|
2786
|
+
var TableHeader = /* @__PURE__ */ forwardRef30(
|
|
2582
2787
|
function TableHeader2({ className, ...rest }, ref) {
|
|
2583
|
-
return /* @__PURE__ */
|
|
2788
|
+
return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx34("thead", { ref, className: cx(header7, className), ...rest }) });
|
|
2584
2789
|
}
|
|
2585
2790
|
);
|
|
2586
|
-
var TableBody = /* @__PURE__ */
|
|
2791
|
+
var TableBody = /* @__PURE__ */ forwardRef30(
|
|
2587
2792
|
function TableBody2({ className, ...rest }, ref) {
|
|
2588
|
-
return /* @__PURE__ */
|
|
2793
|
+
return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx34("tbody", { ref, className: cx(body3, className), ...rest }) });
|
|
2589
2794
|
}
|
|
2590
2795
|
);
|
|
2591
|
-
var TableFooter = /* @__PURE__ */
|
|
2796
|
+
var TableFooter = /* @__PURE__ */ forwardRef30(
|
|
2592
2797
|
function TableFooter2({ className, ...rest }, ref) {
|
|
2593
|
-
return /* @__PURE__ */
|
|
2798
|
+
return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx34("tfoot", { ref, className: cx(footer3, className), ...rest }) });
|
|
2594
2799
|
}
|
|
2595
2800
|
);
|
|
2596
|
-
var TableRow = /* @__PURE__ */
|
|
2597
|
-
return /* @__PURE__ */
|
|
2801
|
+
var TableRow = /* @__PURE__ */ forwardRef30(function TableRow2({ selected, className, ...rest }, ref) {
|
|
2802
|
+
return /* @__PURE__ */ jsx34("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
|
|
2598
2803
|
});
|
|
2599
|
-
var TableHead = /* @__PURE__ */
|
|
2804
|
+
var TableHead = /* @__PURE__ */ forwardRef30(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
|
|
2600
2805
|
const size = useContext3(TableSizeContext);
|
|
2601
2806
|
const section = useContext3(TableSectionContext);
|
|
2602
2807
|
const sortable = onSort !== void 0;
|
|
2603
2808
|
const direction = sortDirection ?? "none";
|
|
2604
2809
|
const SortIcon = direction === "descending" ? ArrowDownIcon : ArrowUpIcon;
|
|
2605
|
-
return /* @__PURE__ */
|
|
2810
|
+
return /* @__PURE__ */ jsx34(
|
|
2606
2811
|
"th",
|
|
2607
2812
|
{
|
|
2608
2813
|
ref,
|
|
@@ -2614,17 +2819,17 @@ var TableHead = /* @__PURE__ */ forwardRef33(function TableHead2({ align, sortDi
|
|
|
2614
2819
|
className
|
|
2615
2820
|
),
|
|
2616
2821
|
...rest,
|
|
2617
|
-
children: sortable ? /* @__PURE__ */
|
|
2822
|
+
children: sortable ? /* @__PURE__ */ jsxs28("button", { type: "button", className: sortButton, onClick: onSort, children: [
|
|
2618
2823
|
children,
|
|
2619
|
-
/* @__PURE__ */
|
|
2824
|
+
/* @__PURE__ */ jsx34(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
|
|
2620
2825
|
] }) : children
|
|
2621
2826
|
}
|
|
2622
2827
|
);
|
|
2623
2828
|
});
|
|
2624
|
-
var TableCell = /* @__PURE__ */
|
|
2829
|
+
var TableCell = /* @__PURE__ */ forwardRef30(function TableCell2({ align, className, ...rest }, ref) {
|
|
2625
2830
|
const size = useContext3(TableSizeContext);
|
|
2626
2831
|
const section = useContext3(TableSectionContext);
|
|
2627
|
-
return /* @__PURE__ */
|
|
2832
|
+
return /* @__PURE__ */ jsx34(
|
|
2628
2833
|
"td",
|
|
2629
2834
|
{
|
|
2630
2835
|
ref,
|
|
@@ -2636,54 +2841,55 @@ var TableCell = /* @__PURE__ */ forwardRef33(function TableCell2({ align, classN
|
|
|
2636
2841
|
|
|
2637
2842
|
// src/components/Tabs/Tabs.tsx
|
|
2638
2843
|
import * as RadixTabs from "@radix-ui/react-tabs";
|
|
2639
|
-
import { createContext as createContext4, forwardRef as
|
|
2844
|
+
import { createContext as createContext4, forwardRef as forwardRef31, useContext as useContext4 } from "react";
|
|
2640
2845
|
|
|
2641
2846
|
// src/components/Tabs/Tabs.css.ts
|
|
2642
|
-
import { createRuntimeFn as
|
|
2643
|
-
var content10 = "
|
|
2644
|
-
var list4 = /* @__PURE__ */
|
|
2645
|
-
var
|
|
2847
|
+
import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2848
|
+
var content10 = "fvhbtdb";
|
|
2849
|
+
var list4 = /* @__PURE__ */ _7a46818({ defaultClassName: "fvhbtd1", variantClassNames: { variant: { line: "fvhbtd2", soft: "fvhbtd3" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
|
|
2850
|
+
var root10 = "fvhbtd0";
|
|
2851
|
+
var trigger3 = /* @__PURE__ */ _7a46818({ defaultClassName: "fvhbtd4", variantClassNames: { variant: { line: "fvhbtd5", soft: "fvhbtd6" }, size: { sm: "fvhbtd7", md: "fvhbtd8" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd9"], [{ variant: "soft", size: "md" }, "fvhbtda"]] });
|
|
2646
2852
|
|
|
2647
2853
|
// src/components/Tabs/Tabs.tsx
|
|
2648
|
-
import { jsx as
|
|
2854
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2649
2855
|
var TabsStyleContext = /* @__PURE__ */ createContext4({ variant: "line", size: "md" });
|
|
2650
|
-
var Tabs = /* @__PURE__ */
|
|
2856
|
+
var Tabs = /* @__PURE__ */ forwardRef31(function Tabs2({ variant = "line", size = "md", className, ...props }, ref) {
|
|
2651
2857
|
const controlled = "value" in props ? { value: props.value ?? "" } : {};
|
|
2652
|
-
return /* @__PURE__ */
|
|
2858
|
+
return /* @__PURE__ */ jsx35(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx35(RadixTabs.Root, { ref, className: cx(root10, className), ...props, ...controlled }) });
|
|
2653
2859
|
});
|
|
2654
|
-
var TabsList = /* @__PURE__ */
|
|
2860
|
+
var TabsList = /* @__PURE__ */ forwardRef31(function TabsList2({ className, ...rest }, ref) {
|
|
2655
2861
|
const { variant } = useContext4(TabsStyleContext);
|
|
2656
|
-
return /* @__PURE__ */
|
|
2862
|
+
return /* @__PURE__ */ jsx35(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
|
|
2657
2863
|
});
|
|
2658
|
-
var TabsTrigger = /* @__PURE__ */
|
|
2864
|
+
var TabsTrigger = /* @__PURE__ */ forwardRef31(function TabsTrigger2({ className, ...rest }, ref) {
|
|
2659
2865
|
const { variant, size } = useContext4(TabsStyleContext);
|
|
2660
|
-
return /* @__PURE__ */
|
|
2866
|
+
return /* @__PURE__ */ jsx35(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
|
|
2661
2867
|
});
|
|
2662
|
-
var TabsContent = /* @__PURE__ */
|
|
2663
|
-
return /* @__PURE__ */
|
|
2868
|
+
var TabsContent = /* @__PURE__ */ forwardRef31(function TabsContent2({ className, ...rest }, ref) {
|
|
2869
|
+
return /* @__PURE__ */ jsx35(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
|
|
2664
2870
|
});
|
|
2665
2871
|
|
|
2666
2872
|
// src/components/Textarea/Textarea.tsx
|
|
2667
2873
|
import {
|
|
2668
|
-
forwardRef as
|
|
2874
|
+
forwardRef as forwardRef32,
|
|
2669
2875
|
useCallback,
|
|
2670
|
-
useId as
|
|
2671
|
-
useRef as
|
|
2672
|
-
useState as
|
|
2876
|
+
useId as useId14,
|
|
2877
|
+
useRef as useRef13,
|
|
2878
|
+
useState as useState12
|
|
2673
2879
|
} from "react";
|
|
2674
2880
|
|
|
2675
2881
|
// src/components/Textarea/Textarea.css.ts
|
|
2676
|
-
import { createRuntimeFn as
|
|
2882
|
+
import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2677
2883
|
var count = "_1koawa9";
|
|
2678
2884
|
var countOver = "_1koawaa";
|
|
2679
2885
|
var defaultWidth = "_1koawa7";
|
|
2680
|
-
var
|
|
2681
|
-
var textarea = /* @__PURE__ */
|
|
2886
|
+
var footer4 = "_1koawa8";
|
|
2887
|
+
var textarea = /* @__PURE__ */ _7a46819({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
|
|
2682
2888
|
|
|
2683
2889
|
// src/components/Textarea/Textarea.tsx
|
|
2684
|
-
import { jsx as
|
|
2685
|
-
var Textarea = /* @__PURE__ */
|
|
2686
|
-
label:
|
|
2890
|
+
import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2891
|
+
var Textarea = /* @__PURE__ */ forwardRef32(function Textarea2({
|
|
2892
|
+
label: label5,
|
|
2687
2893
|
helperText: helperText3,
|
|
2688
2894
|
error,
|
|
2689
2895
|
size,
|
|
@@ -2694,7 +2900,7 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
|
|
|
2694
2900
|
required,
|
|
2695
2901
|
id,
|
|
2696
2902
|
rows = 3,
|
|
2697
|
-
value:
|
|
2903
|
+
value: value3,
|
|
2698
2904
|
defaultValue,
|
|
2699
2905
|
onChange,
|
|
2700
2906
|
maxLength,
|
|
@@ -2703,12 +2909,12 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
|
|
|
2703
2909
|
"aria-describedby": ariaDescribedBy,
|
|
2704
2910
|
...rest
|
|
2705
2911
|
}, ref) {
|
|
2706
|
-
const generatedId =
|
|
2912
|
+
const generatedId = useId14();
|
|
2707
2913
|
const textareaId = id ?? generatedId;
|
|
2708
2914
|
const helperId = helperText3 ? `${textareaId}-helper` : void 0;
|
|
2709
|
-
const innerRef =
|
|
2710
|
-
const [uncontrolledLength, setUncontrolledLength] =
|
|
2711
|
-
const length =
|
|
2915
|
+
const innerRef = useRef13(null);
|
|
2916
|
+
const [uncontrolledLength, setUncontrolledLength] = useState12(() => String(defaultValue ?? "").length);
|
|
2917
|
+
const length = value3 !== void 0 ? String(value3).length : uncontrolledLength;
|
|
2712
2918
|
const fitHeight = useCallback(() => {
|
|
2713
2919
|
const el = innerRef.current;
|
|
2714
2920
|
if (!autoResize || !el) return;
|
|
@@ -2716,24 +2922,24 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
|
|
|
2716
2922
|
const borders = el.offsetHeight - el.clientHeight;
|
|
2717
2923
|
el.style.height = `${el.scrollHeight + borders}px`;
|
|
2718
2924
|
}, [autoResize]);
|
|
2719
|
-
useIsomorphicLayoutEffect(fitHeight, [fitHeight,
|
|
2925
|
+
useIsomorphicLayoutEffect(fitHeight, [fitHeight, value3]);
|
|
2720
2926
|
const handleChange = (event) => {
|
|
2721
|
-
if (
|
|
2927
|
+
if (value3 === void 0) setUncontrolledLength(event.target.value.length);
|
|
2722
2928
|
fitHeight();
|
|
2723
2929
|
onChange?.(event);
|
|
2724
2930
|
};
|
|
2725
|
-
return /* @__PURE__ */
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
required && /* @__PURE__ */
|
|
2931
|
+
return /* @__PURE__ */ jsxs29("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
2932
|
+
label5 && /* @__PURE__ */ jsxs29("label", { htmlFor: textareaId, className: label, children: [
|
|
2933
|
+
label5,
|
|
2934
|
+
required && /* @__PURE__ */ jsx36("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
2729
2935
|
] }),
|
|
2730
|
-
/* @__PURE__ */
|
|
2936
|
+
/* @__PURE__ */ jsx36(
|
|
2731
2937
|
"textarea",
|
|
2732
2938
|
{
|
|
2733
2939
|
ref: mergeRefs(innerRef, ref),
|
|
2734
2940
|
id: textareaId,
|
|
2735
2941
|
rows,
|
|
2736
|
-
value:
|
|
2942
|
+
value: value3,
|
|
2737
2943
|
defaultValue,
|
|
2738
2944
|
onChange: handleChange,
|
|
2739
2945
|
maxLength,
|
|
@@ -2749,36 +2955,36 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
|
|
|
2749
2955
|
...rest
|
|
2750
2956
|
}
|
|
2751
2957
|
),
|
|
2752
|
-
(helperText3 || showCount) && /* @__PURE__ */
|
|
2753
|
-
helperText3 && /* @__PURE__ */
|
|
2754
|
-
showCount && /* @__PURE__ */
|
|
2958
|
+
(helperText3 || showCount) && /* @__PURE__ */ jsxs29("div", { className: footer4, children: [
|
|
2959
|
+
helperText3 && /* @__PURE__ */ jsx36("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
|
|
2960
|
+
showCount && /* @__PURE__ */ jsx36("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
|
|
2755
2961
|
] })
|
|
2756
2962
|
] });
|
|
2757
2963
|
});
|
|
2758
2964
|
|
|
2759
2965
|
// src/components/Toast/Toast.tsx
|
|
2760
2966
|
import * as RadixToast from "@radix-ui/react-toast";
|
|
2761
|
-
import { createContext as createContext5, useCallback as useCallback2, useContext as useContext5, useMemo as useMemo4, useRef as
|
|
2762
|
-
import { XIcon as
|
|
2967
|
+
import { createContext as createContext5, useCallback as useCallback2, useContext as useContext5, useMemo as useMemo4, useRef as useRef14, useState as useState13 } from "react";
|
|
2968
|
+
import { XIcon as XIcon6 } from "@bestow-ui/icons";
|
|
2763
2969
|
|
|
2764
2970
|
// src/components/Toast/Toast.css.ts
|
|
2765
|
-
import { createRuntimeFn as
|
|
2971
|
+
import { createRuntimeFn as _7a46820 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2766
2972
|
var action2 = "_1g11zvx9";
|
|
2767
2973
|
var close = "_1g11zvxa";
|
|
2768
2974
|
var description5 = "_1g11zvx8";
|
|
2769
2975
|
var title5 = "_1g11zvx7";
|
|
2770
|
-
var toast = /* @__PURE__ */
|
|
2976
|
+
var toast = /* @__PURE__ */ _7a46820({ defaultClassName: "_1g11zvx1", variantClassNames: { color: { primary: "_1g11zvx2", neutral: "_1g11zvx3", success: "_1g11zvx4", warning: "_1g11zvx5", danger: "_1g11zvx6" } }, defaultVariants: { color: "neutral" }, compoundVariants: [] });
|
|
2771
2977
|
var viewport2 = "_1g11zvx0";
|
|
2772
2978
|
|
|
2773
2979
|
// src/components/Toast/Toast.tsx
|
|
2774
|
-
import { jsx as
|
|
2980
|
+
import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
2775
2981
|
var REMOVE_DELAY = 500;
|
|
2776
2982
|
var ToastContext = /* @__PURE__ */ createContext5(null);
|
|
2777
2983
|
function ToastProvider({ children, duration = 5e3, label: labelProp }) {
|
|
2778
2984
|
const m = useMessages();
|
|
2779
|
-
const
|
|
2780
|
-
const [toasts, setToasts] =
|
|
2781
|
-
const nextId =
|
|
2985
|
+
const label5 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
|
|
2986
|
+
const [toasts, setToasts] = useState13([]);
|
|
2987
|
+
const nextId = useRef14(0);
|
|
2782
2988
|
const portal2 = usePortalProps();
|
|
2783
2989
|
const toast2 = useCallback2((options) => {
|
|
2784
2990
|
const id = nextId.current++;
|
|
@@ -2790,10 +2996,10 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
|
|
|
2790
2996
|
setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
|
|
2791
2997
|
setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
|
|
2792
2998
|
}, []);
|
|
2793
|
-
const
|
|
2794
|
-
return /* @__PURE__ */
|
|
2999
|
+
const value3 = useMemo4(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
|
|
3000
|
+
return /* @__PURE__ */ jsx37(ToastContext.Provider, { value: value3, children: /* @__PURE__ */ jsxs30(RadixToast.Provider, { duration, label: label5, swipeDirection: "right", children: [
|
|
2795
3001
|
children,
|
|
2796
|
-
toasts.map(({ id, open, title: title6, description: description6, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */
|
|
3002
|
+
toasts.map(({ id, open, title: title6, description: description6, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs30(
|
|
2797
3003
|
RadixToast.Root,
|
|
2798
3004
|
{
|
|
2799
3005
|
open,
|
|
@@ -2803,15 +3009,15 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
|
|
|
2803
3009
|
},
|
|
2804
3010
|
className: toast({ color }),
|
|
2805
3011
|
children: [
|
|
2806
|
-
/* @__PURE__ */
|
|
2807
|
-
description6 && /* @__PURE__ */
|
|
2808
|
-
action3 && /* @__PURE__ */
|
|
2809
|
-
/* @__PURE__ */
|
|
3012
|
+
/* @__PURE__ */ jsx37(RadixToast.Title, { className: title5, children: title6 }),
|
|
3013
|
+
description6 && /* @__PURE__ */ jsx37(RadixToast.Description, { className: description5, children: description6 }),
|
|
3014
|
+
action3 && /* @__PURE__ */ jsx37(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx37(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
|
|
3015
|
+
/* @__PURE__ */ jsx37(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx37(XIcon6, { size: 16 }) })
|
|
2810
3016
|
]
|
|
2811
3017
|
},
|
|
2812
3018
|
id
|
|
2813
3019
|
)),
|
|
2814
|
-
/* @__PURE__ */
|
|
3020
|
+
/* @__PURE__ */ jsx37(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
|
|
2815
3021
|
] }) });
|
|
2816
3022
|
}
|
|
2817
3023
|
function useToast() {
|
|
@@ -2828,7 +3034,7 @@ var arrow2 = "z7rufs1";
|
|
|
2828
3034
|
var content11 = "z7rufs0";
|
|
2829
3035
|
|
|
2830
3036
|
// src/components/Tooltip/Tooltip.tsx
|
|
2831
|
-
import { jsx as
|
|
3037
|
+
import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
2832
3038
|
function Tooltip({
|
|
2833
3039
|
content: content12,
|
|
2834
3040
|
children,
|
|
@@ -2843,9 +3049,9 @@ function Tooltip({
|
|
|
2843
3049
|
}) {
|
|
2844
3050
|
const portal2 = usePortalProps();
|
|
2845
3051
|
if (disabled || content12 == null || content12 === "") return children;
|
|
2846
|
-
return /* @__PURE__ */
|
|
2847
|
-
/* @__PURE__ */
|
|
2848
|
-
/* @__PURE__ */
|
|
3052
|
+
return /* @__PURE__ */ jsx38(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs31(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
|
|
3053
|
+
/* @__PURE__ */ jsx38(RadixTooltip.Trigger, { asChild: true, children }),
|
|
3054
|
+
/* @__PURE__ */ jsx38(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs31(
|
|
2849
3055
|
RadixTooltip.Content,
|
|
2850
3056
|
{
|
|
2851
3057
|
side,
|
|
@@ -2856,63 +3062,31 @@ function Tooltip({
|
|
|
2856
3062
|
style: portal2.style,
|
|
2857
3063
|
children: [
|
|
2858
3064
|
content12,
|
|
2859
|
-
/* @__PURE__ */
|
|
3065
|
+
/* @__PURE__ */ jsx38(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
|
|
2860
3066
|
]
|
|
2861
3067
|
}
|
|
2862
3068
|
) })
|
|
2863
3069
|
] }) });
|
|
2864
3070
|
}
|
|
2865
3071
|
|
|
2866
|
-
// src/components/Typography/Typography.tsx
|
|
2867
|
-
import { forwardRef as forwardRef36 } from "react";
|
|
2868
|
-
|
|
2869
|
-
// src/components/Typography/Typography.css.ts
|
|
2870
|
-
import { createRuntimeFn as _7a46825 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
2871
|
-
var typography = /* @__PURE__ */ _7a46825({ defaultClassName: "kiolio0", variantClassNames: { variant: { display: "kiolio1", h1: "kiolio2", h2: "kiolio3", h3: "kiolio4", h4: "kiolio5", "body-lg": "kiolio6", body: "kiolio7", "body-sm": "kiolio8", caption: "kiolio9" }, color: { "default": "kiolioa", muted: "kioliob", subtle: "kiolioc", primary: "kioliod", danger: "kiolioe", success: "kioliof", warning: "kioliog", inherit: "kiolioh" }, weight: { regular: "kiolioi", medium: "kiolioj", semibold: "kioliok", bold: "kioliol" }, align: { start: "kioliom", center: "kiolion", end: "kiolioo" }, truncate: { true: "kioliop" } }, defaultVariants: { variant: "body", color: "default" }, compoundVariants: [] });
|
|
2872
|
-
|
|
2873
|
-
// src/components/Typography/Typography.tsx
|
|
2874
|
-
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
2875
|
-
var defaultElement = {
|
|
2876
|
-
display: "h1",
|
|
2877
|
-
h1: "h1",
|
|
2878
|
-
h2: "h2",
|
|
2879
|
-
h3: "h3",
|
|
2880
|
-
h4: "h4",
|
|
2881
|
-
"body-lg": "p",
|
|
2882
|
-
body: "p",
|
|
2883
|
-
"body-sm": "p",
|
|
2884
|
-
caption: "span"
|
|
2885
|
-
};
|
|
2886
|
-
var Typography = /* @__PURE__ */ forwardRef36(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
|
|
2887
|
-
const Component = as ?? defaultElement[variant];
|
|
2888
|
-
return /* @__PURE__ */ jsx42(
|
|
2889
|
-
Component,
|
|
2890
|
-
{
|
|
2891
|
-
ref,
|
|
2892
|
-
className: cx(typography({ variant, color, weight, align, truncate }), className),
|
|
2893
|
-
...rest
|
|
2894
|
-
}
|
|
2895
|
-
);
|
|
2896
|
-
});
|
|
2897
|
-
|
|
2898
3072
|
// src/components/VerificationCodeInput/VerificationCodeInput.tsx
|
|
2899
|
-
import { forwardRef as
|
|
3073
|
+
import { forwardRef as forwardRef33, useEffect as useEffect8, useId as useId15, useRef as useRef15, useState as useState14 } from "react";
|
|
2900
3074
|
|
|
2901
3075
|
// src/components/VerificationCodeInput/VerificationCodeInput.css.ts
|
|
2902
|
-
var
|
|
3076
|
+
var input5 = "ea01812";
|
|
2903
3077
|
var row4 = "ea01810";
|
|
2904
3078
|
var slot = "ea01813";
|
|
2905
3079
|
var slots = "ea01811";
|
|
2906
3080
|
var timer = "ea01814";
|
|
2907
3081
|
|
|
2908
3082
|
// src/components/VerificationCodeInput/VerificationCodeInput.tsx
|
|
2909
|
-
import { jsx as
|
|
3083
|
+
import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
2910
3084
|
var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
|
|
2911
|
-
var VerificationCodeInput = /* @__PURE__ */
|
|
3085
|
+
var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
|
|
2912
3086
|
function VerificationCodeInput2(props, ref) {
|
|
2913
3087
|
const {
|
|
2914
3088
|
length = 6,
|
|
2915
|
-
value:
|
|
3089
|
+
value: value3,
|
|
2916
3090
|
defaultValue,
|
|
2917
3091
|
onValueChange,
|
|
2918
3092
|
onComplete,
|
|
@@ -2932,26 +3106,26 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
|
|
|
2932
3106
|
className
|
|
2933
3107
|
} = props;
|
|
2934
3108
|
const m = useMessages();
|
|
2935
|
-
const
|
|
3109
|
+
const label5 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
|
|
2936
3110
|
const resendText = resendTextProp ?? m.resend ?? "\uC7AC\uC804\uC1A1";
|
|
2937
3111
|
const expiredText = expiredTextProp ?? m.verificationExpired ?? "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.";
|
|
2938
|
-
const generatedId =
|
|
3112
|
+
const generatedId = useId15();
|
|
2939
3113
|
const inputId = id ?? generatedId;
|
|
2940
3114
|
const helperId = `${inputId}-helper`;
|
|
2941
3115
|
const statusId = `${inputId}-status`;
|
|
2942
|
-
const inputRef =
|
|
3116
|
+
const inputRef = useRef15(null);
|
|
2943
3117
|
const isControlled = "value" in props;
|
|
2944
|
-
const [innerValue, setInnerValue] =
|
|
2945
|
-
const code = (isControlled ?
|
|
2946
|
-
const [focused, setFocused] =
|
|
2947
|
-
const [endAt, setEndAt] =
|
|
2948
|
-
const [remaining, setRemaining] =
|
|
3118
|
+
const [innerValue, setInnerValue] = useState14(defaultValue ?? "");
|
|
3119
|
+
const code = (isControlled ? value3 ?? "" : innerValue).slice(0, length);
|
|
3120
|
+
const [focused, setFocused] = useState14(false);
|
|
3121
|
+
const [endAt, setEndAt] = useState14(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
|
|
3122
|
+
const [remaining, setRemaining] = useState14(expiresIn ?? 0);
|
|
2949
3123
|
const expired = expiresIn !== void 0 && remaining <= 0;
|
|
2950
|
-
const onExpireRef =
|
|
2951
|
-
|
|
3124
|
+
const onExpireRef = useRef15(onExpire);
|
|
3125
|
+
useEffect8(() => {
|
|
2952
3126
|
onExpireRef.current = onExpire;
|
|
2953
3127
|
});
|
|
2954
|
-
|
|
3128
|
+
useEffect8(() => {
|
|
2955
3129
|
if (endAt === null) return;
|
|
2956
3130
|
const tick = () => {
|
|
2957
3131
|
const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
|
|
@@ -2986,17 +3160,17 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
|
|
|
2986
3160
|
};
|
|
2987
3161
|
const description6 = helperText3 ?? m.verificationCodeHint?.(length, type) ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
|
|
2988
3162
|
const activeIndex = Math.min(code.length, length - 1);
|
|
2989
|
-
return /* @__PURE__ */
|
|
3163
|
+
return /* @__PURE__ */ jsxs32(
|
|
2990
3164
|
"div",
|
|
2991
3165
|
{
|
|
2992
3166
|
className: cx(field, className),
|
|
2993
3167
|
"data-invalid": error || void 0,
|
|
2994
3168
|
"data-disabled": disabled || void 0,
|
|
2995
3169
|
children: [
|
|
2996
|
-
/* @__PURE__ */
|
|
2997
|
-
/* @__PURE__ */
|
|
2998
|
-
/* @__PURE__ */
|
|
2999
|
-
/* @__PURE__ */
|
|
3170
|
+
/* @__PURE__ */ jsx39("label", { htmlFor: inputId, className: label, children: label5 }),
|
|
3171
|
+
/* @__PURE__ */ jsxs32("div", { className: row4, children: [
|
|
3172
|
+
/* @__PURE__ */ jsxs32("div", { className: slots, children: [
|
|
3173
|
+
/* @__PURE__ */ jsx39(
|
|
3000
3174
|
"input",
|
|
3001
3175
|
{
|
|
3002
3176
|
ref: mergeRefs(ref, inputRef),
|
|
@@ -3013,10 +3187,10 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
|
|
|
3013
3187
|
autoFocus,
|
|
3014
3188
|
"aria-invalid": error || void 0,
|
|
3015
3189
|
"aria-describedby": `${helperId} ${statusId}`,
|
|
3016
|
-
className:
|
|
3190
|
+
className: input5
|
|
3017
3191
|
}
|
|
3018
3192
|
),
|
|
3019
|
-
Array.from({ length }, (_, index) => /* @__PURE__ */
|
|
3193
|
+
Array.from({ length }, (_, index) => /* @__PURE__ */ jsx39(
|
|
3020
3194
|
"div",
|
|
3021
3195
|
{
|
|
3022
3196
|
className: slot,
|
|
@@ -3027,12 +3201,12 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
|
|
|
3027
3201
|
index
|
|
3028
3202
|
))
|
|
3029
3203
|
] }),
|
|
3030
|
-
expiresIn !== void 0 && /* @__PURE__ */
|
|
3031
|
-
onResend && /* @__PURE__ */
|
|
3204
|
+
expiresIn !== void 0 && /* @__PURE__ */ jsx39("span", { role: "timer", className: timer, children: formatTime(remaining) }),
|
|
3205
|
+
onResend && /* @__PURE__ */ jsx39(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
|
|
3032
3206
|
] }),
|
|
3033
|
-
/* @__PURE__ */
|
|
3034
|
-
/* @__PURE__ */
|
|
3035
|
-
name && /* @__PURE__ */
|
|
3207
|
+
/* @__PURE__ */ jsx39("p", { id: helperId, className: helperText({ error }), children: description6 }),
|
|
3208
|
+
/* @__PURE__ */ jsx39("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
|
|
3209
|
+
name && /* @__PURE__ */ jsx39("input", { type: "hidden", name, value: code })
|
|
3036
3210
|
]
|
|
3037
3211
|
}
|
|
3038
3212
|
);
|
|
@@ -3046,27 +3220,27 @@ export {
|
|
|
3046
3220
|
Alert,
|
|
3047
3221
|
AmountInput,
|
|
3048
3222
|
Avatar,
|
|
3049
|
-
Badge,
|
|
3050
3223
|
Breadcrumb,
|
|
3051
3224
|
BusinessNumberInput,
|
|
3052
3225
|
Button,
|
|
3053
3226
|
Calendar,
|
|
3054
|
-
Card,
|
|
3055
|
-
CardBody,
|
|
3056
|
-
CardFooter,
|
|
3057
|
-
CardHeader,
|
|
3058
3227
|
Checkbox,
|
|
3059
3228
|
Combobox,
|
|
3060
3229
|
DatePicker,
|
|
3061
|
-
Divider,
|
|
3062
3230
|
Drawer,
|
|
3063
3231
|
DrawerClose,
|
|
3064
3232
|
DropdownMenu,
|
|
3233
|
+
DropdownMenuCheckboxItem,
|
|
3065
3234
|
DropdownMenuContent,
|
|
3066
3235
|
DropdownMenuGroup,
|
|
3067
3236
|
DropdownMenuItem,
|
|
3068
3237
|
DropdownMenuLabel,
|
|
3238
|
+
DropdownMenuRadioGroup,
|
|
3239
|
+
DropdownMenuRadioItem,
|
|
3069
3240
|
DropdownMenuSeparator,
|
|
3241
|
+
DropdownMenuSub,
|
|
3242
|
+
DropdownMenuSubContent,
|
|
3243
|
+
DropdownMenuSubTrigger,
|
|
3070
3244
|
DropdownMenuTrigger,
|
|
3071
3245
|
IconButton,
|
|
3072
3246
|
Input,
|
|
@@ -3074,17 +3248,17 @@ export {
|
|
|
3074
3248
|
LocaleProvider,
|
|
3075
3249
|
Modal,
|
|
3076
3250
|
ModalClose,
|
|
3251
|
+
NumberInput,
|
|
3077
3252
|
Pagination,
|
|
3078
3253
|
PhoneNumberInput,
|
|
3079
3254
|
Popover2 as Popover,
|
|
3080
3255
|
PopoverClose,
|
|
3081
|
-
|
|
3082
|
-
|
|
3256
|
+
RadioGroup2 as RadioGroup,
|
|
3257
|
+
SegmentedControl,
|
|
3083
3258
|
Select,
|
|
3084
|
-
|
|
3259
|
+
SkipLink,
|
|
3085
3260
|
Slider,
|
|
3086
3261
|
Spinner,
|
|
3087
|
-
Stack,
|
|
3088
3262
|
Switch,
|
|
3089
3263
|
Table,
|
|
3090
3264
|
TableBody,
|
|
@@ -3102,7 +3276,6 @@ export {
|
|
|
3102
3276
|
ThemeProvider,
|
|
3103
3277
|
ToastProvider,
|
|
3104
3278
|
Tooltip,
|
|
3105
|
-
Typography,
|
|
3106
3279
|
VerificationCodeInput,
|
|
3107
3280
|
useMessages,
|
|
3108
3281
|
usePortalProps,
|