@bestow-ui/react 0.10.0 → 0.12.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 +30 -12
- package/dist/index.cjs +2097 -731
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1092 -754
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +480 -39
- package/dist/index.d.ts +480 -39
- package/dist/index.js +2066 -721
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6,9 +6,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __export = (target,
|
|
10
|
-
for (var name in
|
|
11
|
-
__defProp(target, name, { get:
|
|
9
|
+
var __export = (target, all2) => {
|
|
10
|
+
for (var name in all2)
|
|
11
|
+
__defProp(target, name, { get: all2[name], enumerable: true });
|
|
12
12
|
};
|
|
13
13
|
var __copyProps = (to, from, except, desc) => {
|
|
14
14
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -33,17 +33,23 @@ var index_exports = {};
|
|
|
33
33
|
__export(index_exports, {
|
|
34
34
|
Accordion: () => Accordion,
|
|
35
35
|
AccordionItem: () => AccordionItem,
|
|
36
|
+
AddressInput: () => AddressInput,
|
|
37
|
+
AgreementGroup: () => AgreementGroup,
|
|
36
38
|
Alert: () => Alert,
|
|
39
|
+
AmountInput: () => AmountInput,
|
|
37
40
|
Avatar: () => Avatar,
|
|
38
41
|
Badge: () => Badge,
|
|
39
42
|
Breadcrumb: () => Breadcrumb,
|
|
43
|
+
BusinessNumberInput: () => BusinessNumberInput,
|
|
40
44
|
Button: () => Button,
|
|
45
|
+
Calendar: () => Calendar,
|
|
41
46
|
Card: () => Card,
|
|
42
47
|
CardBody: () => CardBody,
|
|
43
48
|
CardFooter: () => CardFooter,
|
|
44
49
|
CardHeader: () => CardHeader,
|
|
45
50
|
Checkbox: () => Checkbox,
|
|
46
51
|
Combobox: () => Combobox,
|
|
52
|
+
DatePicker: () => DatePicker,
|
|
47
53
|
Divider: () => Divider,
|
|
48
54
|
Drawer: () => Drawer,
|
|
49
55
|
DrawerClose: () => DrawerClose,
|
|
@@ -57,9 +63,11 @@ __export(index_exports, {
|
|
|
57
63
|
IconButton: () => IconButton,
|
|
58
64
|
Input: () => Input,
|
|
59
65
|
Link: () => Link,
|
|
66
|
+
LocaleProvider: () => LocaleProvider,
|
|
60
67
|
Modal: () => Modal,
|
|
61
68
|
ModalClose: () => ModalClose,
|
|
62
69
|
Pagination: () => Pagination,
|
|
70
|
+
PhoneNumberInput: () => PhoneNumberInput,
|
|
63
71
|
Popover: () => Popover2,
|
|
64
72
|
PopoverClose: () => PopoverClose,
|
|
65
73
|
Progress: () => Progress,
|
|
@@ -87,10 +95,23 @@ __export(index_exports, {
|
|
|
87
95
|
ToastProvider: () => ToastProvider,
|
|
88
96
|
Tooltip: () => Tooltip,
|
|
89
97
|
Typography: () => Typography,
|
|
98
|
+
VerificationCodeInput: () => VerificationCodeInput,
|
|
99
|
+
composeExtraAddress: () => composeExtraAddress,
|
|
90
100
|
contrastRatio: () => contrastRatio,
|
|
91
101
|
createIntentColors: () => createIntentColors,
|
|
92
102
|
createTheme: () => createTheme,
|
|
103
|
+
en: () => en,
|
|
104
|
+
formatBusinessNumber: () => formatBusinessNumber,
|
|
105
|
+
formatKoreanAmount: () => formatKoreanAmount,
|
|
106
|
+
formatKoreanDate: () => formatKoreanDate,
|
|
107
|
+
formatPhoneNumber: () => formatPhoneNumber,
|
|
108
|
+
hasAllRequiredAgreements: () => hasAllRequiredAgreements,
|
|
109
|
+
isValidBusinessNumber: () => isValidBusinessNumber,
|
|
110
|
+
kakaoPostcodeProvider: () => kakaoPostcodeProvider,
|
|
111
|
+
parseISODate: () => parseISODate,
|
|
93
112
|
themeClass: () => themeClass,
|
|
113
|
+
toISODate: () => toISODate,
|
|
114
|
+
useMessages: () => useMessages,
|
|
94
115
|
usePortalClassName: () => usePortalClassName,
|
|
95
116
|
usePortalProps: () => usePortalProps,
|
|
96
117
|
useTheme: () => useTheme,
|
|
@@ -220,9 +241,12 @@ function createIntentColors(intent, color) {
|
|
|
220
241
|
subtleHover: rgba(darkSolid, 0.26),
|
|
221
242
|
text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg])
|
|
222
243
|
};
|
|
244
|
+
const focusOn = (candidate, fallback2, bg) => contrastRatio(candidate, bg) >= 3 ? candidate : fallback2;
|
|
223
245
|
const focus = intent === "primary" ? {
|
|
224
|
-
light: { border: { focus: light.solid } },
|
|
225
|
-
dark: {
|
|
246
|
+
light: { border: { focus: focusOn(light.solid, light.text, import_tokens.lightColors.bg.default) } },
|
|
247
|
+
dark: {
|
|
248
|
+
border: { focus: focusOn(withL(darkBase, Math.min(1, darkBase.l + 0.06)), dark.text, darkBg) }
|
|
249
|
+
}
|
|
226
250
|
} : void 0;
|
|
227
251
|
return {
|
|
228
252
|
light: { color: { [intent]: light, ...focus?.light } },
|
|
@@ -245,9 +269,9 @@ function deepMerge(target, source) {
|
|
|
245
269
|
function createTheme(...inputs) {
|
|
246
270
|
let light = {};
|
|
247
271
|
let dark = {};
|
|
248
|
-
for (const
|
|
249
|
-
light = deepMerge(deepMerge(light,
|
|
250
|
-
dark = deepMerge(deepMerge(dark,
|
|
272
|
+
for (const input5 of inputs) {
|
|
273
|
+
light = deepMerge(deepMerge(light, input5.common), input5.light);
|
|
274
|
+
dark = deepMerge(deepMerge(dark, input5.common), input5.dark);
|
|
251
275
|
}
|
|
252
276
|
return Object.freeze({ light, dark });
|
|
253
277
|
}
|
|
@@ -317,10 +341,94 @@ function usePortalClassName() {
|
|
|
317
341
|
return usePortalProps().className;
|
|
318
342
|
}
|
|
319
343
|
|
|
344
|
+
// src/i18n/LocaleProvider.tsx
|
|
345
|
+
var import_react2 = require("react");
|
|
346
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
347
|
+
var MessagesContext = /* @__PURE__ */ (0, import_react2.createContext)({});
|
|
348
|
+
function LocaleProvider({ messages, children }) {
|
|
349
|
+
const parent = (0, import_react2.useContext)(MessagesContext);
|
|
350
|
+
const value4 = (0, import_react2.useMemo)(() => ({ ...parent, ...messages }), [parent, messages]);
|
|
351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MessagesContext.Provider, { value: value4, children });
|
|
352
|
+
}
|
|
353
|
+
function useMessages() {
|
|
354
|
+
return (0, import_react2.useContext)(MessagesContext);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// src/i18n/en.ts
|
|
358
|
+
var WEEKDAYS_LONG = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
359
|
+
var MONTHS = [
|
|
360
|
+
"January",
|
|
361
|
+
"February",
|
|
362
|
+
"March",
|
|
363
|
+
"April",
|
|
364
|
+
"May",
|
|
365
|
+
"June",
|
|
366
|
+
"July",
|
|
367
|
+
"August",
|
|
368
|
+
"September",
|
|
369
|
+
"October",
|
|
370
|
+
"November",
|
|
371
|
+
"December"
|
|
372
|
+
];
|
|
373
|
+
var en = {
|
|
374
|
+
close: "Close",
|
|
375
|
+
loading: "Loading",
|
|
376
|
+
notifications: "Notifications",
|
|
377
|
+
breadcrumb: "Breadcrumb",
|
|
378
|
+
pagination: "Pagination",
|
|
379
|
+
paginationPrevious: "Previous page",
|
|
380
|
+
paginationNext: "Next page",
|
|
381
|
+
paginationPage: (page) => `Page ${page}`,
|
|
382
|
+
newWindow: "(opens in a new window)",
|
|
383
|
+
noResults: "No results",
|
|
384
|
+
openList: "Show options",
|
|
385
|
+
rangeStart: "minimum",
|
|
386
|
+
rangeEnd: "maximum",
|
|
387
|
+
agreeAll: "Agree to all",
|
|
388
|
+
required: "Required",
|
|
389
|
+
optional: "Optional",
|
|
390
|
+
show: "View",
|
|
391
|
+
hide: "Hide",
|
|
392
|
+
verificationCode: "Verification code",
|
|
393
|
+
verificationCodeHint: (length, type) => `Enter the ${length}-${type === "numeric" ? "digit" : "character"} code.`,
|
|
394
|
+
resend: "Resend",
|
|
395
|
+
verificationExpired: "The code has expired. Please request a new one.",
|
|
396
|
+
phoneNumber: "Phone number",
|
|
397
|
+
businessNumber: "Business registration number",
|
|
398
|
+
businessNumberInvalid: "This business registration number is not valid. Please check it again.",
|
|
399
|
+
businessNumberIncomplete: "Enter all 10 digits.",
|
|
400
|
+
amount: "Amount",
|
|
401
|
+
currencyUnit: "KRW",
|
|
402
|
+
address: "Address",
|
|
403
|
+
addressSearch: "Find address",
|
|
404
|
+
addressSearchDescription: "Search by road name, building name, or lot number.",
|
|
405
|
+
postalCode: "Postal code",
|
|
406
|
+
baseAddress: "Address",
|
|
407
|
+
baseAddressPlaceholder: 'Select "Find address" to choose an address',
|
|
408
|
+
detailAddress: "Address line 2",
|
|
409
|
+
detailAddressPlaceholder: "Apartment, suite, unit, etc.",
|
|
410
|
+
addressLoading: "Loading address search",
|
|
411
|
+
addressLoadError: "Could not load address search. Please try again later.",
|
|
412
|
+
previousMonth: "Previous month",
|
|
413
|
+
nextMonth: "Next month",
|
|
414
|
+
monthTitle: (year, month) => `${MONTHS[month - 1]} ${year}`,
|
|
415
|
+
weekdaysShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
|
|
416
|
+
weekdaysLong: WEEKDAYS_LONG,
|
|
417
|
+
dayLabel: (date, weekdayLong) => `${date.getDate()}, ${weekdayLong}, ${MONTHS[date.getMonth()]} ${date.getFullYear()}`,
|
|
418
|
+
holiday: "holiday",
|
|
419
|
+
today: "today",
|
|
420
|
+
date: "Date",
|
|
421
|
+
openCalendar: "Choose date",
|
|
422
|
+
calendar: "Calendar",
|
|
423
|
+
dateInvalid: "This date does not exist.",
|
|
424
|
+
dateUnavailable: "This date is not available.",
|
|
425
|
+
dateIncomplete: "Enter the date as YYYY-MM-DD."
|
|
426
|
+
};
|
|
427
|
+
|
|
320
428
|
// src/components/Accordion/Accordion.tsx
|
|
321
429
|
var RadixAccordion = __toESM(require("@radix-ui/react-accordion"), 1);
|
|
322
430
|
var import_icons = require("@bestow-ui/icons");
|
|
323
|
-
var
|
|
431
|
+
var import_react3 = require("react");
|
|
324
432
|
|
|
325
433
|
// src/components/Accordion/Accordion.css.ts
|
|
326
434
|
var chevron = "v58j0l4";
|
|
@@ -332,146 +440,1008 @@ var root2 = "v58j0l0";
|
|
|
332
440
|
var trigger = "v58j0l3";
|
|
333
441
|
|
|
334
442
|
// src/components/Accordion/Accordion.tsx
|
|
335
|
-
var
|
|
336
|
-
var Accordion = /* @__PURE__ */ (0,
|
|
443
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
444
|
+
var Accordion = /* @__PURE__ */ (0, import_react3.forwardRef)(function Accordion2({ className, ...props }, ref) {
|
|
337
445
|
const { collapsible, ...multipleProps } = props;
|
|
338
446
|
const typedProps = props.type === "multiple" ? multipleProps : { ...multipleProps, collapsible };
|
|
339
447
|
const rootProps = "value" in props ? { ...typedProps, value: props.value ?? (props.type === "multiple" ? [] : "") } : typedProps;
|
|
340
|
-
return /* @__PURE__ */ (0,
|
|
448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RadixAccordion.Root, { ref, className: cx(root2, className), ...rootProps });
|
|
341
449
|
});
|
|
342
|
-
var AccordionItem = /* @__PURE__ */ (0,
|
|
450
|
+
var AccordionItem = /* @__PURE__ */ (0, import_react3.forwardRef)(function AccordionItem2({ title: title6, headingLevel = 3, className, children, ...rest }, ref) {
|
|
343
451
|
const Heading = `h${headingLevel}`;
|
|
344
|
-
return /* @__PURE__ */ (0,
|
|
345
|
-
/* @__PURE__ */ (0,
|
|
452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(RadixAccordion.Item, { ref, className: cx(item, className), ...rest, children: [
|
|
453
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RadixAccordion.Header, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Heading, { className: header, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(RadixAccordion.Trigger, { className: trigger, children: [
|
|
346
454
|
title6,
|
|
347
|
-
/* @__PURE__ */ (0,
|
|
455
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_icons.ChevronDownIcon, { size: 18, className: chevron })
|
|
348
456
|
] }) }) }),
|
|
349
|
-
/* @__PURE__ */ (0,
|
|
457
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RadixAccordion.Content, { className: content, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: contentInner, children }) })
|
|
350
458
|
] });
|
|
351
459
|
});
|
|
352
460
|
|
|
353
|
-
// src/components/
|
|
354
|
-
var
|
|
461
|
+
// src/components/AddressInput/AddressInput.tsx
|
|
462
|
+
var import_react9 = require("react");
|
|
463
|
+
|
|
464
|
+
// src/components/Button/Button.tsx
|
|
465
|
+
var import_react5 = require("react");
|
|
466
|
+
|
|
467
|
+
// src/components/Spinner/Spinner.tsx
|
|
355
468
|
var import_icons2 = require("@bestow-ui/icons");
|
|
469
|
+
var import_react4 = require("react");
|
|
356
470
|
|
|
357
|
-
// src/
|
|
471
|
+
// src/styles/visuallyHidden.css.ts
|
|
472
|
+
var visuallyHidden = "_1kdtbw10";
|
|
473
|
+
|
|
474
|
+
// src/components/Spinner/Spinner.css.ts
|
|
358
475
|
var import_createRuntimeFn = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
476
|
+
var spinner = /* @__PURE__ */ (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "_4b5tg40", variantClassNames: { color: { inherit: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "inherit", size: "md" }, compoundVariants: [] });
|
|
477
|
+
|
|
478
|
+
// src/utils/warnOnce.ts
|
|
479
|
+
var warned = /* @__PURE__ */ new Set();
|
|
480
|
+
function warnOnce(message) {
|
|
481
|
+
if (typeof process !== "undefined" && process.env.NODE_ENV === "production") return;
|
|
482
|
+
if (warned.has(message)) return;
|
|
483
|
+
warned.add(message);
|
|
484
|
+
console.warn(`[BestOW UI] ${message}`);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// src/components/Spinner/Spinner.tsx
|
|
488
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
489
|
+
var Spinner = /* @__PURE__ */ (0, import_react4.forwardRef)(function Spinner2({ size, color, label: labelProp, className, ...rest }, ref) {
|
|
490
|
+
const m = useMessages();
|
|
491
|
+
if (color === "current") {
|
|
492
|
+
warnOnce('Spinner \uC758 color="current" \uB294 deprecated \uC608\uC694. color="inherit" \uB97C \uC4F0\uC138\uC694 (1.0 \uC5D0\uC11C \uC81C\uAC70).');
|
|
493
|
+
color = "inherit";
|
|
494
|
+
}
|
|
495
|
+
const label6 = labelProp ?? m.loading ?? "\uB85C\uB529 \uC911";
|
|
496
|
+
const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
|
|
497
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
|
|
498
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons2.LoaderIcon, { size: "100%" }),
|
|
499
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: visuallyHidden, children: label6 })
|
|
500
|
+
] });
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
// src/components/Button/Button.css.ts
|
|
504
|
+
var import_createRuntimeFn2 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
505
|
+
var button = /* @__PURE__ */ (0, import_createRuntimeFn2.createRuntimeFn)({ defaultClassName: "xcekda6", variantClassNames: { variant: { solid: "xcekda7", soft: "xcekda8", outline: "xcekda9", ghost: "xcekdaa" }, color: { primary: "xcekdab", neutral: "xcekdac", danger: "xcekdad" }, size: { sm: "xcekdae", md: "xcekdaf", lg: "xcekdag" }, fullWidth: { true: "xcekdah" } }, defaultVariants: { variant: "solid", color: "primary", size: "md" }, compoundVariants: [] });
|
|
506
|
+
var icon = "xcekdai";
|
|
507
|
+
|
|
508
|
+
// src/components/Button/Button.tsx
|
|
509
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
510
|
+
var Button = /* @__PURE__ */ (0, import_react5.forwardRef)(function Button2({
|
|
511
|
+
variant,
|
|
512
|
+
color,
|
|
513
|
+
size,
|
|
514
|
+
fullWidth,
|
|
515
|
+
startIcon,
|
|
516
|
+
endIcon,
|
|
517
|
+
loading: loading2,
|
|
518
|
+
className,
|
|
519
|
+
type = "button",
|
|
520
|
+
onClick,
|
|
521
|
+
children,
|
|
522
|
+
...rest
|
|
523
|
+
}, ref) {
|
|
524
|
+
const handleClick = (event) => {
|
|
525
|
+
if (loading2) {
|
|
526
|
+
event.preventDefault();
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
onClick?.(event);
|
|
530
|
+
};
|
|
531
|
+
const leading = loading2 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Spinner, { size: "sm", label: "" }) : startIcon;
|
|
532
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
533
|
+
"button",
|
|
534
|
+
{
|
|
535
|
+
ref,
|
|
536
|
+
type,
|
|
537
|
+
className: cx(button({ variant, color, size, fullWidth }), className),
|
|
538
|
+
"aria-busy": loading2 || void 0,
|
|
539
|
+
"aria-disabled": loading2 || void 0,
|
|
540
|
+
onClick: handleClick,
|
|
541
|
+
...rest,
|
|
542
|
+
children: [
|
|
543
|
+
leading && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: icon, children: leading }),
|
|
544
|
+
children,
|
|
545
|
+
endIcon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: icon, children: endIcon })
|
|
546
|
+
]
|
|
547
|
+
}
|
|
548
|
+
);
|
|
549
|
+
});
|
|
550
|
+
|
|
551
|
+
// src/components/Input/Input.css.ts
|
|
552
|
+
var import_createRuntimeFn3 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
553
|
+
var adornment = "_19p5zvh6";
|
|
554
|
+
var field = "_19p5zvh7";
|
|
555
|
+
var fieldFullWidth = "_19p5zvh8";
|
|
556
|
+
var helperText = /* @__PURE__ */ (0, import_createRuntimeFn3.createRuntimeFn)({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
|
|
557
|
+
var input = "_19p5zvh5";
|
|
558
|
+
var label = "_19p5zvh9";
|
|
559
|
+
var requiredMark = "_19p5zvha";
|
|
560
|
+
var root3 = /* @__PURE__ */ (0, import_createRuntimeFn3.createRuntimeFn)({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
561
|
+
|
|
562
|
+
// src/components/Input/Input.tsx
|
|
563
|
+
var import_react6 = require("react");
|
|
564
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
565
|
+
var Input = /* @__PURE__ */ (0, import_react6.forwardRef)(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
|
|
566
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
567
|
+
"div",
|
|
568
|
+
{
|
|
569
|
+
className: cx(root3({ size, fullWidth }), rootClassName),
|
|
570
|
+
"data-invalid": invalid || void 0,
|
|
571
|
+
"data-disabled": disabled || void 0,
|
|
572
|
+
children: [
|
|
573
|
+
startAdornment && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: adornment, children: startAdornment }),
|
|
574
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
575
|
+
"input",
|
|
576
|
+
{
|
|
577
|
+
ref,
|
|
578
|
+
className: cx(input, className),
|
|
579
|
+
disabled,
|
|
580
|
+
"aria-invalid": invalid || void 0,
|
|
581
|
+
...rest
|
|
582
|
+
}
|
|
583
|
+
),
|
|
584
|
+
endAdornment && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: adornment, children: endAdornment })
|
|
585
|
+
]
|
|
586
|
+
}
|
|
587
|
+
);
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
// src/components/Input/TextField.tsx
|
|
591
|
+
var import_react7 = require("react");
|
|
592
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
593
|
+
var TextField = /* @__PURE__ */ (0, import_react7.forwardRef)(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
|
|
594
|
+
const generatedId = (0, import_react7.useId)();
|
|
595
|
+
const inputId = id ?? generatedId;
|
|
596
|
+
const helperId = helperText3 ? `${inputId}-helper` : void 0;
|
|
597
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
598
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: inputId, className: label, children: [
|
|
599
|
+
label6,
|
|
600
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
601
|
+
] }),
|
|
602
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
603
|
+
Input,
|
|
604
|
+
{
|
|
605
|
+
ref,
|
|
606
|
+
id: inputId,
|
|
607
|
+
invalid: error,
|
|
608
|
+
required,
|
|
609
|
+
fullWidth,
|
|
610
|
+
"aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
|
|
611
|
+
...rest
|
|
612
|
+
}
|
|
613
|
+
),
|
|
614
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
615
|
+
] });
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
// src/components/Modal/Modal.tsx
|
|
619
|
+
var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
620
|
+
var import_icons3 = require("@bestow-ui/icons");
|
|
621
|
+
|
|
622
|
+
// src/utils/useReturnFocus.ts
|
|
623
|
+
var import_react8 = require("react");
|
|
624
|
+
function useReturnFocus(hasTrigger, onCloseAutoFocus) {
|
|
625
|
+
const returnTo = (0, import_react8.useRef)(null);
|
|
626
|
+
return {
|
|
627
|
+
onOpenAutoFocus: () => {
|
|
628
|
+
returnTo.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
629
|
+
},
|
|
630
|
+
onCloseAutoFocus: (event) => {
|
|
631
|
+
onCloseAutoFocus?.(event);
|
|
632
|
+
if (event.defaultPrevented || hasTrigger) return;
|
|
633
|
+
const target = returnTo.current;
|
|
634
|
+
if (target && target.isConnected && target !== document.body) {
|
|
635
|
+
event.preventDefault();
|
|
636
|
+
target.focus();
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// src/components/Modal/Modal.css.ts
|
|
643
|
+
var import_createRuntimeFn4 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
644
|
+
var body = "_1pdsmv0a";
|
|
645
|
+
var closeButton = "_1pdsmv09";
|
|
646
|
+
var content2 = /* @__PURE__ */ (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
647
|
+
var description = "_1pdsmv08";
|
|
648
|
+
var footer = "_1pdsmv0b";
|
|
649
|
+
var header2 = "_1pdsmv05";
|
|
650
|
+
var headings = "_1pdsmv06";
|
|
651
|
+
var overlay = "_1pdsmv00";
|
|
652
|
+
var title = "_1pdsmv07";
|
|
653
|
+
|
|
654
|
+
// src/components/Modal/Modal.tsx
|
|
655
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
656
|
+
function Modal({
|
|
657
|
+
open,
|
|
658
|
+
defaultOpen,
|
|
659
|
+
onOpenChange,
|
|
660
|
+
trigger: trigger4,
|
|
661
|
+
title: title6,
|
|
662
|
+
description: description6,
|
|
663
|
+
children,
|
|
664
|
+
footer: footer6,
|
|
665
|
+
size,
|
|
666
|
+
hideCloseButton = false,
|
|
667
|
+
closeOnOverlayClick = true,
|
|
668
|
+
className,
|
|
669
|
+
onCloseAutoFocus
|
|
670
|
+
}) {
|
|
671
|
+
const portal2 = usePortalProps();
|
|
672
|
+
const m = useMessages();
|
|
673
|
+
const focus = useReturnFocus(Boolean(trigger4), onCloseAutoFocus);
|
|
674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
|
|
675
|
+
trigger4 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog.Trigger, { asChild: true, children: trigger4 }),
|
|
676
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Dialog.Portal, { children: [
|
|
677
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
|
|
678
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
679
|
+
Dialog.Content,
|
|
680
|
+
{
|
|
681
|
+
className: cx(portal2.className, content2({ size }), className),
|
|
682
|
+
style: portal2.style,
|
|
683
|
+
onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
|
|
684
|
+
onOpenAutoFocus: focus.onOpenAutoFocus,
|
|
685
|
+
onCloseAutoFocus: focus.onCloseAutoFocus,
|
|
686
|
+
...description6 ? {} : { "aria-describedby": void 0 },
|
|
687
|
+
children: [
|
|
688
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: header2, children: [
|
|
689
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: headings, children: [
|
|
690
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog.Title, { className: title, children: title6 }),
|
|
691
|
+
description6 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog.Description, { className: description, children: description6 })
|
|
692
|
+
] }),
|
|
693
|
+
!hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog.Close, { className: closeButton, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons3.XIcon, { size: 16 }) })
|
|
694
|
+
] }),
|
|
695
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: body, children }),
|
|
696
|
+
footer6 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: footer, children: footer6 })
|
|
697
|
+
]
|
|
698
|
+
}
|
|
699
|
+
)
|
|
700
|
+
] })
|
|
701
|
+
] });
|
|
702
|
+
}
|
|
703
|
+
var ModalClose = Dialog.Close;
|
|
704
|
+
|
|
705
|
+
// src/components/AddressInput/addressProviders.ts
|
|
706
|
+
var KAKAO_POSTCODE_SRC = "https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
|
|
707
|
+
var loading = null;
|
|
708
|
+
function loadKakaoPostcode() {
|
|
709
|
+
const w = window;
|
|
710
|
+
const existing = w.kakao?.Postcode ?? w.daum?.Postcode;
|
|
711
|
+
if (existing) return Promise.resolve(existing);
|
|
712
|
+
loading ?? (loading = new Promise((resolve, reject) => {
|
|
713
|
+
const script = document.createElement("script");
|
|
714
|
+
script.src = KAKAO_POSTCODE_SRC;
|
|
715
|
+
script.async = true;
|
|
716
|
+
script.onload = () => {
|
|
717
|
+
const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;
|
|
718
|
+
if (ctor) resolve(ctor);
|
|
719
|
+
else reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC5B4\uC694"));
|
|
720
|
+
};
|
|
721
|
+
script.onerror = () => {
|
|
722
|
+
loading = null;
|
|
723
|
+
reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694"));
|
|
724
|
+
};
|
|
725
|
+
document.head.appendChild(script);
|
|
726
|
+
}));
|
|
727
|
+
return loading;
|
|
728
|
+
}
|
|
729
|
+
function composeExtraAddress(data) {
|
|
730
|
+
if (data.userSelectedType !== "R") return "";
|
|
731
|
+
const parts = [];
|
|
732
|
+
if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);
|
|
733
|
+
if (data.buildingName && data.apartment === "Y") parts.push(data.buildingName);
|
|
734
|
+
return parts.length ? ` (${parts.join(", ")})` : "";
|
|
735
|
+
}
|
|
736
|
+
var kakaoPostcodeProvider = async (container2, onSelect) => {
|
|
737
|
+
const Postcode = await loadKakaoPostcode();
|
|
738
|
+
new Postcode({
|
|
739
|
+
width: "100%",
|
|
740
|
+
height: "100%",
|
|
741
|
+
oncomplete: (data) => {
|
|
742
|
+
const address = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || "";
|
|
743
|
+
onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });
|
|
744
|
+
}
|
|
745
|
+
}).embed(container2);
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
// src/components/AddressInput/AddressInput.css.ts
|
|
749
|
+
var fieldset = "_16fi7uy0";
|
|
750
|
+
var legend = "_16fi7uy1";
|
|
751
|
+
var row = "_16fi7uy2";
|
|
752
|
+
var searchArea = "_16fi7uy4";
|
|
753
|
+
var searchStatus = "_16fi7uy5";
|
|
754
|
+
var zonecode = "_16fi7uy3";
|
|
755
|
+
|
|
756
|
+
// src/components/AddressInput/AddressInput.tsx
|
|
757
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
758
|
+
var EMPTY = { zonecode: "", address: "", extraAddress: "", detail: "" };
|
|
759
|
+
function SearchArea({
|
|
760
|
+
provider,
|
|
761
|
+
onSelect,
|
|
762
|
+
loadErrorText,
|
|
763
|
+
loadingText
|
|
764
|
+
}) {
|
|
765
|
+
const containerRef = (0, import_react9.useRef)(null);
|
|
766
|
+
const [status, setStatus] = (0, import_react9.useState)("loading");
|
|
767
|
+
const onSelectRef = (0, import_react9.useRef)(onSelect);
|
|
768
|
+
(0, import_react9.useEffect)(() => {
|
|
769
|
+
onSelectRef.current = onSelect;
|
|
770
|
+
});
|
|
771
|
+
(0, import_react9.useEffect)(() => {
|
|
772
|
+
const container2 = containerRef.current;
|
|
773
|
+
if (!container2) return;
|
|
774
|
+
let cleanup;
|
|
775
|
+
let cancelled = false;
|
|
776
|
+
Promise.resolve().then(() => provider(container2, (result) => onSelectRef.current(result))).then((fn) => {
|
|
777
|
+
if (cancelled) fn?.();
|
|
778
|
+
else {
|
|
779
|
+
cleanup = fn;
|
|
780
|
+
setStatus("ready");
|
|
781
|
+
}
|
|
782
|
+
}).catch(() => !cancelled && setStatus("error"));
|
|
783
|
+
return () => {
|
|
784
|
+
cancelled = true;
|
|
785
|
+
cleanup?.();
|
|
786
|
+
};
|
|
787
|
+
}, [provider]);
|
|
788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: searchArea, children: [
|
|
789
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { ref: containerRef, style: { width: "100%", height: "100%" } }),
|
|
790
|
+
status !== "ready" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: searchStatus, role: "status", children: status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { label: loadingText }) : loadErrorText })
|
|
791
|
+
] });
|
|
792
|
+
}
|
|
793
|
+
var AddressInput = /* @__PURE__ */ (0, import_react9.forwardRef)(
|
|
794
|
+
function AddressInput2(props, ref) {
|
|
795
|
+
const {
|
|
796
|
+
value: value4,
|
|
797
|
+
defaultValue,
|
|
798
|
+
onValueChange,
|
|
799
|
+
label: labelProp,
|
|
800
|
+
required,
|
|
801
|
+
helperText: helperText3,
|
|
802
|
+
error,
|
|
803
|
+
disabled,
|
|
804
|
+
provider = kakaoPostcodeProvider,
|
|
805
|
+
searchLabel: searchLabelProp,
|
|
806
|
+
detailPlaceholder: detailPlaceholderProp,
|
|
807
|
+
loadErrorText: loadErrorTextProp,
|
|
808
|
+
name,
|
|
809
|
+
className
|
|
810
|
+
} = props;
|
|
811
|
+
const m = useMessages();
|
|
812
|
+
const label6 = labelProp ?? m.address ?? "\uC8FC\uC18C";
|
|
813
|
+
const searchLabel = searchLabelProp ?? m.addressSearch ?? "\uC8FC\uC18C \uAC80\uC0C9";
|
|
814
|
+
const detailPlaceholder = detailPlaceholderProp ?? m.detailAddressPlaceholder ?? "\uC0C1\uC138 \uC8FC\uC18C (\uB3D9\xB7\uD638\uC218 \uB4F1)";
|
|
815
|
+
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.";
|
|
816
|
+
const baseId = (0, import_react9.useId)();
|
|
817
|
+
const helperId = helperText3 ? `${baseId}-helper` : void 0;
|
|
818
|
+
const detailRef = (0, import_react9.useRef)(null);
|
|
819
|
+
const selectedRef = (0, import_react9.useRef)(false);
|
|
820
|
+
const [open, setOpen] = (0, import_react9.useState)(false);
|
|
821
|
+
const isControlled = "value" in props;
|
|
822
|
+
const [innerValue, setInnerValue] = (0, import_react9.useState)(defaultValue ?? EMPTY);
|
|
823
|
+
const current2 = isControlled ? value4 ?? EMPTY : innerValue;
|
|
824
|
+
const update = (next) => {
|
|
825
|
+
if (!isControlled) setInnerValue(next);
|
|
826
|
+
onValueChange?.(next);
|
|
827
|
+
};
|
|
828
|
+
const openSearch = () => {
|
|
829
|
+
if (disabled) return;
|
|
830
|
+
selectedRef.current = false;
|
|
831
|
+
setOpen(true);
|
|
832
|
+
};
|
|
833
|
+
const handleSelect = (result) => {
|
|
834
|
+
selectedRef.current = true;
|
|
835
|
+
update({
|
|
836
|
+
...current2,
|
|
837
|
+
zonecode: result.zonecode,
|
|
838
|
+
address: result.address,
|
|
839
|
+
extraAddress: result.extraAddress ?? ""
|
|
840
|
+
});
|
|
841
|
+
setOpen(false);
|
|
842
|
+
};
|
|
843
|
+
const fullAddress = `${current2.address}${current2.extraAddress ?? ""}`;
|
|
844
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("fieldset", { ref, className: cx(fieldset, className), disabled, "aria-describedby": helperId, children: [
|
|
845
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("legend", { className: legend, children: [
|
|
846
|
+
label6,
|
|
847
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
848
|
+
] }),
|
|
849
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: row, children: [
|
|
850
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
851
|
+
TextField,
|
|
852
|
+
{
|
|
853
|
+
"aria-label": m.postalCode ?? "\uC6B0\uD3B8\uBC88\uD638",
|
|
854
|
+
readOnly: true,
|
|
855
|
+
value: current2.zonecode,
|
|
856
|
+
placeholder: m.postalCode ?? "\uC6B0\uD3B8\uBC88\uD638",
|
|
857
|
+
error: error && !current2.zonecode,
|
|
858
|
+
"aria-required": required || void 0,
|
|
859
|
+
rootClassName: zonecode,
|
|
860
|
+
onClick: openSearch
|
|
861
|
+
}
|
|
862
|
+
),
|
|
863
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { variant: "outline", color: "neutral", onClick: openSearch, disabled, children: searchLabel })
|
|
864
|
+
] }),
|
|
865
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
866
|
+
TextField,
|
|
867
|
+
{
|
|
868
|
+
"aria-label": m.baseAddress ?? "\uAE30\uBCF8 \uC8FC\uC18C",
|
|
869
|
+
readOnly: true,
|
|
870
|
+
value: fullAddress,
|
|
871
|
+
placeholder: m.baseAddressPlaceholder ?? `${searchLabel}\uC744 \uB20C\uB7EC \uC8FC\uC18C\uB97C \uACE0\uB974\uC138\uC694`,
|
|
872
|
+
error: error && !current2.address,
|
|
873
|
+
"aria-required": required || void 0,
|
|
874
|
+
fullWidth: true,
|
|
875
|
+
onClick: openSearch
|
|
876
|
+
}
|
|
877
|
+
),
|
|
878
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
879
|
+
TextField,
|
|
880
|
+
{
|
|
881
|
+
ref: detailRef,
|
|
882
|
+
"aria-label": m.detailAddress ?? "\uC0C1\uC138 \uC8FC\uC18C",
|
|
883
|
+
value: current2.detail,
|
|
884
|
+
placeholder: detailPlaceholder,
|
|
885
|
+
onChange: (event) => update({ ...current2, detail: event.target.value }),
|
|
886
|
+
autoComplete: "address-line2",
|
|
887
|
+
fullWidth: true
|
|
888
|
+
}
|
|
889
|
+
),
|
|
890
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
|
|
891
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
892
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("input", { type: "hidden", name: `${name}[zonecode]`, value: current2.zonecode }),
|
|
893
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("input", { type: "hidden", name: `${name}[address]`, value: fullAddress }),
|
|
894
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("input", { type: "hidden", name: `${name}[detail]`, value: current2.detail })
|
|
895
|
+
] }),
|
|
896
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
897
|
+
Modal,
|
|
898
|
+
{
|
|
899
|
+
open,
|
|
900
|
+
onOpenChange: setOpen,
|
|
901
|
+
title: searchLabel,
|
|
902
|
+
description: m.addressSearchDescription ?? "\uB3C4\uB85C\uBA85, \uAC74\uBB3C\uBA85, \uC9C0\uBC88\uC73C\uB85C \uAC80\uC0C9\uD560 \uC218 \uC788\uC5B4\uC694.",
|
|
903
|
+
onCloseAutoFocus: (event) => {
|
|
904
|
+
if (selectedRef.current) {
|
|
905
|
+
event.preventDefault();
|
|
906
|
+
detailRef.current?.focus();
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
910
|
+
SearchArea,
|
|
911
|
+
{
|
|
912
|
+
provider,
|
|
913
|
+
onSelect: handleSelect,
|
|
914
|
+
loadErrorText,
|
|
915
|
+
loadingText: m.addressLoading ?? "\uC8FC\uC18C \uAC80\uC0C9\uC744 \uBD88\uB7EC\uC624\uB294 \uC911"
|
|
916
|
+
}
|
|
917
|
+
)
|
|
918
|
+
}
|
|
919
|
+
)
|
|
920
|
+
] });
|
|
921
|
+
}
|
|
922
|
+
);
|
|
923
|
+
|
|
924
|
+
// src/components/AgreementGroup/AgreementGroup.tsx
|
|
925
|
+
var import_react11 = require("react");
|
|
926
|
+
var import_icons4 = require("@bestow-ui/icons");
|
|
927
|
+
|
|
928
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
929
|
+
var import_react10 = require("react");
|
|
930
|
+
|
|
931
|
+
// src/utils/mergeRefs.ts
|
|
932
|
+
function mergeRefs(...refs) {
|
|
933
|
+
return (value4) => {
|
|
934
|
+
for (const ref of refs) {
|
|
935
|
+
if (typeof ref === "function") ref(value4);
|
|
936
|
+
else if (ref) ref.current = value4;
|
|
937
|
+
}
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// src/components/Checkbox/Checkbox.css.ts
|
|
942
|
+
var import_createRuntimeFn5 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
943
|
+
var checkIcon = "_1y7mzsn8 _1y7mzsn7";
|
|
944
|
+
var control = /* @__PURE__ */ (0, import_createRuntimeFn5.createRuntimeFn)({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
945
|
+
var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
|
|
946
|
+
var input2 = "_1y7mzsn6";
|
|
947
|
+
var root4 = /* @__PURE__ */ (0, import_createRuntimeFn5.createRuntimeFn)({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
948
|
+
|
|
949
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
950
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
951
|
+
var Checkbox = /* @__PURE__ */ (0, import_react10.forwardRef)(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, onChange, onCheckedChange, className, ...rest }, ref) {
|
|
952
|
+
const innerRef = (0, import_react10.useRef)(null);
|
|
953
|
+
(0, import_react10.useEffect)(() => {
|
|
954
|
+
if (innerRef.current) innerRef.current.indeterminate = indeterminate;
|
|
955
|
+
}, [indeterminate]);
|
|
956
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
|
|
957
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: control({ size }), children: [
|
|
958
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
959
|
+
"input",
|
|
960
|
+
{
|
|
961
|
+
ref: mergeRefs(innerRef, ref),
|
|
962
|
+
type: "checkbox",
|
|
963
|
+
className: input2,
|
|
964
|
+
disabled,
|
|
965
|
+
"aria-invalid": invalid || void 0,
|
|
966
|
+
onChange: (event) => {
|
|
967
|
+
onChange?.(event);
|
|
968
|
+
onCheckedChange?.(event.target.checked);
|
|
969
|
+
},
|
|
970
|
+
...rest
|
|
971
|
+
}
|
|
972
|
+
),
|
|
973
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
974
|
+
"path",
|
|
975
|
+
{
|
|
976
|
+
d: "M5 10.5l3.2 3L15 7",
|
|
977
|
+
stroke: "currentColor",
|
|
978
|
+
strokeWidth: "2",
|
|
979
|
+
strokeLinecap: "round",
|
|
980
|
+
strokeLinejoin: "round"
|
|
981
|
+
}
|
|
982
|
+
) }),
|
|
983
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
|
|
984
|
+
] }),
|
|
985
|
+
label6
|
|
986
|
+
] });
|
|
987
|
+
});
|
|
988
|
+
|
|
989
|
+
// src/components/AgreementGroup/AgreementGroup.css.ts
|
|
990
|
+
var all = "j3uxdc3";
|
|
991
|
+
var box = "j3uxdc2";
|
|
992
|
+
var chevron2 = "j3uxdc9";
|
|
993
|
+
var content3 = "j3uxdca";
|
|
994
|
+
var fieldset2 = "j3uxdc0";
|
|
995
|
+
var item2 = "j3uxdc5";
|
|
996
|
+
var legend2 = "j3uxdc1";
|
|
997
|
+
var list = "j3uxdc4";
|
|
998
|
+
var row2 = "j3uxdc6";
|
|
999
|
+
var tag = "j3uxdc7";
|
|
1000
|
+
var toggle = "j3uxdc8";
|
|
1001
|
+
|
|
1002
|
+
// src/components/AgreementGroup/AgreementGroup.tsx
|
|
1003
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1004
|
+
function hasAllRequiredAgreements(items2, value4) {
|
|
1005
|
+
return items2.every((item7) => !item7.required || value4.includes(item7.value));
|
|
1006
|
+
}
|
|
1007
|
+
var AgreementGroup = /* @__PURE__ */ (0, import_react11.forwardRef)(
|
|
1008
|
+
function AgreementGroup2(props, ref) {
|
|
1009
|
+
const {
|
|
1010
|
+
items: items2,
|
|
1011
|
+
value: value4,
|
|
1012
|
+
defaultValue,
|
|
1013
|
+
onValueChange,
|
|
1014
|
+
label: label6,
|
|
1015
|
+
allLabel: allLabelProp,
|
|
1016
|
+
helperText: helperText3,
|
|
1017
|
+
error,
|
|
1018
|
+
disabled,
|
|
1019
|
+
requiredText: requiredTextProp,
|
|
1020
|
+
optionalText: optionalTextProp,
|
|
1021
|
+
showText: showTextProp,
|
|
1022
|
+
hideText: hideTextProp,
|
|
1023
|
+
name,
|
|
1024
|
+
className
|
|
1025
|
+
} = props;
|
|
1026
|
+
const m = useMessages();
|
|
1027
|
+
const allLabel = allLabelProp ?? m.agreeAll ?? "\uC804\uCCB4 \uB3D9\uC758";
|
|
1028
|
+
const requiredText = requiredTextProp ?? m.required ?? "\uD544\uC218";
|
|
1029
|
+
const optionalText = optionalTextProp ?? m.optional ?? "\uC120\uD0DD";
|
|
1030
|
+
const showText = showTextProp ?? m.show ?? "\uBCF4\uAE30";
|
|
1031
|
+
const hideText = hideTextProp ?? m.hide ?? "\uC811\uAE30";
|
|
1032
|
+
const baseId = (0, import_react11.useId)();
|
|
1033
|
+
const helperId = helperText3 ? `${baseId}-helper` : void 0;
|
|
1034
|
+
const isControlled = "value" in props;
|
|
1035
|
+
const [innerValue, setInnerValue] = (0, import_react11.useState)(defaultValue ?? []);
|
|
1036
|
+
const agreed = isControlled ? value4 ?? [] : innerValue;
|
|
1037
|
+
const [expanded, setExpanded] = (0, import_react11.useState)([]);
|
|
1038
|
+
const update = (next) => {
|
|
1039
|
+
if (!isControlled) setInnerValue(next);
|
|
1040
|
+
onValueChange?.(next);
|
|
1041
|
+
};
|
|
1042
|
+
const allValues = items2.map((item7) => item7.value);
|
|
1043
|
+
const agreedCount = allValues.filter((v) => agreed.includes(v)).length;
|
|
1044
|
+
const allChecked = items2.length > 0 && agreedCount === items2.length;
|
|
1045
|
+
const toggleItem = (itemValue, checked) => update(checked ? [...agreed.filter((v) => v !== itemValue), itemValue] : agreed.filter((v) => v !== itemValue));
|
|
1046
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1047
|
+
"fieldset",
|
|
1048
|
+
{
|
|
1049
|
+
ref,
|
|
1050
|
+
className: cx(fieldset2, className),
|
|
1051
|
+
disabled,
|
|
1052
|
+
"aria-describedby": helperId,
|
|
1053
|
+
"data-invalid": error || void 0,
|
|
1054
|
+
children: [
|
|
1055
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("legend", { className: legend2, children: label6 }),
|
|
1056
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: box, children: [
|
|
1057
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: all, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1058
|
+
Checkbox,
|
|
1059
|
+
{
|
|
1060
|
+
label: allLabel,
|
|
1061
|
+
checked: allChecked,
|
|
1062
|
+
indeterminate: agreedCount > 0 && !allChecked,
|
|
1063
|
+
onChange: (event) => update(event.target.checked ? allValues : [])
|
|
1064
|
+
}
|
|
1065
|
+
) }),
|
|
1066
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("ul", { className: list, children: items2.map((item7) => {
|
|
1067
|
+
const labelId = `${baseId}-${item7.value}-label`;
|
|
1068
|
+
const toggleTextId = `${baseId}-${item7.value}-toggle`;
|
|
1069
|
+
const contentId = `${baseId}-${item7.value}-content`;
|
|
1070
|
+
const isOpen = expanded.includes(item7.value);
|
|
1071
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("li", { className: item2, children: [
|
|
1072
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: row2, children: [
|
|
1073
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1074
|
+
Checkbox,
|
|
1075
|
+
{
|
|
1076
|
+
size: "sm",
|
|
1077
|
+
checked: agreed.includes(item7.value),
|
|
1078
|
+
invalid: error && item7.required && !agreed.includes(item7.value),
|
|
1079
|
+
onChange: (event) => toggleItem(item7.value, event.target.checked),
|
|
1080
|
+
label: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { id: labelId, children: [
|
|
1081
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: tag, "data-required": item7.required || void 0, children: item7.required ? requiredText : optionalText }),
|
|
1082
|
+
" ",
|
|
1083
|
+
item7.label
|
|
1084
|
+
] })
|
|
1085
|
+
}
|
|
1086
|
+
),
|
|
1087
|
+
item7.content && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1088
|
+
"button",
|
|
1089
|
+
{
|
|
1090
|
+
type: "button",
|
|
1091
|
+
className: toggle,
|
|
1092
|
+
"aria-expanded": isOpen,
|
|
1093
|
+
"aria-controls": contentId,
|
|
1094
|
+
"aria-labelledby": `${labelId} ${toggleTextId}`,
|
|
1095
|
+
onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item7.value) : [...prev, item7.value]),
|
|
1096
|
+
children: [
|
|
1097
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { id: toggleTextId, children: isOpen ? hideText : showText }),
|
|
1098
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_icons4.ChevronDownIcon, { size: 14, className: chevron2 })
|
|
1099
|
+
]
|
|
1100
|
+
}
|
|
1101
|
+
)
|
|
1102
|
+
] }),
|
|
1103
|
+
item7.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
|
|
1104
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
1105
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item7.content })
|
|
1106
|
+
] }, item7.value);
|
|
1107
|
+
}) })
|
|
1108
|
+
] }),
|
|
1109
|
+
name && agreed.map((v) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("input", { type: "hidden", name, value: v }, v)),
|
|
1110
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
1111
|
+
]
|
|
1112
|
+
}
|
|
1113
|
+
);
|
|
1114
|
+
}
|
|
1115
|
+
);
|
|
1116
|
+
|
|
1117
|
+
// src/components/Alert/Alert.tsx
|
|
1118
|
+
var import_react12 = require("react");
|
|
1119
|
+
var import_icons5 = require("@bestow-ui/icons");
|
|
1120
|
+
|
|
1121
|
+
// src/components/Alert/Alert.css.ts
|
|
1122
|
+
var import_createRuntimeFn6 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
359
1123
|
var action = "bsmpc0j";
|
|
360
|
-
var alert = /* @__PURE__ */ (0,
|
|
361
|
-
var
|
|
362
|
-
var
|
|
363
|
-
var
|
|
364
|
-
var
|
|
365
|
-
var
|
|
1124
|
+
var alert = /* @__PURE__ */ (0, import_createRuntimeFn6.createRuntimeFn)({ defaultClassName: "bsmpc06", variantClassNames: { variant: { soft: "bsmpc07", outline: "bsmpc08", solid: "bsmpc09" }, color: { primary: "bsmpc0a", neutral: "bsmpc0b", danger: "bsmpc0c", success: "bsmpc0d", warning: "bsmpc0e" } }, defaultVariants: { variant: "soft", color: "primary" }, compoundVariants: [] });
|
|
1125
|
+
var closeButton2 = "bsmpc0k";
|
|
1126
|
+
var content4 = "bsmpc0g";
|
|
1127
|
+
var description2 = "bsmpc0i";
|
|
1128
|
+
var icon2 = "bsmpc0f";
|
|
1129
|
+
var title2 = "bsmpc0h";
|
|
366
1130
|
|
|
367
1131
|
// src/components/Alert/Alert.tsx
|
|
368
|
-
var
|
|
1132
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
369
1133
|
var defaultIcons = {
|
|
370
|
-
primary:
|
|
371
|
-
neutral:
|
|
372
|
-
success:
|
|
373
|
-
warning:
|
|
374
|
-
danger:
|
|
1134
|
+
primary: import_icons5.InfoIcon,
|
|
1135
|
+
neutral: import_icons5.InfoIcon,
|
|
1136
|
+
success: import_icons5.CircleCheckIcon,
|
|
1137
|
+
warning: import_icons5.TriangleAlertIcon,
|
|
1138
|
+
danger: import_icons5.CircleAlertIcon
|
|
375
1139
|
};
|
|
376
|
-
var Alert = /* @__PURE__ */ (0,
|
|
1140
|
+
var Alert = /* @__PURE__ */ (0, import_react12.forwardRef)(function Alert2({
|
|
1141
|
+
variant,
|
|
1142
|
+
color = "primary",
|
|
1143
|
+
title: title6,
|
|
1144
|
+
icon: icon6,
|
|
1145
|
+
action: action3,
|
|
1146
|
+
onClose,
|
|
1147
|
+
closeLabel: closeLabelProp,
|
|
1148
|
+
className,
|
|
1149
|
+
children,
|
|
1150
|
+
...rest
|
|
1151
|
+
}, ref) {
|
|
1152
|
+
const m = useMessages();
|
|
1153
|
+
const closeLabel = closeLabelProp ?? m.close ?? "\uB2EB\uAE30";
|
|
377
1154
|
const DefaultIcon = defaultIcons[color];
|
|
378
|
-
const iconNode = icon6 === void 0 ? /* @__PURE__ */ (0,
|
|
379
|
-
return /* @__PURE__ */ (0,
|
|
380
|
-
iconNode !== false && iconNode !== null && /* @__PURE__ */ (0,
|
|
381
|
-
/* @__PURE__ */ (0,
|
|
382
|
-
title6 && /* @__PURE__ */ (0,
|
|
383
|
-
children && /* @__PURE__ */ (0,
|
|
1155
|
+
const iconNode = icon6 === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultIcon, { size: 18 }) : icon6;
|
|
1156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
|
|
1157
|
+
iconNode !== false && iconNode !== null && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: icon2, "aria-hidden": true, children: iconNode }),
|
|
1158
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: content4, children: [
|
|
1159
|
+
title6 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: title2, children: title6 }),
|
|
1160
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: description2, children })
|
|
384
1161
|
] }),
|
|
385
|
-
action3 && /* @__PURE__ */ (0,
|
|
386
|
-
onClose && /* @__PURE__ */ (0,
|
|
1162
|
+
action3 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: action, children: action3 }),
|
|
1163
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("button", { type: "button", className: closeButton2, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons5.XIcon, { size: 16 }) })
|
|
387
1164
|
] });
|
|
388
1165
|
});
|
|
389
1166
|
|
|
1167
|
+
// src/components/AmountInput/AmountInput.tsx
|
|
1168
|
+
var import_react14 = require("react");
|
|
1169
|
+
|
|
1170
|
+
// src/utils/koreanFormat.ts
|
|
1171
|
+
var onlyDigits = (input5) => input5.replace(/\D/g, "");
|
|
1172
|
+
function phoneNumberMaxDigits(digits) {
|
|
1173
|
+
if (digits.startsWith("02")) return 10;
|
|
1174
|
+
if (/^1[568]/.test(digits)) return 8;
|
|
1175
|
+
return 11;
|
|
1176
|
+
}
|
|
1177
|
+
function formatPhoneNumber(input5) {
|
|
1178
|
+
const d = onlyDigits(input5).slice(0, phoneNumberMaxDigits(onlyDigits(input5)));
|
|
1179
|
+
if (d.startsWith("02")) {
|
|
1180
|
+
if (d.length <= 2) return d;
|
|
1181
|
+
if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;
|
|
1182
|
+
if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;
|
|
1183
|
+
return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;
|
|
1184
|
+
}
|
|
1185
|
+
if (/^1[568]/.test(d)) {
|
|
1186
|
+
return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;
|
|
1187
|
+
}
|
|
1188
|
+
if (d.length <= 3) return d;
|
|
1189
|
+
if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;
|
|
1190
|
+
if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;
|
|
1191
|
+
return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;
|
|
1192
|
+
}
|
|
1193
|
+
function formatBusinessNumber(input5) {
|
|
1194
|
+
const d = onlyDigits(input5).slice(0, 10);
|
|
1195
|
+
if (d.length <= 3) return d;
|
|
1196
|
+
if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;
|
|
1197
|
+
return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;
|
|
1198
|
+
}
|
|
1199
|
+
function isValidBusinessNumber(input5) {
|
|
1200
|
+
const d = onlyDigits(input5);
|
|
1201
|
+
if (d.length !== 10) return false;
|
|
1202
|
+
const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];
|
|
1203
|
+
const digits = [...d].map(Number);
|
|
1204
|
+
let sum = weights.reduce((acc, w, i) => acc + w * digits[i], 0);
|
|
1205
|
+
sum += Math.floor(digits[8] * 5 / 10);
|
|
1206
|
+
return (10 - sum % 10) % 10 === digits[9];
|
|
1207
|
+
}
|
|
1208
|
+
function formatKoreanAmount(amount, unit = "\uC6D0") {
|
|
1209
|
+
const n = Math.floor(Math.abs(amount));
|
|
1210
|
+
if (n === 0) return `0${unit}`;
|
|
1211
|
+
const units = [
|
|
1212
|
+
{ value: 1e12, label: "\uC870" },
|
|
1213
|
+
{ value: 1e8, label: "\uC5B5" },
|
|
1214
|
+
{ value: 1e4, label: "\uB9CC" },
|
|
1215
|
+
{ value: 1, label: "" }
|
|
1216
|
+
];
|
|
1217
|
+
let rest = n;
|
|
1218
|
+
const parts = [];
|
|
1219
|
+
for (const u of units) {
|
|
1220
|
+
const q = Math.floor(rest / u.value);
|
|
1221
|
+
rest %= u.value;
|
|
1222
|
+
if (q > 0) parts.push(`${q.toLocaleString("ko-KR")}${u.label}`);
|
|
1223
|
+
}
|
|
1224
|
+
return `${amount < 0 ? "-" : ""}${parts.join(" ")}${unit}`;
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
// src/utils/useFormattedInput.ts
|
|
1228
|
+
var import_react13 = require("react");
|
|
1229
|
+
function caretAfter(display, count2, isMeaningful) {
|
|
1230
|
+
if (count2 <= 0) return 0;
|
|
1231
|
+
let seen = 0;
|
|
1232
|
+
for (let i = 0; i < display.length; i++) {
|
|
1233
|
+
if (isMeaningful(display[i])) seen++;
|
|
1234
|
+
if (seen === count2) return i + 1;
|
|
1235
|
+
}
|
|
1236
|
+
return display.length;
|
|
1237
|
+
}
|
|
1238
|
+
function useFormattedInput({
|
|
1239
|
+
isControlled,
|
|
1240
|
+
value: value4,
|
|
1241
|
+
defaultValue,
|
|
1242
|
+
onValueChange,
|
|
1243
|
+
sanitize: sanitize4,
|
|
1244
|
+
format: format2,
|
|
1245
|
+
isMeaningful,
|
|
1246
|
+
inputRef
|
|
1247
|
+
}) {
|
|
1248
|
+
const [innerValue, setInnerValue] = (0, import_react13.useState)(() => sanitize4(defaultValue ?? ""));
|
|
1249
|
+
const raw = isControlled ? sanitize4(value4 ?? "") : innerValue;
|
|
1250
|
+
const display = format2(raw);
|
|
1251
|
+
const pendingCaret = (0, import_react13.useRef)(null);
|
|
1252
|
+
(0, import_react13.useLayoutEffect)(() => {
|
|
1253
|
+
const input5 = inputRef.current;
|
|
1254
|
+
if (pendingCaret.current === null || !input5 || document.activeElement !== input5) return;
|
|
1255
|
+
const position = caretAfter(input5.value, pendingCaret.current, isMeaningful);
|
|
1256
|
+
input5.setSelectionRange(position, position);
|
|
1257
|
+
pendingCaret.current = null;
|
|
1258
|
+
});
|
|
1259
|
+
const commit = (next, caretCount) => {
|
|
1260
|
+
pendingCaret.current = caretCount;
|
|
1261
|
+
if (!isControlled) setInnerValue(next);
|
|
1262
|
+
if (next !== raw) onValueChange?.(next);
|
|
1263
|
+
};
|
|
1264
|
+
const onChange = (event) => {
|
|
1265
|
+
const { value: typed, selectionStart } = event.target;
|
|
1266
|
+
const next = sanitize4(typed);
|
|
1267
|
+
const before = sanitize4(typed.slice(0, selectionStart ?? typed.length));
|
|
1268
|
+
commit(next, Math.min(before.length, next.length));
|
|
1269
|
+
};
|
|
1270
|
+
const onKeyDown = (event) => {
|
|
1271
|
+
const input5 = event.currentTarget;
|
|
1272
|
+
const { selectionStart: start, selectionEnd: end } = input5;
|
|
1273
|
+
if (start === null || start !== end) return;
|
|
1274
|
+
const countBefore = (text2) => [...text2].filter(isMeaningful).length;
|
|
1275
|
+
if (event.key === "Backspace" && start > 0 && !isMeaningful(input5.value[start - 1])) {
|
|
1276
|
+
const index = countBefore(input5.value.slice(0, start)) - 1;
|
|
1277
|
+
if (index < 0) return;
|
|
1278
|
+
event.preventDefault();
|
|
1279
|
+
commit(raw.slice(0, index) + raw.slice(index + 1), index);
|
|
1280
|
+
} else if (event.key === "Delete" && start < input5.value.length && !isMeaningful(input5.value[start])) {
|
|
1281
|
+
const index = countBefore(input5.value.slice(0, start));
|
|
1282
|
+
if (index >= raw.length) return;
|
|
1283
|
+
event.preventDefault();
|
|
1284
|
+
commit(raw.slice(0, index) + raw.slice(index + 1), index);
|
|
1285
|
+
}
|
|
1286
|
+
};
|
|
1287
|
+
const setRaw = (next) => setInnerValue(sanitize4(next));
|
|
1288
|
+
return { raw, display, onChange, onKeyDown, setRaw };
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
// src/components/AmountInput/AmountInput.css.ts
|
|
1292
|
+
var input3 = "_70qkav0";
|
|
1293
|
+
|
|
1294
|
+
// src/components/AmountInput/AmountInput.tsx
|
|
1295
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1296
|
+
var MAX_DIGITS = 15;
|
|
1297
|
+
var isDigit = (char) => /\d/.test(char);
|
|
1298
|
+
var AmountInput = /* @__PURE__ */ (0, import_react14.forwardRef)(
|
|
1299
|
+
function AmountInput2(props, ref) {
|
|
1300
|
+
const {
|
|
1301
|
+
value: value4,
|
|
1302
|
+
defaultValue,
|
|
1303
|
+
onValueChange,
|
|
1304
|
+
max,
|
|
1305
|
+
unit: unitProp,
|
|
1306
|
+
showKoreanAmount = true,
|
|
1307
|
+
label: labelProp,
|
|
1308
|
+
placeholder = "0",
|
|
1309
|
+
helperText: helperText3,
|
|
1310
|
+
onKeyDown,
|
|
1311
|
+
className,
|
|
1312
|
+
...rest
|
|
1313
|
+
} = props;
|
|
1314
|
+
const inputRef = (0, import_react14.useRef)(null);
|
|
1315
|
+
const m = useMessages();
|
|
1316
|
+
const unit = unitProp ?? m.currencyUnit ?? "\uC6D0";
|
|
1317
|
+
const label6 = labelProp ?? m.amount ?? "\uAE08\uC561";
|
|
1318
|
+
const sanitize4 = (input5) => {
|
|
1319
|
+
let digits = input5.replace(/\D/g, "").replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS);
|
|
1320
|
+
if (max !== void 0 && digits && Number(digits) > max) digits = String(Math.floor(max));
|
|
1321
|
+
return digits;
|
|
1322
|
+
};
|
|
1323
|
+
const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
|
|
1324
|
+
const field3 = useFormattedInput({
|
|
1325
|
+
isControlled: "value" in props,
|
|
1326
|
+
value: toRaw(value4),
|
|
1327
|
+
defaultValue: toRaw(defaultValue),
|
|
1328
|
+
onValueChange: (digits) => onValueChange?.(digits === "" ? null : Number(digits)),
|
|
1329
|
+
sanitize: sanitize4,
|
|
1330
|
+
format: (digits) => digits === "" ? "" : Number(digits).toLocaleString("ko-KR"),
|
|
1331
|
+
isMeaningful: isDigit,
|
|
1332
|
+
inputRef
|
|
1333
|
+
});
|
|
1334
|
+
const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit) : null;
|
|
1335
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1336
|
+
TextField,
|
|
1337
|
+
{
|
|
1338
|
+
ref: mergeRefs(ref, inputRef),
|
|
1339
|
+
label: label6,
|
|
1340
|
+
placeholder,
|
|
1341
|
+
inputMode: "numeric",
|
|
1342
|
+
value: field3.display,
|
|
1343
|
+
onChange: field3.onChange,
|
|
1344
|
+
onKeyDown: (event) => {
|
|
1345
|
+
field3.onKeyDown(event);
|
|
1346
|
+
onKeyDown?.(event);
|
|
1347
|
+
},
|
|
1348
|
+
endAdornment: unit,
|
|
1349
|
+
helperText: reading && helperText3 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
1350
|
+
reading,
|
|
1351
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("br", {}),
|
|
1352
|
+
helperText3
|
|
1353
|
+
] }) : reading ?? helperText3,
|
|
1354
|
+
className: cx(input3, className),
|
|
1355
|
+
...rest
|
|
1356
|
+
}
|
|
1357
|
+
);
|
|
1358
|
+
}
|
|
1359
|
+
);
|
|
1360
|
+
|
|
390
1361
|
// src/components/Avatar/Avatar.tsx
|
|
391
1362
|
var RadixAvatar = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
392
|
-
var
|
|
393
|
-
var
|
|
1363
|
+
var import_icons6 = require("@bestow-ui/icons");
|
|
1364
|
+
var import_react15 = require("react");
|
|
394
1365
|
|
|
395
1366
|
// src/components/Avatar/Avatar.css.ts
|
|
396
|
-
var
|
|
1367
|
+
var import_createRuntimeFn7 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
397
1368
|
var fallback = "_1fd2kp27";
|
|
398
1369
|
var image = "_1fd2kp26";
|
|
399
|
-
var
|
|
1370
|
+
var root5 = /* @__PURE__ */ (0, import_createRuntimeFn7.createRuntimeFn)({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
|
|
400
1371
|
|
|
401
1372
|
// src/components/Avatar/Avatar.tsx
|
|
402
|
-
var
|
|
1373
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
403
1374
|
function getInitials(name) {
|
|
404
1375
|
const [a = "", b = ""] = name.trim().split(/\s+/);
|
|
405
1376
|
const first = (word) => Array.from(word)[0] ?? "";
|
|
406
1377
|
return (first(a) + first(b)).toUpperCase();
|
|
407
1378
|
}
|
|
408
|
-
var Avatar = /* @__PURE__ */ (0,
|
|
1379
|
+
var Avatar = /* @__PURE__ */ (0, import_react15.forwardRef)(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
|
|
409
1380
|
const label6 = alt ?? name;
|
|
410
1381
|
const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
|
|
411
1382
|
const initials = name ? getInitials(name) : "";
|
|
412
|
-
return /* @__PURE__ */ (0,
|
|
413
|
-
src && /* @__PURE__ */ (0,
|
|
414
|
-
/* @__PURE__ */ (0,
|
|
1383
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(RadixAvatar.Root, { ref, className: cx(root5({ size, shape }), className), ...a11y, ...rest, children: [
|
|
1384
|
+
src && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RadixAvatar.Image, { src, alt: "", className: image }),
|
|
1385
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_icons6.UserIcon, { size: "60%" })) })
|
|
415
1386
|
] });
|
|
416
1387
|
});
|
|
417
1388
|
|
|
418
1389
|
// src/components/Badge/Badge.tsx
|
|
419
|
-
var
|
|
1390
|
+
var import_react16 = require("react");
|
|
420
1391
|
|
|
421
1392
|
// src/components/Badge/Badge.css.ts
|
|
422
|
-
var
|
|
423
|
-
var badge = /* @__PURE__ */ (0,
|
|
424
|
-
var
|
|
1393
|
+
var import_createRuntimeFn8 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1394
|
+
var badge = /* @__PURE__ */ (0, import_createRuntimeFn8.createRuntimeFn)({ defaultClassName: "_1295cfn4", variantClassNames: { variant: { solid: "_1295cfn5", soft: "_1295cfn6", outline: "_1295cfn7" }, color: { primary: "_1295cfn8", neutral: "_1295cfn9", danger: "_1295cfna", success: "_1295cfnb", warning: "_1295cfnc" }, size: { sm: "_1295cfnd", md: "_1295cfne", lg: "_1295cfnf" } }, defaultVariants: { variant: "soft", color: "neutral", size: "md" }, compoundVariants: [] });
|
|
1395
|
+
var icon3 = "_1295cfng";
|
|
425
1396
|
|
|
426
1397
|
// src/components/Badge/Badge.tsx
|
|
427
|
-
var
|
|
428
|
-
var Badge = /* @__PURE__ */ (0,
|
|
429
|
-
return /* @__PURE__ */ (0,
|
|
430
|
-
startIcon && /* @__PURE__ */ (0,
|
|
1398
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1399
|
+
var Badge = /* @__PURE__ */ (0, import_react16.forwardRef)(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
|
|
1400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
|
|
1401
|
+
startIcon && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: icon3, children: startIcon }),
|
|
431
1402
|
children
|
|
432
1403
|
] });
|
|
433
1404
|
});
|
|
434
1405
|
|
|
435
1406
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
436
|
-
var
|
|
437
|
-
var
|
|
1407
|
+
var import_react18 = require("react");
|
|
1408
|
+
var import_icons8 = require("@bestow-ui/icons");
|
|
438
1409
|
|
|
439
1410
|
// src/components/Link/Link.tsx
|
|
440
1411
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
441
|
-
var
|
|
442
|
-
var
|
|
443
|
-
|
|
444
|
-
// src/styles/visuallyHidden.css.ts
|
|
445
|
-
var visuallyHidden = "_1kdtbw10";
|
|
1412
|
+
var import_react17 = require("react");
|
|
1413
|
+
var import_icons7 = require("@bestow-ui/icons");
|
|
446
1414
|
|
|
447
1415
|
// src/components/Link/Link.css.ts
|
|
448
|
-
var
|
|
1416
|
+
var import_createRuntimeFn9 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
449
1417
|
var externalIcon = "_1t4hlp6";
|
|
450
|
-
var link = /* @__PURE__ */ (0,
|
|
1418
|
+
var link = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
|
|
451
1419
|
|
|
452
1420
|
// src/components/Link/Link.tsx
|
|
453
|
-
var
|
|
1421
|
+
var import_jsx_runtime16 = (
|
|
454
1422
|
// Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
|
|
455
1423
|
require("react/jsx-runtime")
|
|
456
1424
|
);
|
|
457
|
-
var Link = /* @__PURE__ */ (0,
|
|
1425
|
+
var Link = /* @__PURE__ */ (0, import_react17.forwardRef)(function Link2({
|
|
458
1426
|
as: Component = "a",
|
|
459
1427
|
asChild,
|
|
460
1428
|
color,
|
|
461
1429
|
underline,
|
|
462
1430
|
external,
|
|
463
|
-
externalLabel
|
|
1431
|
+
externalLabel: externalLabelProp,
|
|
464
1432
|
target,
|
|
465
1433
|
rel,
|
|
466
1434
|
className,
|
|
467
1435
|
children,
|
|
468
1436
|
...rest
|
|
469
1437
|
}, ref) {
|
|
1438
|
+
const m = useMessages();
|
|
1439
|
+
const externalLabel = externalLabelProp ?? m.newWindow ?? "(\uC0C8 \uCC3D)";
|
|
470
1440
|
const linkClassName = cx(link({ color, underline }), className);
|
|
471
1441
|
if (asChild) {
|
|
472
|
-
return /* @__PURE__ */ (0,
|
|
1442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_slot.Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children });
|
|
473
1443
|
}
|
|
474
|
-
return /* @__PURE__ */ (0,
|
|
1444
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
475
1445
|
Component,
|
|
476
1446
|
{
|
|
477
1447
|
ref,
|
|
@@ -481,10 +1451,10 @@ var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
|
|
|
481
1451
|
...rest,
|
|
482
1452
|
children: [
|
|
483
1453
|
children,
|
|
484
|
-
external && /* @__PURE__ */ (0,
|
|
1454
|
+
external && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
485
1455
|
" ",
|
|
486
|
-
/* @__PURE__ */ (0,
|
|
487
|
-
/* @__PURE__ */ (0,
|
|
1456
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_icons7.ExternalLinkIcon, { className: externalIcon }),
|
|
1457
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: visuallyHidden, children: externalLabel })
|
|
488
1458
|
] })
|
|
489
1459
|
]
|
|
490
1460
|
}
|
|
@@ -493,216 +1463,371 @@ var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
|
|
|
493
1463
|
|
|
494
1464
|
// src/components/Breadcrumb/Breadcrumb.css.ts
|
|
495
1465
|
var current = "_18t8ztt3";
|
|
496
|
-
var
|
|
1466
|
+
var item3 = "_18t8ztt1";
|
|
497
1467
|
var link2 = "_18t8ztt2";
|
|
498
|
-
var
|
|
1468
|
+
var list2 = "_18t8ztt0";
|
|
499
1469
|
var separator = "_18t8ztt4";
|
|
500
1470
|
|
|
501
1471
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
502
|
-
var
|
|
503
|
-
var Breadcrumb = /* @__PURE__ */ (0,
|
|
504
|
-
const
|
|
505
|
-
|
|
1472
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1473
|
+
var Breadcrumb = /* @__PURE__ */ (0, import_react18.forwardRef)(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabelProp, className, ...rest }, ref) {
|
|
1474
|
+
const m = useMessages();
|
|
1475
|
+
const ariaLabel = ariaLabelProp ?? m.breadcrumb ?? "\uC774\uB3D9 \uACBD\uB85C";
|
|
1476
|
+
const sep = separator3 ?? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons8.ChevronRightIcon, { size: 14 });
|
|
1477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("ol", { className: list2, children: items2.map((item7, index) => {
|
|
506
1478
|
const isCurrent = index === items2.length - 1;
|
|
507
|
-
return /* @__PURE__ */ (0,
|
|
508
|
-
index > 0 && /* @__PURE__ */ (0,
|
|
509
|
-
isCurrent ||
|
|
1479
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("li", { className: item3, children: [
|
|
1480
|
+
index > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: separator, "aria-hidden": true, children: sep }),
|
|
1481
|
+
isCurrent || item7.href === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item7.label }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Link, { as: linkAs, href: item7.href, color: "neutral", underline: "hover", className: link2, children: item7.label })
|
|
510
1482
|
] }, index);
|
|
511
1483
|
}) }) });
|
|
512
1484
|
});
|
|
513
1485
|
|
|
514
|
-
// src/components/
|
|
515
|
-
var
|
|
1486
|
+
// src/components/BusinessNumberInput/BusinessNumberInput.tsx
|
|
1487
|
+
var import_react19 = require("react");
|
|
1488
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1489
|
+
var sanitize = (input5) => input5.replace(/\D/g, "").slice(0, 10);
|
|
1490
|
+
var isDigit2 = (char) => /\d/.test(char);
|
|
1491
|
+
var BusinessNumberInput = /* @__PURE__ */ (0, import_react19.forwardRef)(
|
|
1492
|
+
function BusinessNumberInput2(props, ref) {
|
|
1493
|
+
const {
|
|
1494
|
+
value: value4,
|
|
1495
|
+
defaultValue,
|
|
1496
|
+
onValueChange,
|
|
1497
|
+
validate = true,
|
|
1498
|
+
invalidText: invalidTextProp,
|
|
1499
|
+
label: labelProp,
|
|
1500
|
+
placeholder = "000-00-00000",
|
|
1501
|
+
error,
|
|
1502
|
+
helperText: helperText3,
|
|
1503
|
+
onBlur,
|
|
1504
|
+
onKeyDown,
|
|
1505
|
+
...rest
|
|
1506
|
+
} = props;
|
|
1507
|
+
const inputRef = (0, import_react19.useRef)(null);
|
|
1508
|
+
const m = useMessages();
|
|
1509
|
+
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.";
|
|
1510
|
+
const label6 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
|
|
1511
|
+
const incompleteText = m.businessNumberIncomplete ?? "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
|
|
1512
|
+
const [touched, setTouched] = (0, import_react19.useState)(false);
|
|
1513
|
+
const field3 = useFormattedInput({
|
|
1514
|
+
isControlled: "value" in props,
|
|
1515
|
+
value: value4,
|
|
1516
|
+
defaultValue,
|
|
1517
|
+
onValueChange: (digits) => onValueChange?.(digits, digits.length === 10 ? isValidBusinessNumber(digits) : null),
|
|
1518
|
+
sanitize,
|
|
1519
|
+
format: formatBusinessNumber,
|
|
1520
|
+
isMeaningful: isDigit2,
|
|
1521
|
+
inputRef
|
|
1522
|
+
});
|
|
1523
|
+
const complete = field3.raw.length === 10;
|
|
1524
|
+
const autoInvalid = validate && field3.raw.length > 0 && (complete ? !isValidBusinessNumber(field3.raw) : touched);
|
|
1525
|
+
const showAuto = autoInvalid && error === void 0;
|
|
1526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1527
|
+
TextField,
|
|
1528
|
+
{
|
|
1529
|
+
ref: mergeRefs(ref, inputRef),
|
|
1530
|
+
label: label6,
|
|
1531
|
+
placeholder,
|
|
1532
|
+
inputMode: "numeric",
|
|
1533
|
+
value: field3.display,
|
|
1534
|
+
onChange: field3.onChange,
|
|
1535
|
+
onKeyDown: (event) => {
|
|
1536
|
+
field3.onKeyDown(event);
|
|
1537
|
+
onKeyDown?.(event);
|
|
1538
|
+
},
|
|
1539
|
+
onBlur: (event) => {
|
|
1540
|
+
setTouched(true);
|
|
1541
|
+
onBlur?.(event);
|
|
1542
|
+
},
|
|
1543
|
+
error: error ?? autoInvalid,
|
|
1544
|
+
helperText: showAuto ? complete ? invalidText : incompleteText : helperText3,
|
|
1545
|
+
...rest
|
|
1546
|
+
}
|
|
1547
|
+
);
|
|
1548
|
+
}
|
|
1549
|
+
);
|
|
516
1550
|
|
|
517
|
-
// src/components/
|
|
518
|
-
var
|
|
519
|
-
var
|
|
1551
|
+
// src/components/Calendar/Calendar.tsx
|
|
1552
|
+
var import_react21 = require("react");
|
|
1553
|
+
var import_icons9 = require("@bestow-ui/icons");
|
|
520
1554
|
|
|
521
|
-
// src/
|
|
522
|
-
var
|
|
523
|
-
|
|
1555
|
+
// src/utils/date.ts
|
|
1556
|
+
var pad = (n) => String(n).padStart(2, "0");
|
|
1557
|
+
function toISODate(date) {
|
|
1558
|
+
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
|
|
1559
|
+
}
|
|
1560
|
+
function parseISODate(value4) {
|
|
1561
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value4 ?? "");
|
|
1562
|
+
if (!m) return null;
|
|
1563
|
+
const [y, mo, d] = [Number(m[1]), Number(m[2]), Number(m[3])];
|
|
1564
|
+
const date = new Date(y, mo - 1, d);
|
|
1565
|
+
return date.getFullYear() === y && date.getMonth() === mo - 1 && date.getDate() === d ? date : null;
|
|
1566
|
+
}
|
|
1567
|
+
function addDays(date, days) {
|
|
1568
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);
|
|
1569
|
+
}
|
|
1570
|
+
function addMonths(date, months) {
|
|
1571
|
+
const target = new Date(date.getFullYear(), date.getMonth() + months, 1);
|
|
1572
|
+
const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
|
|
1573
|
+
return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));
|
|
1574
|
+
}
|
|
1575
|
+
function isSameDay(a, b) {
|
|
1576
|
+
return !!a && !!b && toISODate(a) === toISODate(b);
|
|
1577
|
+
}
|
|
1578
|
+
function isSameMonth(a, b) {
|
|
1579
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
|
|
1580
|
+
}
|
|
1581
|
+
function compareDays(a, b) {
|
|
1582
|
+
const x = toISODate(a);
|
|
1583
|
+
const y = toISODate(b);
|
|
1584
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
|
1585
|
+
}
|
|
1586
|
+
function getCalendarWeeks(year, month) {
|
|
1587
|
+
const first = new Date(year, month, 1);
|
|
1588
|
+
const start = addDays(first, -first.getDay());
|
|
1589
|
+
return Array.from({ length: 6 }, (_, week) => Array.from({ length: 7 }, (_2, day2) => addDays(start, week * 7 + day2)));
|
|
1590
|
+
}
|
|
1591
|
+
var KOREAN_WEEKDAYS = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
|
|
1592
|
+
function formatKoreanDate(date, withWeekday = true) {
|
|
1593
|
+
const base = `${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${date.getDate()}\uC77C`;
|
|
1594
|
+
return withWeekday ? `${base} ${KOREAN_WEEKDAYS[date.getDay()]}\uC694\uC77C` : base;
|
|
1595
|
+
}
|
|
524
1596
|
|
|
525
|
-
// src/components/
|
|
526
|
-
var
|
|
527
|
-
var Spinner = /* @__PURE__ */ (0, import_react8.forwardRef)(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
|
|
528
|
-
const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
|
|
529
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
|
|
530
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons6.LoaderIcon, { size: "100%" }),
|
|
531
|
-
label6 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: visuallyHidden, children: label6 })
|
|
532
|
-
] });
|
|
533
|
-
});
|
|
1597
|
+
// src/components/IconButton/IconButton.tsx
|
|
1598
|
+
var import_react20 = require("react");
|
|
534
1599
|
|
|
535
|
-
// src/components/
|
|
536
|
-
var
|
|
537
|
-
var
|
|
538
|
-
var icon3 = "xcekdai";
|
|
1600
|
+
// src/components/IconButton/IconButton.css.ts
|
|
1601
|
+
var import_createRuntimeFn10 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1602
|
+
var iconButton = /* @__PURE__ */ (0, import_createRuntimeFn10.createRuntimeFn)({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
539
1603
|
|
|
540
|
-
// src/components/
|
|
541
|
-
var
|
|
542
|
-
var
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
size,
|
|
546
|
-
fullWidth,
|
|
547
|
-
startIcon,
|
|
548
|
-
endIcon,
|
|
549
|
-
loading,
|
|
550
|
-
className,
|
|
551
|
-
type = "button",
|
|
552
|
-
onClick,
|
|
553
|
-
children,
|
|
554
|
-
...rest
|
|
555
|
-
}, ref) {
|
|
556
|
-
const handleClick = (event) => {
|
|
557
|
-
if (loading) {
|
|
558
|
-
event.preventDefault();
|
|
559
|
-
return;
|
|
560
|
-
}
|
|
561
|
-
onClick?.(event);
|
|
562
|
-
};
|
|
563
|
-
const leading = loading ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { size: "sm", label: "" }) : startIcon;
|
|
564
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
565
|
-
"button",
|
|
1604
|
+
// src/components/IconButton/IconButton.tsx
|
|
1605
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1606
|
+
var IconButton = /* @__PURE__ */ (0, import_react20.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading: loading2, className, children, ...rest }, ref) {
|
|
1607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1608
|
+
Button,
|
|
566
1609
|
{
|
|
567
1610
|
ref,
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
1611
|
+
variant,
|
|
1612
|
+
color,
|
|
1613
|
+
size,
|
|
1614
|
+
loading: loading2,
|
|
1615
|
+
className: cx(iconButton({ size }), className),
|
|
573
1616
|
...rest,
|
|
574
|
-
children:
|
|
575
|
-
leading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: icon3, children: leading }),
|
|
576
|
-
children,
|
|
577
|
-
endIcon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: icon3, children: endIcon })
|
|
578
|
-
]
|
|
1617
|
+
children: !loading2 && children
|
|
579
1618
|
}
|
|
580
1619
|
);
|
|
581
1620
|
});
|
|
582
1621
|
|
|
583
|
-
// src/components/
|
|
584
|
-
var
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
var
|
|
588
|
-
var
|
|
589
|
-
var
|
|
590
|
-
var
|
|
591
|
-
var header2 = "dnuf1u8";
|
|
592
|
-
|
|
593
|
-
// src/components/Card/Card.tsx
|
|
594
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
595
|
-
var Card = /* @__PURE__ */ (0, import_react10.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
|
|
596
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
|
|
597
|
-
});
|
|
598
|
-
var CardHeader = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
|
|
599
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(header2, className), ...rest });
|
|
600
|
-
});
|
|
601
|
-
var CardBody = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardBody2({ className, ...rest }, ref) {
|
|
602
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(body, className), ...rest });
|
|
603
|
-
});
|
|
604
|
-
var CardFooter = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
|
|
605
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(footer, className), ...rest });
|
|
606
|
-
});
|
|
607
|
-
|
|
608
|
-
// src/components/Checkbox/Checkbox.tsx
|
|
609
|
-
var import_react11 = require("react");
|
|
1622
|
+
// src/components/Calendar/Calendar.css.ts
|
|
1623
|
+
var cell = "_1qyq67b5";
|
|
1624
|
+
var day = "_1qyq67b6";
|
|
1625
|
+
var grid = "_1qyq67b3";
|
|
1626
|
+
var header3 = "_1qyq67b1";
|
|
1627
|
+
var heading = "_1qyq67b2";
|
|
1628
|
+
var root6 = "_1qyq67b0";
|
|
1629
|
+
var weekday = "_1qyq67b4";
|
|
610
1630
|
|
|
611
|
-
// src/
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
1631
|
+
// src/components/Calendar/Calendar.tsx
|
|
1632
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1633
|
+
var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2(props, ref) {
|
|
1634
|
+
const {
|
|
1635
|
+
value: value4,
|
|
1636
|
+
defaultValue,
|
|
1637
|
+
onValueChange,
|
|
1638
|
+
min,
|
|
1639
|
+
max,
|
|
1640
|
+
isDateDisabled,
|
|
1641
|
+
isHoliday,
|
|
1642
|
+
today: todayProp,
|
|
1643
|
+
initialFocus,
|
|
1644
|
+
prevMonthLabel: prevMonthLabelProp,
|
|
1645
|
+
nextMonthLabel: nextMonthLabelProp,
|
|
1646
|
+
className
|
|
1647
|
+
} = props;
|
|
1648
|
+
const m = useMessages();
|
|
1649
|
+
const prevMonthLabel = prevMonthLabelProp ?? m.previousMonth ?? "\uC774\uC804 \uB2EC";
|
|
1650
|
+
const nextMonthLabel = nextMonthLabelProp ?? m.nextMonth ?? "\uB2E4\uC74C \uB2EC";
|
|
1651
|
+
const weekdaysShort = m.weekdaysShort ?? KOREAN_WEEKDAYS;
|
|
1652
|
+
const weekdaysLong = m.weekdaysLong ?? KOREAN_WEEKDAYS.map((name) => `${name}\uC694\uC77C`);
|
|
1653
|
+
const headingId = (0, import_react21.useId)();
|
|
1654
|
+
const gridRef = (0, import_react21.useRef)(null);
|
|
1655
|
+
const isControlled = "value" in props;
|
|
1656
|
+
const [innerValue, setInnerValue] = (0, import_react21.useState)(defaultValue ?? "");
|
|
1657
|
+
const selected = parseISODate(isControlled ? value4 : innerValue);
|
|
1658
|
+
const today = parseISODate(todayProp) ?? /* @__PURE__ */ new Date();
|
|
1659
|
+
const minDate = parseISODate(min);
|
|
1660
|
+
const maxDate = parseISODate(max);
|
|
1661
|
+
const clamp = (date) => {
|
|
1662
|
+
if (minDate && compareDays(date, minDate) < 0) return minDate;
|
|
1663
|
+
if (maxDate && compareDays(date, maxDate) > 0) return maxDate;
|
|
1664
|
+
return date;
|
|
1665
|
+
};
|
|
1666
|
+
const isDisabled = (date) => minDate !== null && compareDays(date, minDate) < 0 || maxDate !== null && compareDays(date, maxDate) > 0 || !!isDateDisabled?.(date);
|
|
1667
|
+
const [focused, setFocused] = (0, import_react21.useState)(() => clamp(selected ?? today));
|
|
1668
|
+
const moveFocus = (0, import_react21.useRef)(initialFocus ?? false);
|
|
1669
|
+
const selectedIso = selected ? toISODate(selected) : "";
|
|
1670
|
+
(0, import_react21.useEffect)(() => {
|
|
1671
|
+
const date = parseISODate(selectedIso);
|
|
1672
|
+
if (date) setFocused((prev) => isSameDay(prev, date) ? prev : date);
|
|
1673
|
+
}, [selectedIso]);
|
|
1674
|
+
(0, import_react21.useEffect)(() => {
|
|
1675
|
+
if (!moveFocus.current) return;
|
|
1676
|
+
moveFocus.current = false;
|
|
1677
|
+
gridRef.current?.querySelector(`[data-date="${toISODate(focused)}"]`)?.focus();
|
|
1678
|
+
}, [focused]);
|
|
1679
|
+
const focusDate = (date) => {
|
|
1680
|
+
moveFocus.current = true;
|
|
1681
|
+
setFocused(clamp(date));
|
|
1682
|
+
};
|
|
1683
|
+
const select = (date) => {
|
|
1684
|
+
if (isDisabled(date)) return;
|
|
1685
|
+
const iso = toISODate(date);
|
|
1686
|
+
if (!isControlled) setInnerValue(iso);
|
|
1687
|
+
onValueChange?.(iso);
|
|
1688
|
+
setFocused(date);
|
|
1689
|
+
};
|
|
1690
|
+
const handleKeyDown = (event) => {
|
|
1691
|
+
const moves = {
|
|
1692
|
+
ArrowLeft: () => addDays(focused, -1),
|
|
1693
|
+
ArrowRight: () => addDays(focused, 1),
|
|
1694
|
+
ArrowUp: () => addDays(focused, -7),
|
|
1695
|
+
ArrowDown: () => addDays(focused, 7),
|
|
1696
|
+
Home: () => addDays(focused, -focused.getDay()),
|
|
1697
|
+
End: () => addDays(focused, 6 - focused.getDay()),
|
|
1698
|
+
PageUp: () => addMonths(focused, event.shiftKey ? -12 : -1),
|
|
1699
|
+
PageDown: () => addMonths(focused, event.shiftKey ? 12 : 1)
|
|
1700
|
+
};
|
|
1701
|
+
const move = moves[event.key];
|
|
1702
|
+
if (move) {
|
|
1703
|
+
event.preventDefault();
|
|
1704
|
+
focusDate(move());
|
|
617
1705
|
}
|
|
618
1706
|
};
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
var Checkbox = /* @__PURE__ */ (0, import_react11.forwardRef)(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
|
|
632
|
-
const innerRef = (0, import_react11.useRef)(null);
|
|
633
|
-
(0, import_react11.useEffect)(() => {
|
|
634
|
-
if (innerRef.current) innerRef.current.indeterminate = indeterminate;
|
|
635
|
-
}, [indeterminate]);
|
|
636
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
|
|
637
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: control({ size }), children: [
|
|
638
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
639
|
-
"input",
|
|
1707
|
+
const visible = focused;
|
|
1708
|
+
const weeks = getCalendarWeeks(visible.getFullYear(), visible.getMonth()).filter(
|
|
1709
|
+
(week) => week.some((date) => isSameMonth(date, visible))
|
|
1710
|
+
);
|
|
1711
|
+
const prevMonth = addMonths(visible, -1);
|
|
1712
|
+
const nextMonth = addMonths(visible, 1);
|
|
1713
|
+
const canPrev = !minDate || compareDays(new Date(visible.getFullYear(), visible.getMonth(), 0), minDate) >= 0;
|
|
1714
|
+
const canNext = !maxDate || compareDays(new Date(visible.getFullYear(), visible.getMonth() + 1, 1), maxDate) <= 0;
|
|
1715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { ref, className: cx(root6, className), children: [
|
|
1716
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: header3, children: [
|
|
1717
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1718
|
+
IconButton,
|
|
640
1719
|
{
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
...rest
|
|
1720
|
+
"aria-label": prevMonthLabel,
|
|
1721
|
+
size: "sm",
|
|
1722
|
+
disabled: !canPrev,
|
|
1723
|
+
onClick: () => setFocused(clamp(prevMonth)),
|
|
1724
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons9.ChevronLeftIcon, {})
|
|
647
1725
|
}
|
|
648
1726
|
),
|
|
649
|
-
/* @__PURE__ */ (0,
|
|
650
|
-
|
|
1727
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { id: headingId, className: heading, "aria-live": "polite", children: m.monthTitle?.(visible.getFullYear(), visible.getMonth() + 1) ?? `${visible.getFullYear()}\uB144 ${visible.getMonth() + 1}\uC6D4` }),
|
|
1728
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1729
|
+
IconButton,
|
|
651
1730
|
{
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
1731
|
+
"aria-label": nextMonthLabel,
|
|
1732
|
+
size: "sm",
|
|
1733
|
+
disabled: !canNext,
|
|
1734
|
+
onClick: () => setFocused(clamp(nextMonth)),
|
|
1735
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons9.ChevronRightIcon, {})
|
|
657
1736
|
}
|
|
658
|
-
)
|
|
659
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
|
|
1737
|
+
)
|
|
660
1738
|
] }),
|
|
661
|
-
|
|
1739
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("table", { ref: gridRef, role: "grid", "aria-labelledby": headingId, className: grid, onKeyDown: handleKeyDown, children: [
|
|
1740
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tr", { children: weekdaysShort.map((name, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("th", { scope: "col", abbr: weekdaysLong[index], className: weekday, "data-weekday": index, children: name }, index)) }) }),
|
|
1741
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tbody", { children: weeks.map((week) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tr", { children: week.map((date) => {
|
|
1742
|
+
const iso = toISODate(date);
|
|
1743
|
+
if (!isSameMonth(date, visible)) return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("td", { role: "gridcell", className: cell }, iso);
|
|
1744
|
+
const isSelected = isSameDay(date, selected);
|
|
1745
|
+
const isToday = isSameDay(date, today);
|
|
1746
|
+
const holiday = !!isHoliday?.(date);
|
|
1747
|
+
const disabled = isDisabled(date);
|
|
1748
|
+
const label6 = [
|
|
1749
|
+
m.dayLabel?.(date, weekdaysLong[date.getDay()]) ?? `${date.getDate()}, ${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${weekdaysLong[date.getDay()]}`,
|
|
1750
|
+
holiday && (m.holiday ?? "\uACF5\uD734\uC77C"),
|
|
1751
|
+
isToday && (m.today ?? "\uC624\uB298")
|
|
1752
|
+
].filter(Boolean).join(", ");
|
|
1753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("td", { role: "gridcell", "aria-selected": isSelected, className: cell, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1754
|
+
"button",
|
|
1755
|
+
{
|
|
1756
|
+
type: "button",
|
|
1757
|
+
className: day,
|
|
1758
|
+
"data-date": iso,
|
|
1759
|
+
"data-weekday": date.getDay(),
|
|
1760
|
+
"data-holiday": holiday || void 0,
|
|
1761
|
+
"data-selected": isSelected || void 0,
|
|
1762
|
+
tabIndex: isSameDay(date, focused) ? 0 : -1,
|
|
1763
|
+
"aria-label": label6,
|
|
1764
|
+
"aria-current": isToday ? "date" : void 0,
|
|
1765
|
+
"aria-disabled": disabled || void 0,
|
|
1766
|
+
onClick: () => select(date),
|
|
1767
|
+
onFocus: () => !isSameDay(date, focused) && setFocused(date),
|
|
1768
|
+
children: date.getDate()
|
|
1769
|
+
}
|
|
1770
|
+
) }, iso);
|
|
1771
|
+
}) }, toISODate(week[0]))) })
|
|
1772
|
+
] })
|
|
662
1773
|
] });
|
|
663
1774
|
});
|
|
664
1775
|
|
|
1776
|
+
// src/components/Card/Card.tsx
|
|
1777
|
+
var import_react22 = require("react");
|
|
1778
|
+
|
|
1779
|
+
// src/components/Card/Card.css.ts
|
|
1780
|
+
var import_createRuntimeFn11 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1781
|
+
var body2 = "dnuf1u9";
|
|
1782
|
+
var card = /* @__PURE__ */ (0, import_createRuntimeFn11.createRuntimeFn)({ defaultClassName: "dnuf1u0", variantClassNames: { variant: { outline: "dnuf1u1", elevated: "dnuf1u2", soft: "dnuf1u3" }, padding: { none: "dnuf1u4", sm: "dnuf1u5", md: "dnuf1u6", lg: "dnuf1u7" } }, defaultVariants: { variant: "outline", padding: "md" }, compoundVariants: [] });
|
|
1783
|
+
var footer2 = "dnuf1ua";
|
|
1784
|
+
var header4 = "dnuf1u8";
|
|
1785
|
+
|
|
1786
|
+
// src/components/Card/Card.tsx
|
|
1787
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1788
|
+
var Card = /* @__PURE__ */ (0, import_react22.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
|
|
1789
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
|
|
1790
|
+
});
|
|
1791
|
+
var CardHeader = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
|
|
1792
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(header4, className), ...rest });
|
|
1793
|
+
});
|
|
1794
|
+
var CardBody = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardBody2({ className, ...rest }, ref) {
|
|
1795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(body2, className), ...rest });
|
|
1796
|
+
});
|
|
1797
|
+
var CardFooter = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
|
|
1798
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(footer2, className), ...rest });
|
|
1799
|
+
});
|
|
1800
|
+
|
|
665
1801
|
// src/components/Combobox/Combobox.tsx
|
|
666
1802
|
var Popover = __toESM(require("@radix-ui/react-popover"), 1);
|
|
667
|
-
var
|
|
668
|
-
var
|
|
669
|
-
|
|
670
|
-
// src/components/Input/Input.css.ts
|
|
671
|
-
var import_createRuntimeFn9 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
672
|
-
var adornment = "_19p5zvh6";
|
|
673
|
-
var field = "_19p5zvh7";
|
|
674
|
-
var fieldFullWidth = "_19p5zvh8";
|
|
675
|
-
var helperText = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
|
|
676
|
-
var input2 = "_19p5zvh5";
|
|
677
|
-
var label = "_19p5zvh9";
|
|
678
|
-
var requiredMark = "_19p5zvha";
|
|
679
|
-
var root5 = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1803
|
+
var import_react23 = require("react");
|
|
1804
|
+
var import_icons10 = require("@bestow-ui/icons");
|
|
680
1805
|
|
|
681
1806
|
// src/components/Select/Select.css.ts
|
|
682
|
-
var
|
|
1807
|
+
var content5 = "_1kx81e83";
|
|
683
1808
|
var icon4 = "_1kx81e82";
|
|
684
|
-
var
|
|
1809
|
+
var item4 = "_1kx81e85";
|
|
685
1810
|
var itemIndicator = "_1kx81e86";
|
|
686
1811
|
var trigger2 = "_1kx81e80";
|
|
687
1812
|
var value = "_1kx81e81";
|
|
688
1813
|
var viewport = "_1kx81e84";
|
|
689
1814
|
|
|
690
1815
|
// src/components/Combobox/Combobox.css.ts
|
|
691
|
-
var
|
|
1816
|
+
var content6 = "c2pbq71";
|
|
692
1817
|
var empty = "c2pbq72";
|
|
693
|
-
var
|
|
1818
|
+
var toggle2 = "c2pbq70";
|
|
694
1819
|
|
|
695
1820
|
// src/components/Combobox/Combobox.tsx
|
|
696
|
-
var
|
|
1821
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
697
1822
|
var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
|
|
698
|
-
var Combobox = /* @__PURE__ */ (0,
|
|
1823
|
+
var Combobox = /* @__PURE__ */ (0, import_react23.forwardRef)(function Combobox2(props, ref) {
|
|
699
1824
|
const {
|
|
700
1825
|
options,
|
|
701
1826
|
value: value4,
|
|
702
1827
|
defaultValue,
|
|
703
1828
|
onValueChange,
|
|
704
1829
|
filter = defaultFilter,
|
|
705
|
-
emptyMessage
|
|
1830
|
+
emptyMessage: emptyMessageProp,
|
|
706
1831
|
placeholder,
|
|
707
1832
|
label: label6,
|
|
708
1833
|
helperText: helperText3,
|
|
@@ -714,36 +1839,39 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
714
1839
|
name,
|
|
715
1840
|
id,
|
|
716
1841
|
"aria-label": ariaLabel,
|
|
717
|
-
toggleLabel
|
|
1842
|
+
toggleLabel: toggleLabelProp,
|
|
718
1843
|
className
|
|
719
1844
|
} = props;
|
|
720
|
-
const
|
|
1845
|
+
const m = useMessages();
|
|
1846
|
+
const emptyMessage = emptyMessageProp ?? m.noResults ?? "\uACB0\uACFC\uAC00 \uC5C6\uC5B4\uC694";
|
|
1847
|
+
const toggleLabel = toggleLabelProp ?? m.openList ?? "\uBAA9\uB85D \uC5F4\uAE30";
|
|
1848
|
+
const generatedId = (0, import_react23.useId)();
|
|
721
1849
|
const inputId = id ?? generatedId;
|
|
722
1850
|
const labelId = `${inputId}-label`;
|
|
723
1851
|
const listId = `${inputId}-listbox`;
|
|
724
1852
|
const helperId = helperText3 ? `${inputId}-helper` : void 0;
|
|
725
1853
|
const optionId = (index) => `${inputId}-option-${index}`;
|
|
726
1854
|
const portal2 = usePortalProps();
|
|
727
|
-
const inputRef = (0,
|
|
728
|
-
const anchorRef = (0,
|
|
1855
|
+
const inputRef = (0, import_react23.useRef)(null);
|
|
1856
|
+
const anchorRef = (0, import_react23.useRef)(null);
|
|
729
1857
|
const isControlled = "value" in props;
|
|
730
|
-
const [innerValue, setInnerValue] = (0,
|
|
1858
|
+
const [innerValue, setInnerValue] = (0, import_react23.useState)(defaultValue);
|
|
731
1859
|
const selectedValue = isControlled ? value4 : innerValue;
|
|
732
1860
|
const selectedOption = options.find((o) => o.value === selectedValue);
|
|
733
|
-
const [open, setOpen] = (0,
|
|
734
|
-
const [query, setQuery] = (0,
|
|
735
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
736
|
-
const filtered = (0,
|
|
1861
|
+
const [open, setOpen] = (0, import_react23.useState)(false);
|
|
1862
|
+
const [query, setQuery] = (0, import_react23.useState)(null);
|
|
1863
|
+
const [activeIndex, setActiveIndex] = (0, import_react23.useState)(-1);
|
|
1864
|
+
const filtered = (0, import_react23.useMemo)(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
|
|
737
1865
|
const inputText = query ?? selectedOption?.label ?? "";
|
|
738
|
-
const firstEnabled = (
|
|
739
|
-
for (let i = from; i >= 0 && i <
|
|
1866
|
+
const firstEnabled = (list5, from = 0, step = 1) => {
|
|
1867
|
+
for (let i = from; i >= 0 && i < list5.length; i += step) if (!list5[i].disabled) return i;
|
|
740
1868
|
return -1;
|
|
741
1869
|
};
|
|
742
|
-
const openList = (
|
|
1870
|
+
const openList = (list5 = filtered, preferLast = false) => {
|
|
743
1871
|
setOpen(true);
|
|
744
|
-
const selectedIndex =
|
|
1872
|
+
const selectedIndex = list5.findIndex((o) => o.value === selectedValue);
|
|
745
1873
|
setActiveIndex(
|
|
746
|
-
selectedIndex >= 0 && !
|
|
1874
|
+
selectedIndex >= 0 && !list5[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list5, list5.length - 1, -1) : firstEnabled(list5)
|
|
747
1875
|
);
|
|
748
1876
|
};
|
|
749
1877
|
const close2 = () => {
|
|
@@ -799,26 +1927,26 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
799
1927
|
break;
|
|
800
1928
|
}
|
|
801
1929
|
};
|
|
802
|
-
(0,
|
|
1930
|
+
(0, import_react23.useEffect)(() => {
|
|
803
1931
|
if (!open || activeIndex < 0) return;
|
|
804
1932
|
document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
|
|
805
1933
|
}, [open, activeIndex]);
|
|
806
1934
|
const hasOptions = filtered.length > 0;
|
|
807
|
-
return /* @__PURE__ */ (0,
|
|
808
|
-
label6 && /* @__PURE__ */ (0,
|
|
1935
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
1936
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("label", { id: labelId, htmlFor: inputId, className: label, children: [
|
|
809
1937
|
label6,
|
|
810
|
-
required && /* @__PURE__ */ (0,
|
|
1938
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
811
1939
|
] }),
|
|
812
|
-
/* @__PURE__ */ (0,
|
|
813
|
-
/* @__PURE__ */ (0,
|
|
1940
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
|
|
1941
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
814
1942
|
"div",
|
|
815
1943
|
{
|
|
816
1944
|
ref: anchorRef,
|
|
817
|
-
className: cx(
|
|
1945
|
+
className: cx(root3({ size, fullWidth }), className),
|
|
818
1946
|
"data-invalid": error || void 0,
|
|
819
1947
|
"data-disabled": disabled || void 0,
|
|
820
1948
|
children: [
|
|
821
|
-
/* @__PURE__ */ (0,
|
|
1949
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
822
1950
|
"input",
|
|
823
1951
|
{
|
|
824
1952
|
ref: mergeRefs(ref, inputRef),
|
|
@@ -842,10 +1970,10 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
842
1970
|
onBlur: () => {
|
|
843
1971
|
if (open) close2();
|
|
844
1972
|
},
|
|
845
|
-
className:
|
|
1973
|
+
className: input
|
|
846
1974
|
}
|
|
847
1975
|
),
|
|
848
|
-
/* @__PURE__ */ (0,
|
|
1976
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
849
1977
|
"button",
|
|
850
1978
|
{
|
|
851
1979
|
type: "button",
|
|
@@ -853,27 +1981,27 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
853
1981
|
"aria-label": toggleLabel,
|
|
854
1982
|
"aria-expanded": open,
|
|
855
1983
|
disabled,
|
|
856
|
-
className:
|
|
1984
|
+
className: toggle2,
|
|
857
1985
|
onMouseDown: (event) => event.preventDefault(),
|
|
858
1986
|
onClick: () => {
|
|
859
1987
|
if (open) close2();
|
|
860
1988
|
else openList(options);
|
|
861
1989
|
inputRef.current?.focus();
|
|
862
1990
|
},
|
|
863
|
-
children: /* @__PURE__ */ (0,
|
|
1991
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons10.ChevronDownIcon, { size: 16 })
|
|
864
1992
|
}
|
|
865
1993
|
)
|
|
866
1994
|
]
|
|
867
1995
|
}
|
|
868
1996
|
) }),
|
|
869
|
-
/* @__PURE__ */ (0,
|
|
1997
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
870
1998
|
Popover.Content,
|
|
871
1999
|
{
|
|
872
2000
|
role: "presentation",
|
|
873
2001
|
align: "start",
|
|
874
2002
|
sideOffset: 4,
|
|
875
2003
|
collisionPadding: 8,
|
|
876
|
-
className: cx(portal2.className,
|
|
2004
|
+
className: cx(portal2.className, content6),
|
|
877
2005
|
style: portal2.style,
|
|
878
2006
|
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
879
2007
|
onCloseAutoFocus: (event) => event.preventDefault(),
|
|
@@ -881,7 +2009,7 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
881
2009
|
onInteractOutside: (event) => {
|
|
882
2010
|
if (anchorRef.current?.contains(event.target)) event.preventDefault();
|
|
883
2011
|
},
|
|
884
|
-
children: hasOptions ? /* @__PURE__ */ (0,
|
|
2012
|
+
children: hasOptions ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
885
2013
|
"div",
|
|
886
2014
|
{
|
|
887
2015
|
id: listId,
|
|
@@ -893,7 +2021,7 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
893
2021
|
return (
|
|
894
2022
|
// aria-activedescendant 패턴: 포커스·키보드는 입력창이 맡고 항목은 포커스를 받지 않는다 (WAI-ARIA combobox)
|
|
895
2023
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
|
|
896
|
-
/* @__PURE__ */ (0,
|
|
2024
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
897
2025
|
"div",
|
|
898
2026
|
{
|
|
899
2027
|
id: optionId(index),
|
|
@@ -903,13 +2031,13 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
903
2031
|
"data-highlighted": index === activeIndex ? "" : void 0,
|
|
904
2032
|
"data-state": isSelected ? "checked" : "unchecked",
|
|
905
2033
|
"data-disabled": option2.disabled ? "" : void 0,
|
|
906
|
-
className:
|
|
2034
|
+
className: item4,
|
|
907
2035
|
onMouseDown: (event) => event.preventDefault(),
|
|
908
2036
|
onMouseMove: () => !option2.disabled && setActiveIndex(index),
|
|
909
2037
|
onClick: () => select(option2),
|
|
910
2038
|
children: [
|
|
911
2039
|
option2.label,
|
|
912
|
-
isSelected && /* @__PURE__ */ (0,
|
|
2040
|
+
isSelected && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons10.CheckIcon, { size: 16 }) })
|
|
913
2041
|
]
|
|
914
2042
|
},
|
|
915
2043
|
option2.value
|
|
@@ -917,81 +2045,259 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
|
|
|
917
2045
|
);
|
|
918
2046
|
})
|
|
919
2047
|
}
|
|
920
|
-
) : /* @__PURE__ */ (0,
|
|
2048
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: empty, role: "status", children: emptyMessage })
|
|
2049
|
+
}
|
|
2050
|
+
) })
|
|
2051
|
+
] }),
|
|
2052
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("input", { type: "hidden", name, value: selectedValue ?? "" }),
|
|
2053
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
2054
|
+
] });
|
|
2055
|
+
});
|
|
2056
|
+
|
|
2057
|
+
// src/components/DatePicker/DatePicker.tsx
|
|
2058
|
+
var import_react25 = require("react");
|
|
2059
|
+
var import_icons12 = require("@bestow-ui/icons");
|
|
2060
|
+
|
|
2061
|
+
// src/components/Popover/Popover.tsx
|
|
2062
|
+
var RadixPopover = __toESM(require("@radix-ui/react-popover"), 1);
|
|
2063
|
+
var import_icons11 = require("@bestow-ui/icons");
|
|
2064
|
+
var import_react24 = require("react");
|
|
2065
|
+
|
|
2066
|
+
// src/components/Popover/Popover.css.ts
|
|
2067
|
+
var arrow = "_1j99p8x4";
|
|
2068
|
+
var closeButton3 = "_1j99p8x3";
|
|
2069
|
+
var content7 = "_1j99p8x0";
|
|
2070
|
+
var header5 = "_1j99p8x1";
|
|
2071
|
+
var title3 = "_1j99p8x2";
|
|
2072
|
+
|
|
2073
|
+
// src/components/Popover/Popover.tsx
|
|
2074
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2075
|
+
function Popover2({
|
|
2076
|
+
content: content12,
|
|
2077
|
+
children,
|
|
2078
|
+
title: title6,
|
|
2079
|
+
"aria-label": ariaLabel,
|
|
2080
|
+
showClose = false,
|
|
2081
|
+
showArrow = false,
|
|
2082
|
+
side = "bottom",
|
|
2083
|
+
align = "center",
|
|
2084
|
+
open,
|
|
2085
|
+
defaultOpen,
|
|
2086
|
+
onOpenChange,
|
|
2087
|
+
modal,
|
|
2088
|
+
className,
|
|
2089
|
+
style,
|
|
2090
|
+
onOpenAutoFocus
|
|
2091
|
+
}) {
|
|
2092
|
+
const portal2 = usePortalProps();
|
|
2093
|
+
const m = useMessages();
|
|
2094
|
+
const titleId = (0, import_react24.useId)();
|
|
2095
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
|
|
2096
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Trigger, { asChild: true, children }),
|
|
2097
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2098
|
+
RadixPopover.Content,
|
|
2099
|
+
{
|
|
2100
|
+
side,
|
|
2101
|
+
align,
|
|
2102
|
+
sideOffset: 6,
|
|
2103
|
+
onOpenAutoFocus,
|
|
2104
|
+
collisionPadding: 8,
|
|
2105
|
+
"aria-labelledby": title6 ? titleId : void 0,
|
|
2106
|
+
"aria-label": title6 ? void 0 : ariaLabel,
|
|
2107
|
+
className: cx(portal2.className, content7, className),
|
|
2108
|
+
style: { ...portal2.style, ...style },
|
|
2109
|
+
children: [
|
|
2110
|
+
(title6 || showClose) && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: header5, children: [
|
|
2111
|
+
title6 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h2", { id: titleId, className: title3, children: title6 }),
|
|
2112
|
+
showClose && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Close, { className: closeButton3, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_icons11.XIcon, { size: 16 }) })
|
|
2113
|
+
] }),
|
|
2114
|
+
content12,
|
|
2115
|
+
showArrow && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
|
|
2116
|
+
]
|
|
2117
|
+
}
|
|
2118
|
+
) })
|
|
2119
|
+
] });
|
|
2120
|
+
}
|
|
2121
|
+
var PopoverClose = RadixPopover.Close;
|
|
2122
|
+
|
|
2123
|
+
// src/components/DatePicker/DatePicker.tsx
|
|
2124
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2125
|
+
var sanitize2 = (input5) => input5.replace(/\D/g, "").slice(0, 8);
|
|
2126
|
+
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)}`;
|
|
2127
|
+
var isDigit3 = (char) => /\d/.test(char);
|
|
2128
|
+
var DatePicker = /* @__PURE__ */ (0, import_react25.forwardRef)(
|
|
2129
|
+
function DatePicker2(props, ref) {
|
|
2130
|
+
const {
|
|
2131
|
+
value: value4,
|
|
2132
|
+
defaultValue,
|
|
2133
|
+
onValueChange,
|
|
2134
|
+
min,
|
|
2135
|
+
max,
|
|
2136
|
+
isDateDisabled,
|
|
2137
|
+
isHoliday,
|
|
2138
|
+
today,
|
|
2139
|
+
label: labelProp,
|
|
2140
|
+
helperText: helperText3,
|
|
2141
|
+
error,
|
|
2142
|
+
required,
|
|
2143
|
+
disabled,
|
|
2144
|
+
fullWidth,
|
|
2145
|
+
placeholder = "YYYY-MM-DD",
|
|
2146
|
+
calendarLabel: calendarLabelProp,
|
|
2147
|
+
invalidText: invalidTextProp,
|
|
2148
|
+
unavailableText: unavailableTextProp,
|
|
2149
|
+
incompleteText: incompleteTextProp,
|
|
2150
|
+
name,
|
|
2151
|
+
id,
|
|
2152
|
+
className
|
|
2153
|
+
} = props;
|
|
2154
|
+
const inputRef = (0, import_react25.useRef)(null);
|
|
2155
|
+
const m = useMessages();
|
|
2156
|
+
const label6 = labelProp ?? m.date ?? "\uB0A0\uC9DC";
|
|
2157
|
+
const calendarLabel = calendarLabelProp ?? m.openCalendar ?? "\uB2EC\uB825 \uC5F4\uAE30";
|
|
2158
|
+
const invalidText = invalidTextProp ?? m.dateInvalid ?? "\uC62C\uBC14\uB978 \uB0A0\uC9DC\uAC00 \uC544\uB2C8\uC5D0\uC694.";
|
|
2159
|
+
const unavailableText = unavailableTextProp ?? m.dateUnavailable ?? "\uACE0\uB97C \uC218 \uC5C6\uB294 \uB0A0\uC9DC\uC608\uC694.";
|
|
2160
|
+
const incompleteText = incompleteTextProp ?? m.dateIncomplete ?? "\uB0A0\uC9DC\uB97C YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
|
|
2161
|
+
const [open, setOpen] = (0, import_react25.useState)(false);
|
|
2162
|
+
const [touched, setTouched] = (0, import_react25.useState)(false);
|
|
2163
|
+
const isControlled = "value" in props;
|
|
2164
|
+
const lastEmitted = (0, import_react25.useRef)(isControlled ? value4 ?? "" : defaultValue ?? "");
|
|
2165
|
+
const minDate = parseISODate(min);
|
|
2166
|
+
const maxDate = parseISODate(max);
|
|
2167
|
+
const toIso = (digits) => digits.length === 8 ? `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6)}` : "";
|
|
2168
|
+
const isUnavailable = (date2) => minDate !== null && compareDays(date2, minDate) < 0 || maxDate !== null && compareDays(date2, maxDate) > 0 || !!isDateDisabled?.(date2);
|
|
2169
|
+
const emit = (iso) => {
|
|
2170
|
+
if (iso === lastEmitted.current) return;
|
|
2171
|
+
lastEmitted.current = iso;
|
|
2172
|
+
onValueChange?.(iso);
|
|
2173
|
+
};
|
|
2174
|
+
const field3 = useFormattedInput({
|
|
2175
|
+
isControlled: false,
|
|
2176
|
+
value: void 0,
|
|
2177
|
+
defaultValue: (isControlled ? value4 : defaultValue)?.replace(/\D/g, ""),
|
|
2178
|
+
onValueChange: (digits) => {
|
|
2179
|
+
const date2 = parseISODate(toIso(digits));
|
|
2180
|
+
emit(date2 && !isUnavailable(date2) ? toIso(digits) : "");
|
|
2181
|
+
},
|
|
2182
|
+
sanitize: sanitize2,
|
|
2183
|
+
format,
|
|
2184
|
+
isMeaningful: isDigit3,
|
|
2185
|
+
inputRef
|
|
2186
|
+
});
|
|
2187
|
+
const textIso = toIso(field3.raw);
|
|
2188
|
+
const { setRaw } = field3;
|
|
2189
|
+
(0, import_react25.useEffect)(() => {
|
|
2190
|
+
if (!isControlled) return;
|
|
2191
|
+
const next = value4 ?? "";
|
|
2192
|
+
lastEmitted.current = next;
|
|
2193
|
+
if (next === textIso) return;
|
|
2194
|
+
const textDate = parseISODate(textIso);
|
|
2195
|
+
const textIsValid = textDate !== null && !isUnavailable(textDate);
|
|
2196
|
+
if (next === "" && !textIsValid) return;
|
|
2197
|
+
setRaw(next.replace(/\D/g, ""));
|
|
2198
|
+
}, [value4]);
|
|
2199
|
+
const date = parseISODate(textIso);
|
|
2200
|
+
const complete = field3.raw.length === 8;
|
|
2201
|
+
const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field3.raw.length > 0 ? incompleteText : null;
|
|
2202
|
+
const showAuto = autoError !== null && error === void 0;
|
|
2203
|
+
const selectedIso = date && !isUnavailable(date) ? textIso : "";
|
|
2204
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
|
|
2205
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2206
|
+
TextField,
|
|
2207
|
+
{
|
|
2208
|
+
ref: mergeRefs(ref, inputRef),
|
|
2209
|
+
id,
|
|
2210
|
+
label: label6,
|
|
2211
|
+
placeholder,
|
|
2212
|
+
inputMode: "numeric",
|
|
2213
|
+
autoComplete: "off",
|
|
2214
|
+
value: field3.display,
|
|
2215
|
+
onChange: field3.onChange,
|
|
2216
|
+
onKeyDown: field3.onKeyDown,
|
|
2217
|
+
onBlur: () => setTouched(true),
|
|
2218
|
+
error: error ?? autoError !== null,
|
|
2219
|
+
helperText: showAuto ? autoError : helperText3,
|
|
2220
|
+
required,
|
|
2221
|
+
disabled,
|
|
2222
|
+
fullWidth,
|
|
2223
|
+
rootClassName: className,
|
|
2224
|
+
endAdornment: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2225
|
+
Popover2,
|
|
2226
|
+
{
|
|
2227
|
+
open,
|
|
2228
|
+
onOpenChange: setOpen,
|
|
2229
|
+
modal: true,
|
|
2230
|
+
align: "end",
|
|
2231
|
+
"aria-label": m.calendar ?? "\uB2EC\uB825",
|
|
2232
|
+
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
2233
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2234
|
+
Calendar,
|
|
2235
|
+
{
|
|
2236
|
+
value: selectedIso,
|
|
2237
|
+
onValueChange: (iso) => {
|
|
2238
|
+
setRaw(iso.replace(/\D/g, ""));
|
|
2239
|
+
emit(iso);
|
|
2240
|
+
setOpen(false);
|
|
2241
|
+
},
|
|
2242
|
+
min,
|
|
2243
|
+
max,
|
|
2244
|
+
isDateDisabled,
|
|
2245
|
+
isHoliday,
|
|
2246
|
+
today,
|
|
2247
|
+
initialFocus: true
|
|
2248
|
+
}
|
|
2249
|
+
),
|
|
2250
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconButton, { "aria-label": calendarLabel, size: "sm", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons12.CalendarIcon, {}) })
|
|
2251
|
+
}
|
|
2252
|
+
)
|
|
921
2253
|
}
|
|
922
|
-
)
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
});
|
|
2254
|
+
),
|
|
2255
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("input", { type: "hidden", name, value: selectedIso })
|
|
2256
|
+
] });
|
|
2257
|
+
}
|
|
2258
|
+
);
|
|
928
2259
|
|
|
929
2260
|
// src/components/Divider/Divider.tsx
|
|
930
|
-
var
|
|
2261
|
+
var import_react26 = require("react");
|
|
931
2262
|
|
|
932
2263
|
// src/components/Divider/Divider.css.ts
|
|
933
|
-
var
|
|
934
|
-
var divider = /* @__PURE__ */ (0,
|
|
2264
|
+
var import_createRuntimeFn12 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
2265
|
+
var divider = /* @__PURE__ */ (0, import_createRuntimeFn12.createRuntimeFn)({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
|
|
935
2266
|
var labeled = "_1t3gq8v3";
|
|
936
2267
|
var line = "_1t3gq8v4";
|
|
937
2268
|
|
|
938
2269
|
// src/components/Divider/Divider.tsx
|
|
939
|
-
var
|
|
940
|
-
var Divider = /* @__PURE__ */ (0,
|
|
2270
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2271
|
+
var Divider = /* @__PURE__ */ (0, import_react26.forwardRef)(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
|
|
941
2272
|
if (children && orientation === "horizontal") {
|
|
942
|
-
return /* @__PURE__ */ (0,
|
|
943
|
-
/* @__PURE__ */ (0,
|
|
2273
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ref, className: cx(labeled, className), ...rest, children: [
|
|
2274
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: line, "aria-hidden": true }),
|
|
944
2275
|
children,
|
|
945
|
-
/* @__PURE__ */ (0,
|
|
2276
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: line, "aria-hidden": true })
|
|
946
2277
|
] });
|
|
947
2278
|
}
|
|
948
2279
|
const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation === "vertical" ? "vertical" : void 0 };
|
|
949
|
-
return /* @__PURE__ */ (0,
|
|
2280
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
|
|
950
2281
|
});
|
|
951
2282
|
|
|
952
2283
|
// src/components/Drawer/Drawer.tsx
|
|
953
|
-
var
|
|
954
|
-
var
|
|
955
|
-
|
|
956
|
-
// src/components/IconButton/IconButton.tsx
|
|
957
|
-
var import_react14 = require("react");
|
|
958
|
-
|
|
959
|
-
// src/components/IconButton/IconButton.css.ts
|
|
960
|
-
var import_createRuntimeFn11 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
961
|
-
var iconButton = /* @__PURE__ */ (0, import_createRuntimeFn11.createRuntimeFn)({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
962
|
-
|
|
963
|
-
// src/components/IconButton/IconButton.tsx
|
|
964
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
965
|
-
var IconButton = /* @__PURE__ */ (0, import_react14.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading, className, children, ...rest }, ref) {
|
|
966
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
967
|
-
Button,
|
|
968
|
-
{
|
|
969
|
-
ref,
|
|
970
|
-
variant,
|
|
971
|
-
color,
|
|
972
|
-
size,
|
|
973
|
-
loading,
|
|
974
|
-
className: cx(iconButton({ size }), className),
|
|
975
|
-
...rest,
|
|
976
|
-
children: !loading && children
|
|
977
|
-
}
|
|
978
|
-
);
|
|
979
|
-
});
|
|
2284
|
+
var Dialog2 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
2285
|
+
var import_icons13 = require("@bestow-ui/icons");
|
|
980
2286
|
|
|
981
2287
|
// src/components/Drawer/Drawer.css.ts
|
|
982
|
-
var
|
|
983
|
-
var
|
|
984
|
-
var
|
|
985
|
-
var
|
|
986
|
-
var
|
|
987
|
-
var
|
|
988
|
-
var
|
|
989
|
-
var
|
|
990
|
-
var
|
|
991
|
-
var
|
|
2288
|
+
var import_createRuntimeFn13 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
2289
|
+
var body3 = "nmobyvy";
|
|
2290
|
+
var closeButton4 = "nmobyvx";
|
|
2291
|
+
var content8 = /* @__PURE__ */ (0, import_createRuntimeFn13.createRuntimeFn)({ defaultClassName: "nmobyv9", variantClassNames: { side: { right: "nmobyva", left: "nmobyvb", top: "nmobyvc", bottom: "nmobyvd" }, size: { sm: "nmobyve", md: "nmobyvf", lg: "nmobyvg" } }, defaultVariants: { side: "right", size: "md" }, compoundVariants: [[{ side: "right", size: "sm" }, "nmobyvh"], [{ side: "right", size: "md" }, "nmobyvi"], [{ side: "right", size: "lg" }, "nmobyvj"], [{ side: "left", size: "sm" }, "nmobyvk"], [{ side: "left", size: "md" }, "nmobyvl"], [{ side: "left", size: "lg" }, "nmobyvm"], [{ side: "top", size: "sm" }, "nmobyvn"], [{ side: "top", size: "md" }, "nmobyvo"], [{ side: "top", size: "lg" }, "nmobyvp"], [{ side: "bottom", size: "sm" }, "nmobyvq"], [{ side: "bottom", size: "md" }, "nmobyvr"], [{ side: "bottom", size: "lg" }, "nmobyvs"]] });
|
|
2292
|
+
var description3 = "nmobyvw";
|
|
2293
|
+
var footer3 = "nmobyvz";
|
|
2294
|
+
var header6 = "nmobyvt";
|
|
2295
|
+
var headings2 = "nmobyvu";
|
|
2296
|
+
var overlay2 = "nmobyv0";
|
|
2297
|
+
var title4 = "nmobyvv";
|
|
992
2298
|
|
|
993
2299
|
// src/components/Drawer/Drawer.tsx
|
|
994
|
-
var
|
|
2300
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
995
2301
|
function Drawer({
|
|
996
2302
|
open,
|
|
997
2303
|
defaultOpen,
|
|
@@ -1008,58 +2314,62 @@ function Drawer({
|
|
|
1008
2314
|
className
|
|
1009
2315
|
}) {
|
|
1010
2316
|
const portal2 = usePortalProps();
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
2317
|
+
const m = useMessages();
|
|
2318
|
+
const focus = useReturnFocus(Boolean(trigger4));
|
|
2319
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
|
|
2320
|
+
trigger4 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dialog2.Trigger, { asChild: true, children: trigger4 }),
|
|
2321
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Dialog2.Portal, { children: [
|
|
2322
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
|
|
2323
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2324
|
+
Dialog2.Content,
|
|
1017
2325
|
{
|
|
1018
|
-
className: cx(portal2.className,
|
|
2326
|
+
className: cx(portal2.className, content8({ side, size }), className),
|
|
1019
2327
|
style: portal2.style,
|
|
1020
2328
|
"data-side": side ?? "right",
|
|
1021
2329
|
onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
|
|
2330
|
+
onOpenAutoFocus: focus.onOpenAutoFocus,
|
|
2331
|
+
onCloseAutoFocus: focus.onCloseAutoFocus,
|
|
1022
2332
|
...description6 ? {} : { "aria-describedby": void 0 },
|
|
1023
2333
|
children: [
|
|
1024
|
-
/* @__PURE__ */ (0,
|
|
1025
|
-
/* @__PURE__ */ (0,
|
|
1026
|
-
/* @__PURE__ */ (0,
|
|
1027
|
-
description6 && /* @__PURE__ */ (0,
|
|
2334
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: header6, children: [
|
|
2335
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: headings2, children: [
|
|
2336
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dialog2.Title, { className: title4, children: title6 }),
|
|
2337
|
+
description6 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dialog2.Description, { className: description3, children: description6 })
|
|
1028
2338
|
] }),
|
|
1029
|
-
!hideCloseButton && /* @__PURE__ */ (0,
|
|
2339
|
+
!hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(IconButton, { "aria-label": m.close ?? "\uB2EB\uAE30", size: "sm", className: closeButton4, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_icons13.XIcon, {}) }) })
|
|
1030
2340
|
] }),
|
|
1031
|
-
children && /* @__PURE__ */ (0,
|
|
1032
|
-
footer6 && /* @__PURE__ */ (0,
|
|
2341
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: body3, children }),
|
|
2342
|
+
footer6 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: footer3, children: footer6 })
|
|
1033
2343
|
]
|
|
1034
2344
|
}
|
|
1035
2345
|
)
|
|
1036
2346
|
] })
|
|
1037
2347
|
] });
|
|
1038
2348
|
}
|
|
1039
|
-
var DrawerClose =
|
|
2349
|
+
var DrawerClose = Dialog2.Close;
|
|
1040
2350
|
|
|
1041
2351
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
1042
2352
|
var RadixMenu = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
|
|
1043
|
-
var
|
|
2353
|
+
var import_react27 = require("react");
|
|
1044
2354
|
|
|
1045
2355
|
// src/components/DropdownMenu/DropdownMenu.css.ts
|
|
1046
|
-
var
|
|
2356
|
+
var content9 = "_1d7ahux0";
|
|
1047
2357
|
var danger = "_1d7ahux2";
|
|
1048
2358
|
var icon5 = "_1d7ahux3";
|
|
1049
|
-
var
|
|
2359
|
+
var item5 = "_1d7ahux1";
|
|
1050
2360
|
var label2 = "_1d7ahux5";
|
|
1051
2361
|
var separator2 = "_1d7ahux6";
|
|
1052
2362
|
var shortcut = "_1d7ahux4";
|
|
1053
2363
|
|
|
1054
2364
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
1055
|
-
var
|
|
2365
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1056
2366
|
var DropdownMenu = RadixMenu.Root;
|
|
1057
2367
|
var DropdownMenuTrigger = RadixMenu.Trigger;
|
|
1058
2368
|
var DropdownMenuGroup = RadixMenu.Group;
|
|
1059
|
-
var DropdownMenuContent = /* @__PURE__ */ (0,
|
|
2369
|
+
var DropdownMenuContent = /* @__PURE__ */ (0, import_react27.forwardRef)(
|
|
1060
2370
|
function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
|
|
1061
2371
|
const portal2 = usePortalProps();
|
|
1062
|
-
return /* @__PURE__ */ (0,
|
|
2372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1063
2373
|
RadixMenu.Content,
|
|
1064
2374
|
{
|
|
1065
2375
|
ref,
|
|
@@ -1067,154 +2377,39 @@ var DropdownMenuContent = /* @__PURE__ */ (0, import_react15.forwardRef)(
|
|
|
1067
2377
|
align,
|
|
1068
2378
|
sideOffset,
|
|
1069
2379
|
collisionPadding,
|
|
1070
|
-
className: cx(portal2.className,
|
|
2380
|
+
className: cx(portal2.className, content9, className),
|
|
1071
2381
|
style: { ...portal2.style, ...style },
|
|
1072
2382
|
...rest
|
|
1073
2383
|
}
|
|
1074
2384
|
) });
|
|
1075
2385
|
}
|
|
1076
2386
|
);
|
|
1077
|
-
var DropdownMenuItem = /* @__PURE__ */ (0,
|
|
1078
|
-
function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "
|
|
1079
|
-
|
|
1080
|
-
|
|
2387
|
+
var DropdownMenuItem = /* @__PURE__ */ (0, import_react27.forwardRef)(
|
|
2388
|
+
function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "neutral", className, children, ...rest }, ref) {
|
|
2389
|
+
if (color === "default") {
|
|
2390
|
+
warnOnce('DropdownMenuItem \uC758 color="default" \uB294 deprecated \uC608\uC694. color="neutral" \uC744 \uC4F0\uC138\uC694 (1.0 \uC5D0\uC11C \uC81C\uAC70).');
|
|
2391
|
+
}
|
|
2392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
|
|
2393
|
+
icon6 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: icon5, "aria-hidden": true, children: icon6 }),
|
|
1081
2394
|
children,
|
|
1082
|
-
shortcut2 && /* @__PURE__ */ (0,
|
|
2395
|
+
shortcut2 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
|
|
1083
2396
|
] });
|
|
1084
2397
|
}
|
|
1085
2398
|
);
|
|
1086
|
-
var DropdownMenuLabel = /* @__PURE__ */ (0,
|
|
2399
|
+
var DropdownMenuLabel = /* @__PURE__ */ (0, import_react27.forwardRef)(
|
|
1087
2400
|
function DropdownMenuLabel2({ className, ...rest }, ref) {
|
|
1088
|
-
return /* @__PURE__ */ (0,
|
|
2401
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
|
|
1089
2402
|
}
|
|
1090
2403
|
);
|
|
1091
|
-
var DropdownMenuSeparator = /* @__PURE__ */ (0,
|
|
2404
|
+
var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react27.forwardRef)(
|
|
1092
2405
|
function DropdownMenuSeparator2({ className, ...rest }, ref) {
|
|
1093
|
-
return /* @__PURE__ */ (0,
|
|
2406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
|
|
1094
2407
|
}
|
|
1095
2408
|
);
|
|
1096
2409
|
|
|
1097
|
-
// src/components/Input/Input.tsx
|
|
1098
|
-
var import_react16 = require("react");
|
|
1099
|
-
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1100
|
-
var Input = /* @__PURE__ */ (0, import_react16.forwardRef)(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
|
|
1101
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1102
|
-
"div",
|
|
1103
|
-
{
|
|
1104
|
-
className: cx(root5({ size, fullWidth }), rootClassName),
|
|
1105
|
-
"data-invalid": invalid || void 0,
|
|
1106
|
-
"data-disabled": disabled || void 0,
|
|
1107
|
-
children: [
|
|
1108
|
-
startAdornment && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: adornment, children: startAdornment }),
|
|
1109
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1110
|
-
"input",
|
|
1111
|
-
{
|
|
1112
|
-
ref,
|
|
1113
|
-
className: cx(input2, className),
|
|
1114
|
-
disabled,
|
|
1115
|
-
"aria-invalid": invalid || void 0,
|
|
1116
|
-
...rest
|
|
1117
|
-
}
|
|
1118
|
-
),
|
|
1119
|
-
endAdornment && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: adornment, children: endAdornment })
|
|
1120
|
-
]
|
|
1121
|
-
}
|
|
1122
|
-
);
|
|
1123
|
-
});
|
|
1124
|
-
|
|
1125
|
-
// src/components/Input/TextField.tsx
|
|
1126
|
-
var import_react17 = require("react");
|
|
1127
|
-
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1128
|
-
var TextField = /* @__PURE__ */ (0, import_react17.forwardRef)(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
|
|
1129
|
-
const generatedId = (0, import_react17.useId)();
|
|
1130
|
-
const inputId = id ?? generatedId;
|
|
1131
|
-
const helperId = helperText3 ? `${inputId}-helper` : void 0;
|
|
1132
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
1133
|
-
label6 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { htmlFor: inputId, className: label, children: [
|
|
1134
|
-
label6,
|
|
1135
|
-
required && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
1136
|
-
] }),
|
|
1137
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1138
|
-
Input,
|
|
1139
|
-
{
|
|
1140
|
-
ref,
|
|
1141
|
-
id: inputId,
|
|
1142
|
-
invalid: error,
|
|
1143
|
-
required,
|
|
1144
|
-
fullWidth,
|
|
1145
|
-
"aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
|
|
1146
|
-
...rest
|
|
1147
|
-
}
|
|
1148
|
-
),
|
|
1149
|
-
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
1150
|
-
] });
|
|
1151
|
-
});
|
|
1152
|
-
|
|
1153
|
-
// src/components/Modal/Modal.tsx
|
|
1154
|
-
var Dialog2 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1155
|
-
var import_icons9 = require("@bestow-ui/icons");
|
|
1156
|
-
|
|
1157
|
-
// src/components/Modal/Modal.css.ts
|
|
1158
|
-
var import_createRuntimeFn13 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1159
|
-
var body3 = "_1pdsmv0a";
|
|
1160
|
-
var closeButton3 = "_1pdsmv09";
|
|
1161
|
-
var content7 = /* @__PURE__ */ (0, import_createRuntimeFn13.createRuntimeFn)({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1162
|
-
var description3 = "_1pdsmv08";
|
|
1163
|
-
var footer3 = "_1pdsmv0b";
|
|
1164
|
-
var header4 = "_1pdsmv05";
|
|
1165
|
-
var headings2 = "_1pdsmv06";
|
|
1166
|
-
var overlay2 = "_1pdsmv00";
|
|
1167
|
-
var title3 = "_1pdsmv07";
|
|
1168
|
-
|
|
1169
|
-
// src/components/Modal/Modal.tsx
|
|
1170
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1171
|
-
function Modal({
|
|
1172
|
-
open,
|
|
1173
|
-
defaultOpen,
|
|
1174
|
-
onOpenChange,
|
|
1175
|
-
trigger: trigger4,
|
|
1176
|
-
title: title6,
|
|
1177
|
-
description: description6,
|
|
1178
|
-
children,
|
|
1179
|
-
footer: footer6,
|
|
1180
|
-
size,
|
|
1181
|
-
hideCloseButton = false,
|
|
1182
|
-
closeOnOverlayClick = true,
|
|
1183
|
-
className
|
|
1184
|
-
}) {
|
|
1185
|
-
const portal2 = usePortalProps();
|
|
1186
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
|
|
1187
|
-
trigger4 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Trigger, { asChild: true, children: trigger4 }),
|
|
1188
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Dialog2.Portal, { children: [
|
|
1189
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
|
|
1190
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1191
|
-
Dialog2.Content,
|
|
1192
|
-
{
|
|
1193
|
-
className: cx(portal2.className, content7({ size }), className),
|
|
1194
|
-
style: portal2.style,
|
|
1195
|
-
onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
|
|
1196
|
-
...description6 ? {} : { "aria-describedby": void 0 },
|
|
1197
|
-
children: [
|
|
1198
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: header4, children: [
|
|
1199
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: headings2, children: [
|
|
1200
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Title, { className: title3, children: title6 }),
|
|
1201
|
-
description6 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Description, { className: description3, children: description6 })
|
|
1202
|
-
] }),
|
|
1203
|
-
!hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Close, { className: closeButton3, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons9.XIcon, { size: 16 }) })
|
|
1204
|
-
] }),
|
|
1205
|
-
children && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: body3, children }),
|
|
1206
|
-
footer6 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: footer3, children: footer6 })
|
|
1207
|
-
]
|
|
1208
|
-
}
|
|
1209
|
-
)
|
|
1210
|
-
] })
|
|
1211
|
-
] });
|
|
1212
|
-
}
|
|
1213
|
-
var ModalClose = Dialog2.Close;
|
|
1214
|
-
|
|
1215
2410
|
// src/components/Pagination/Pagination.tsx
|
|
1216
|
-
var
|
|
1217
|
-
var
|
|
2411
|
+
var import_icons14 = require("@bestow-ui/icons");
|
|
2412
|
+
var import_react28 = require("react");
|
|
1218
2413
|
|
|
1219
2414
|
// src/components/Pagination/getPaginationItems.ts
|
|
1220
2415
|
var range = (start, end) => end < start ? [] : Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
@@ -1243,13 +2438,12 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
|
|
|
1243
2438
|
// src/components/Pagination/Pagination.css.ts
|
|
1244
2439
|
var import_createRuntimeFn14 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1245
2440
|
var ellipsis = "_1iraoak4";
|
|
1246
|
-
var
|
|
1247
|
-
var
|
|
2441
|
+
var item6 = /* @__PURE__ */ (0, import_createRuntimeFn14.createRuntimeFn)({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
2442
|
+
var list3 = "_1iraoak0";
|
|
1248
2443
|
|
|
1249
2444
|
// src/components/Pagination/Pagination.tsx
|
|
1250
|
-
var
|
|
1251
|
-
var
|
|
1252
|
-
var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Pagination2({
|
|
2445
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2446
|
+
var Pagination = /* @__PURE__ */ (0, import_react28.forwardRef)(function Pagination2({
|
|
1253
2447
|
totalPages,
|
|
1254
2448
|
page: pageProp,
|
|
1255
2449
|
defaultPage = 1,
|
|
@@ -1257,12 +2451,15 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
|
|
|
1257
2451
|
siblingCount = 1,
|
|
1258
2452
|
boundaryCount = 1,
|
|
1259
2453
|
size,
|
|
1260
|
-
getItemLabel
|
|
2454
|
+
getItemLabel: getItemLabelProp,
|
|
1261
2455
|
className,
|
|
1262
|
-
"aria-label":
|
|
2456
|
+
"aria-label": ariaLabelProp,
|
|
1263
2457
|
...rest
|
|
1264
2458
|
}, ref) {
|
|
1265
|
-
const [uncontrolledPage, setUncontrolledPage] = (0,
|
|
2459
|
+
const [uncontrolledPage, setUncontrolledPage] = (0, import_react28.useState)(defaultPage);
|
|
2460
|
+
const m = useMessages();
|
|
2461
|
+
const ariaLabel = ariaLabelProp ?? m.pagination ?? "\uD398\uC774\uC9C0 \uD0D0\uC0C9";
|
|
2462
|
+
const getItemLabel = getItemLabelProp ?? ((type, n) => type === "previous" ? m.paginationPrevious ?? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? m.paginationNext ?? "\uB2E4\uC74C \uD398\uC774\uC9C0" : m.paginationPage?.(n) ?? `${n} \uD398\uC774\uC9C0`);
|
|
1266
2463
|
if (totalPages < 1) return null;
|
|
1267
2464
|
const page = Math.min(Math.max(pageProp ?? uncontrolledPage, 1), totalPages);
|
|
1268
2465
|
const goTo = (next) => {
|
|
@@ -1270,9 +2467,9 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
|
|
|
1270
2467
|
if (pageProp === void 0) setUncontrolledPage(next);
|
|
1271
2468
|
onPageChange?.(next);
|
|
1272
2469
|
};
|
|
1273
|
-
const itemClass =
|
|
1274
|
-
return /* @__PURE__ */ (0,
|
|
1275
|
-
/* @__PURE__ */ (0,
|
|
2470
|
+
const itemClass = item6({ size });
|
|
2471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("ul", { className: list3, children: [
|
|
2472
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1276
2473
|
"button",
|
|
1277
2474
|
{
|
|
1278
2475
|
type: "button",
|
|
@@ -1280,23 +2477,23 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
|
|
|
1280
2477
|
"aria-label": getItemLabel("previous", page - 1),
|
|
1281
2478
|
disabled: page <= 1,
|
|
1282
2479
|
onClick: () => goTo(page - 1),
|
|
1283
|
-
children: /* @__PURE__ */ (0,
|
|
2480
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_icons14.ChevronLeftIcon, { size: 16 })
|
|
1284
2481
|
}
|
|
1285
2482
|
) }),
|
|
1286
2483
|
getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
|
|
1287
|
-
(
|
|
2484
|
+
(item7) => typeof item7 === "number" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1288
2485
|
"button",
|
|
1289
2486
|
{
|
|
1290
2487
|
type: "button",
|
|
1291
2488
|
className: itemClass,
|
|
1292
|
-
"aria-label": getItemLabel("page",
|
|
1293
|
-
"aria-current":
|
|
1294
|
-
onClick: () => goTo(
|
|
1295
|
-
children:
|
|
2489
|
+
"aria-label": getItemLabel("page", item7),
|
|
2490
|
+
"aria-current": item7 === page ? "page" : void 0,
|
|
2491
|
+
onClick: () => goTo(item7),
|
|
2492
|
+
children: item7
|
|
1296
2493
|
}
|
|
1297
|
-
) },
|
|
2494
|
+
) }, item7) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item7)
|
|
1298
2495
|
),
|
|
1299
|
-
/* @__PURE__ */ (0,
|
|
2496
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1300
2497
|
"button",
|
|
1301
2498
|
{
|
|
1302
2499
|
type: "button",
|
|
@@ -1304,87 +2501,81 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
|
|
|
1304
2501
|
"aria-label": getItemLabel("next", page + 1),
|
|
1305
2502
|
disabled: page >= totalPages,
|
|
1306
2503
|
onClick: () => goTo(page + 1),
|
|
1307
|
-
children: /* @__PURE__ */ (0,
|
|
2504
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_icons14.ChevronRightIcon, { size: 16 })
|
|
1308
2505
|
}
|
|
1309
2506
|
) })
|
|
1310
2507
|
] }) });
|
|
1311
2508
|
});
|
|
1312
2509
|
|
|
1313
|
-
// src/components/
|
|
1314
|
-
var
|
|
1315
|
-
var
|
|
1316
|
-
var
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
var
|
|
1321
|
-
var
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1348
|
-
RadixPopover.Content,
|
|
2510
|
+
// src/components/PhoneNumberInput/PhoneNumberInput.tsx
|
|
2511
|
+
var import_react29 = require("react");
|
|
2512
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2513
|
+
var sanitize3 = (input5) => {
|
|
2514
|
+
const digits = input5.replace(/\D/g, "");
|
|
2515
|
+
return digits.slice(0, phoneNumberMaxDigits(digits));
|
|
2516
|
+
};
|
|
2517
|
+
var isDigit4 = (char) => /\d/.test(char);
|
|
2518
|
+
var PhoneNumberInput = /* @__PURE__ */ (0, import_react29.forwardRef)(
|
|
2519
|
+
function PhoneNumberInput2(props, ref) {
|
|
2520
|
+
const {
|
|
2521
|
+
value: value4,
|
|
2522
|
+
defaultValue,
|
|
2523
|
+
onValueChange,
|
|
2524
|
+
label: labelProp,
|
|
2525
|
+
placeholder = "010-0000-0000",
|
|
2526
|
+
onKeyDown,
|
|
2527
|
+
...rest
|
|
2528
|
+
} = props;
|
|
2529
|
+
const inputRef = (0, import_react29.useRef)(null);
|
|
2530
|
+
const m = useMessages();
|
|
2531
|
+
const label6 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
|
|
2532
|
+
const field3 = useFormattedInput({
|
|
2533
|
+
isControlled: "value" in props,
|
|
2534
|
+
value: value4,
|
|
2535
|
+
defaultValue,
|
|
2536
|
+
onValueChange,
|
|
2537
|
+
sanitize: sanitize3,
|
|
2538
|
+
format: formatPhoneNumber,
|
|
2539
|
+
isMeaningful: isDigit4,
|
|
2540
|
+
inputRef
|
|
2541
|
+
});
|
|
2542
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2543
|
+
TextField,
|
|
1349
2544
|
{
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
"
|
|
1355
|
-
"
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
(
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
content11,
|
|
1364
|
-
showArrow && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
|
|
1365
|
-
]
|
|
2545
|
+
ref: mergeRefs(ref, inputRef),
|
|
2546
|
+
label: label6,
|
|
2547
|
+
placeholder,
|
|
2548
|
+
type: "tel",
|
|
2549
|
+
inputMode: "tel",
|
|
2550
|
+
autoComplete: "tel-national",
|
|
2551
|
+
value: field3.display,
|
|
2552
|
+
onChange: field3.onChange,
|
|
2553
|
+
onKeyDown: (event) => {
|
|
2554
|
+
field3.onKeyDown(event);
|
|
2555
|
+
onKeyDown?.(event);
|
|
2556
|
+
},
|
|
2557
|
+
...rest
|
|
1366
2558
|
}
|
|
1367
|
-
)
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
var PopoverClose = RadixPopover.Close;
|
|
2559
|
+
);
|
|
2560
|
+
}
|
|
2561
|
+
);
|
|
1371
2562
|
|
|
1372
2563
|
// src/components/Progress/Progress.tsx
|
|
1373
|
-
var
|
|
2564
|
+
var import_react30 = require("react");
|
|
1374
2565
|
|
|
1375
2566
|
// src/components/Progress/Progress.css.ts
|
|
1376
2567
|
var import_createRuntimeFn15 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1377
|
-
var
|
|
2568
|
+
var header7 = "_1tvkq001";
|
|
1378
2569
|
var indicator = /* @__PURE__ */ (0, import_createRuntimeFn15.createRuntimeFn)({ defaultClassName: "_1tvkq008", variantClassNames: { color: { primary: "_1tvkq009", neutral: "_1tvkq00a", success: "_1tvkq00b", warning: "_1tvkq00c", danger: "_1tvkq00d" } }, defaultVariants: { color: "primary" }, compoundVariants: [] });
|
|
1379
2570
|
var label3 = "_1tvkq002";
|
|
1380
|
-
var
|
|
2571
|
+
var root7 = "_1tvkq000";
|
|
1381
2572
|
var track = /* @__PURE__ */ (0, import_createRuntimeFn15.createRuntimeFn)({ defaultClassName: "_1tvkq004", variantClassNames: { size: { sm: "_1tvkq005", md: "_1tvkq006", lg: "_1tvkq007" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1382
2573
|
var value2 = "_1tvkq003";
|
|
1383
2574
|
|
|
1384
2575
|
// src/components/Progress/Progress.tsx
|
|
1385
|
-
var
|
|
2576
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1386
2577
|
var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
|
|
1387
|
-
var Progress = /* @__PURE__ */ (0,
|
|
2578
|
+
var Progress = /* @__PURE__ */ (0, import_react30.forwardRef)(function Progress2({
|
|
1388
2579
|
value: value4,
|
|
1389
2580
|
max = 100,
|
|
1390
2581
|
label: label6,
|
|
@@ -1396,17 +2587,17 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
|
|
|
1396
2587
|
className,
|
|
1397
2588
|
...rest
|
|
1398
2589
|
}, ref) {
|
|
1399
|
-
const labelId = (0,
|
|
2590
|
+
const labelId = (0, import_react30.useId)();
|
|
1400
2591
|
const isIndeterminate = value4 === void 0 || value4 === null;
|
|
1401
2592
|
const safeMax = max > 0 ? max : 100;
|
|
1402
2593
|
const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
|
|
1403
2594
|
const valueText = isIndeterminate ? void 0 : formatValue(clamped, safeMax);
|
|
1404
|
-
return /* @__PURE__ */ (0,
|
|
1405
|
-
(label6 || showValue && valueText) && /* @__PURE__ */ (0,
|
|
1406
|
-
label6 && /* @__PURE__ */ (0,
|
|
1407
|
-
showValue && valueText && /* @__PURE__ */ (0,
|
|
2595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { ref, className: cx(root7, className), ...rest, children: [
|
|
2596
|
+
(label6 || showValue && valueText) && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: header7, children: [
|
|
2597
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { id: labelId, className: label3, children: label6 }),
|
|
2598
|
+
showValue && valueText && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: value2, "aria-hidden": true, children: valueText })
|
|
1408
2599
|
] }),
|
|
1409
|
-
/* @__PURE__ */ (0,
|
|
2600
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1410
2601
|
"div",
|
|
1411
2602
|
{
|
|
1412
2603
|
role: "progressbar",
|
|
@@ -1417,7 +2608,7 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
|
|
|
1417
2608
|
"aria-valuenow": isIndeterminate ? void 0 : clamped,
|
|
1418
2609
|
"aria-valuetext": valueText,
|
|
1419
2610
|
className: track({ size }),
|
|
1420
|
-
children: /* @__PURE__ */ (0,
|
|
2611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1421
2612
|
"div",
|
|
1422
2613
|
{
|
|
1423
2614
|
className: indicator({ color }),
|
|
@@ -1432,7 +2623,7 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
|
|
|
1432
2623
|
|
|
1433
2624
|
// src/components/RadioGroup/RadioGroup.tsx
|
|
1434
2625
|
var RadixRadioGroup = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
1435
|
-
var
|
|
2626
|
+
var import_react31 = require("react");
|
|
1436
2627
|
|
|
1437
2628
|
// src/components/RadioGroup/RadioGroup.css.ts
|
|
1438
2629
|
var import_createRuntimeFn16 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
@@ -1446,8 +2637,8 @@ var radio = /* @__PURE__ */ (0, import_createRuntimeFn16.createRuntimeFn)({ defa
|
|
|
1446
2637
|
var text = "_1w9iwjmb";
|
|
1447
2638
|
|
|
1448
2639
|
// src/components/RadioGroup/RadioGroup.tsx
|
|
1449
|
-
var
|
|
1450
|
-
var RadioGroup = /* @__PURE__ */ (0,
|
|
2640
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2641
|
+
var RadioGroup = /* @__PURE__ */ (0, import_react31.forwardRef)(function RadioGroup2(props, ref) {
|
|
1451
2642
|
const {
|
|
1452
2643
|
options,
|
|
1453
2644
|
value: value4,
|
|
@@ -1466,16 +2657,16 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
|
|
|
1466
2657
|
className
|
|
1467
2658
|
} = props;
|
|
1468
2659
|
const isControlled = "value" in props;
|
|
1469
|
-
const generatedId = (0,
|
|
2660
|
+
const generatedId = (0, import_react31.useId)();
|
|
1470
2661
|
const baseId = id ?? generatedId;
|
|
1471
2662
|
const labelId = label6 ? `${baseId}-label` : void 0;
|
|
1472
2663
|
const helperId = helperText3 ? `${baseId}-helper` : void 0;
|
|
1473
|
-
return /* @__PURE__ */ (0,
|
|
1474
|
-
label6 && /* @__PURE__ */ (0,
|
|
2664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cx(field, className), children: [
|
|
2665
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { id: labelId, className: cx(label, groupLabel), children: [
|
|
1475
2666
|
label6,
|
|
1476
|
-
required && /* @__PURE__ */ (0,
|
|
2667
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
1477
2668
|
] }),
|
|
1478
|
-
/* @__PURE__ */ (0,
|
|
2669
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1479
2670
|
RadixRadioGroup.Root,
|
|
1480
2671
|
{
|
|
1481
2672
|
ref,
|
|
@@ -1496,8 +2687,8 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
|
|
|
1496
2687
|
const itemId = `${baseId}-${option2.value}`;
|
|
1497
2688
|
const descriptionId = option2.description ? `${itemId}-description` : void 0;
|
|
1498
2689
|
const itemDisabled = disabled || option2.disabled;
|
|
1499
|
-
return /* @__PURE__ */ (0,
|
|
1500
|
-
/* @__PURE__ */ (0,
|
|
2690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
|
|
2691
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1501
2692
|
RadixRadioGroup.Item,
|
|
1502
2693
|
{
|
|
1503
2694
|
id: itemId,
|
|
@@ -1505,27 +2696,27 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
|
|
|
1505
2696
|
disabled: option2.disabled,
|
|
1506
2697
|
"aria-describedby": descriptionId,
|
|
1507
2698
|
className: radio({ size }),
|
|
1508
|
-
children: /* @__PURE__ */ (0,
|
|
2699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(RadixRadioGroup.Indicator, { className: indicator2 })
|
|
1509
2700
|
}
|
|
1510
2701
|
),
|
|
1511
|
-
/* @__PURE__ */ (0,
|
|
1512
|
-
/* @__PURE__ */ (0,
|
|
1513
|
-
option2.description && /* @__PURE__ */ (0,
|
|
2702
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: text, children: [
|
|
2703
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("label", { htmlFor: itemId, className: labelText, children: option2.label }),
|
|
2704
|
+
option2.description && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { id: descriptionId, className: description4, children: option2.description })
|
|
1514
2705
|
] })
|
|
1515
2706
|
] }, option2.value);
|
|
1516
2707
|
})
|
|
1517
2708
|
}
|
|
1518
2709
|
),
|
|
1519
|
-
helperText3 && /* @__PURE__ */ (0,
|
|
2710
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
1520
2711
|
] });
|
|
1521
2712
|
});
|
|
1522
2713
|
|
|
1523
2714
|
// src/components/Select/Select.tsx
|
|
1524
2715
|
var RadixSelect = __toESM(require("@radix-ui/react-select"), 1);
|
|
1525
|
-
var
|
|
1526
|
-
var
|
|
1527
|
-
var
|
|
1528
|
-
var Select = /* @__PURE__ */ (0,
|
|
2716
|
+
var import_react32 = require("react");
|
|
2717
|
+
var import_icons15 = require("@bestow-ui/icons");
|
|
2718
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2719
|
+
var Select = /* @__PURE__ */ (0, import_react32.forwardRef)(function Select2(props, ref) {
|
|
1529
2720
|
const {
|
|
1530
2721
|
options,
|
|
1531
2722
|
value: value4,
|
|
@@ -1545,16 +2736,16 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
|
|
|
1545
2736
|
className
|
|
1546
2737
|
} = props;
|
|
1547
2738
|
const isControlled = "value" in props;
|
|
1548
|
-
const generatedId = (0,
|
|
2739
|
+
const generatedId = (0, import_react32.useId)();
|
|
1549
2740
|
const triggerId = id ?? generatedId;
|
|
1550
2741
|
const helperId = helperText3 ? `${triggerId}-helper` : void 0;
|
|
1551
2742
|
const portal2 = usePortalProps();
|
|
1552
|
-
return /* @__PURE__ */ (0,
|
|
1553
|
-
label6 && /* @__PURE__ */ (0,
|
|
2743
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
2744
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("label", { htmlFor: triggerId, className: label, children: [
|
|
1554
2745
|
label6,
|
|
1555
|
-
required && /* @__PURE__ */ (0,
|
|
2746
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
1556
2747
|
] }),
|
|
1557
|
-
/* @__PURE__ */ (0,
|
|
2748
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
1558
2749
|
RadixSelect.Root,
|
|
1559
2750
|
{
|
|
1560
2751
|
value: isControlled ? value4 ?? "" : void 0,
|
|
@@ -1564,7 +2755,7 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
|
|
|
1564
2755
|
required,
|
|
1565
2756
|
name,
|
|
1566
2757
|
children: [
|
|
1567
|
-
/* @__PURE__ */ (0,
|
|
2758
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
1568
2759
|
RadixSelect.Trigger,
|
|
1569
2760
|
{
|
|
1570
2761
|
ref,
|
|
@@ -1573,30 +2764,30 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
|
|
|
1573
2764
|
"aria-invalid": error || void 0,
|
|
1574
2765
|
"aria-describedby": helperId,
|
|
1575
2766
|
"data-invalid": error || void 0,
|
|
1576
|
-
className: cx(
|
|
2767
|
+
className: cx(root3({ size, fullWidth }), trigger2, className),
|
|
1577
2768
|
children: [
|
|
1578
|
-
/* @__PURE__ */ (0,
|
|
1579
|
-
/* @__PURE__ */ (0,
|
|
2769
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: value, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.Value, { placeholder }) }),
|
|
2770
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons15.ChevronDownIcon, { size: 16 }) })
|
|
1580
2771
|
]
|
|
1581
2772
|
}
|
|
1582
2773
|
),
|
|
1583
|
-
/* @__PURE__ */ (0,
|
|
2774
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1584
2775
|
RadixSelect.Content,
|
|
1585
2776
|
{
|
|
1586
2777
|
position: "popper",
|
|
1587
2778
|
sideOffset: 4,
|
|
1588
2779
|
collisionPadding: 8,
|
|
1589
|
-
className: cx(portal2.className,
|
|
2780
|
+
className: cx(portal2.className, content5),
|
|
1590
2781
|
style: portal2.style,
|
|
1591
|
-
children: /* @__PURE__ */ (0,
|
|
2782
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
1592
2783
|
RadixSelect.Item,
|
|
1593
2784
|
{
|
|
1594
2785
|
value: option2.value,
|
|
1595
2786
|
disabled: option2.disabled,
|
|
1596
|
-
className:
|
|
2787
|
+
className: item4,
|
|
1597
2788
|
children: [
|
|
1598
|
-
/* @__PURE__ */ (0,
|
|
1599
|
-
/* @__PURE__ */ (0,
|
|
2789
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.ItemText, { children: option2.label }),
|
|
2790
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons15.CheckIcon, { size: 16 }) })
|
|
1600
2791
|
]
|
|
1601
2792
|
},
|
|
1602
2793
|
option2.value
|
|
@@ -1606,13 +2797,13 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
|
|
|
1606
2797
|
]
|
|
1607
2798
|
}
|
|
1608
2799
|
),
|
|
1609
|
-
helperText3 && /* @__PURE__ */ (0,
|
|
2800
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
|
|
1610
2801
|
] });
|
|
1611
2802
|
});
|
|
1612
2803
|
|
|
1613
2804
|
// src/components/Skeleton/Skeleton.tsx
|
|
1614
2805
|
var import_dynamic2 = require("@vanilla-extract/dynamic");
|
|
1615
|
-
var
|
|
2806
|
+
var import_react33 = require("react");
|
|
1616
2807
|
|
|
1617
2808
|
// src/components/Skeleton/Skeleton.css.ts
|
|
1618
2809
|
var import_createRuntimeFn17 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
@@ -1622,13 +2813,13 @@ var skeleton = /* @__PURE__ */ (0, import_createRuntimeFn17.createRuntimeFn)({ d
|
|
|
1622
2813
|
var width = "var(--_1s8datd0)";
|
|
1623
2814
|
|
|
1624
2815
|
// src/components/Skeleton/Skeleton.tsx
|
|
1625
|
-
var
|
|
2816
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1626
2817
|
var toCss = (value4) => typeof value4 === "number" ? `${value4}px` : value4;
|
|
1627
|
-
var Skeleton = /* @__PURE__ */ (0,
|
|
2818
|
+
var Skeleton = /* @__PURE__ */ (0, import_react33.forwardRef)(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
|
|
1628
2819
|
const w = toCss(width2 ?? (variant === "circle" ? 40 : "100%"));
|
|
1629
2820
|
const h = toCss(height2 ?? (variant === "circle" ? w : variant === "rect" ? 100 : "1em"));
|
|
1630
2821
|
if (variant === "text" && lines2 > 1) {
|
|
1631
|
-
return /* @__PURE__ */ (0,
|
|
2822
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1632
2823
|
"span",
|
|
1633
2824
|
{
|
|
1634
2825
|
ref,
|
|
@@ -1636,7 +2827,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
|
|
|
1636
2827
|
className: cx(lines, className),
|
|
1637
2828
|
style: { ...(0, import_dynamic2.assignInlineVars)({ [width]: w }), ...style },
|
|
1638
2829
|
...rest,
|
|
1639
|
-
children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ (0,
|
|
2830
|
+
children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1640
2831
|
"span",
|
|
1641
2832
|
{
|
|
1642
2833
|
className: skeleton({ variant }),
|
|
@@ -1647,7 +2838,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
|
|
|
1647
2838
|
}
|
|
1648
2839
|
);
|
|
1649
2840
|
}
|
|
1650
|
-
return /* @__PURE__ */ (0,
|
|
2841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1651
2842
|
"span",
|
|
1652
2843
|
{
|
|
1653
2844
|
ref,
|
|
@@ -1661,23 +2852,23 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
|
|
|
1661
2852
|
|
|
1662
2853
|
// src/components/Slider/Slider.tsx
|
|
1663
2854
|
var RadixSlider = __toESM(require("@radix-ui/react-slider"), 1);
|
|
1664
|
-
var
|
|
2855
|
+
var import_react34 = require("react");
|
|
1665
2856
|
|
|
1666
2857
|
// src/components/Slider/Slider.css.ts
|
|
1667
2858
|
var import_createRuntimeFn18 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1668
2859
|
var field2 = "_126mzjm0";
|
|
1669
|
-
var
|
|
2860
|
+
var header8 = "_126mzjm1";
|
|
1670
2861
|
var helperText2 = "_126mzjm4";
|
|
1671
2862
|
var label4 = "_126mzjm2";
|
|
1672
2863
|
var range2 = "_126mzjmb";
|
|
1673
|
-
var
|
|
2864
|
+
var root8 = /* @__PURE__ */ (0, import_createRuntimeFn18.createRuntimeFn)({ defaultClassName: "_126mzjm5", variantClassNames: { size: { sm: "_126mzjm6", md: "_126mzjm7" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1674
2865
|
var thumb = /* @__PURE__ */ (0, import_createRuntimeFn18.createRuntimeFn)({ defaultClassName: "_126mzjmc", variantClassNames: { size: { sm: "_126mzjmd", md: "_126mzjme" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1675
2866
|
var track2 = /* @__PURE__ */ (0, import_createRuntimeFn18.createRuntimeFn)({ defaultClassName: "_126mzjm8", variantClassNames: { size: { sm: "_126mzjm9", md: "_126mzjma" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1676
2867
|
var value3 = "_126mzjm3";
|
|
1677
2868
|
|
|
1678
2869
|
// src/components/Slider/Slider.tsx
|
|
1679
|
-
var
|
|
1680
|
-
var Slider = /* @__PURE__ */ (0,
|
|
2870
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2871
|
+
var Slider = /* @__PURE__ */ (0, import_react34.forwardRef)(function Slider2(props, ref) {
|
|
1681
2872
|
const {
|
|
1682
2873
|
value: value4,
|
|
1683
2874
|
defaultValue,
|
|
@@ -1689,19 +2880,21 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
|
|
|
1689
2880
|
helperText: helperText3,
|
|
1690
2881
|
showValue,
|
|
1691
2882
|
formatValue = String,
|
|
1692
|
-
thumbLabels
|
|
2883
|
+
thumbLabels: thumbLabelsProp,
|
|
1693
2884
|
size,
|
|
1694
2885
|
id,
|
|
1695
2886
|
className,
|
|
1696
2887
|
disabled,
|
|
1697
2888
|
...rest
|
|
1698
2889
|
} = props;
|
|
1699
|
-
const
|
|
2890
|
+
const m = useMessages();
|
|
2891
|
+
const thumbLabels = thumbLabelsProp ?? [m.rangeStart ?? "\uCD5C\uC18C", m.rangeEnd ?? "\uCD5C\uB300"];
|
|
2892
|
+
const generatedId = (0, import_react34.useId)();
|
|
1700
2893
|
const baseId = id ?? generatedId;
|
|
1701
2894
|
const labelId = `${baseId}-label`;
|
|
1702
2895
|
const helperId = `${baseId}-helper`;
|
|
1703
2896
|
const isControlled = "value" in props;
|
|
1704
|
-
const [innerValue, setInnerValue] = (0,
|
|
2897
|
+
const [innerValue, setInnerValue] = (0, import_react34.useState)(defaultValue ?? [min]);
|
|
1705
2898
|
const current2 = isControlled ? value4 ?? [min] : innerValue;
|
|
1706
2899
|
const isRange = current2.length > 1;
|
|
1707
2900
|
const handleChange = (next) => {
|
|
@@ -1709,12 +2902,12 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
|
|
|
1709
2902
|
onValueChange?.(next);
|
|
1710
2903
|
};
|
|
1711
2904
|
const valueText = current2.map(formatValue).join(" \u2013 ");
|
|
1712
|
-
return /* @__PURE__ */ (0,
|
|
1713
|
-
(label6 || showValue) && /* @__PURE__ */ (0,
|
|
1714
|
-
label6 && /* @__PURE__ */ (0,
|
|
1715
|
-
showValue && /* @__PURE__ */ (0,
|
|
2905
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: cx(field2, className), children: [
|
|
2906
|
+
(label6 || showValue) && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: header8, children: [
|
|
2907
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { id: labelId, className: label4, children: label6 }),
|
|
2908
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: value3, "aria-hidden": true, children: valueText })
|
|
1716
2909
|
] }),
|
|
1717
|
-
/* @__PURE__ */ (0,
|
|
2910
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
1718
2911
|
RadixSlider.Root,
|
|
1719
2912
|
{
|
|
1720
2913
|
ref,
|
|
@@ -1724,13 +2917,13 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
|
|
|
1724
2917
|
disabled,
|
|
1725
2918
|
value: current2,
|
|
1726
2919
|
onValueChange: handleChange,
|
|
1727
|
-
className:
|
|
2920
|
+
className: root8({ size }),
|
|
1728
2921
|
...rest,
|
|
1729
2922
|
children: [
|
|
1730
|
-
/* @__PURE__ */ (0,
|
|
2923
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixSlider.Range, { className: range2 }) }),
|
|
1731
2924
|
current2.map((thumbValue, index) => {
|
|
1732
2925
|
const thumbLabelId = `${baseId}-thumb-${index}`;
|
|
1733
|
-
return /* @__PURE__ */ (0,
|
|
2926
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1734
2927
|
RadixSlider.Thumb,
|
|
1735
2928
|
{
|
|
1736
2929
|
className: thumb({ size }),
|
|
@@ -1745,45 +2938,45 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
|
|
|
1745
2938
|
]
|
|
1746
2939
|
}
|
|
1747
2940
|
),
|
|
1748
|
-
isRange && current2.map((_, index) => /* @__PURE__ */ (0,
|
|
2941
|
+
isRange && current2.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
|
|
1749
2942
|
label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
|
|
1750
2943
|
thumbLabels[index] ?? `${index + 1}`
|
|
1751
2944
|
] }, index)),
|
|
1752
|
-
helperText3 && /* @__PURE__ */ (0,
|
|
2945
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { id: helperId, className: helperText2, children: helperText3 })
|
|
1753
2946
|
] });
|
|
1754
2947
|
});
|
|
1755
2948
|
|
|
1756
2949
|
// src/components/Stack/Stack.tsx
|
|
1757
|
-
var
|
|
2950
|
+
var import_react35 = require("react");
|
|
1758
2951
|
|
|
1759
2952
|
// src/components/Stack/Stack.css.ts
|
|
1760
2953
|
var import_createRuntimeFn19 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1761
2954
|
var stack = /* @__PURE__ */ (0, import_createRuntimeFn19.createRuntimeFn)({ defaultClassName: "_1jz9hj90", variantClassNames: { direction: { row: "_1jz9hj91", column: "_1jz9hj92", "row-reverse": "_1jz9hj93", "column-reverse": "_1jz9hj94" }, gap: { "0": "_1jz9hj95", "1": "_1jz9hj96", "2": "_1jz9hj97", "3": "_1jz9hj98", "4": "_1jz9hj99", "5": "_1jz9hj9a", "6": "_1jz9hj9b", "8": "_1jz9hj9c", "10": "_1jz9hj9d", "12": "_1jz9hj9e", "16": "_1jz9hj9f" }, align: { start: "_1jz9hj9g", center: "_1jz9hj9h", end: "_1jz9hj9i", stretch: "_1jz9hj9j", baseline: "_1jz9hj9k" }, justify: { start: "_1jz9hj9l", center: "_1jz9hj9m", end: "_1jz9hj9n", between: "_1jz9hj9o", around: "_1jz9hj9p", evenly: "_1jz9hj9q" }, wrap: { true: "_1jz9hj9r" } }, defaultVariants: { direction: "column" }, compoundVariants: [] });
|
|
1762
2955
|
|
|
1763
2956
|
// src/components/Stack/Stack.tsx
|
|
1764
|
-
var
|
|
1765
|
-
var Stack = /* @__PURE__ */ (0,
|
|
1766
|
-
return /* @__PURE__ */ (0,
|
|
2957
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2958
|
+
var Stack = /* @__PURE__ */ (0, import_react35.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
|
|
2959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
|
|
1767
2960
|
});
|
|
1768
2961
|
|
|
1769
2962
|
// src/components/Switch/Switch.tsx
|
|
1770
2963
|
var RadixSwitch = __toESM(require("@radix-ui/react-switch"), 1);
|
|
1771
|
-
var
|
|
2964
|
+
var import_react36 = require("react");
|
|
1772
2965
|
|
|
1773
2966
|
// src/components/Switch/Switch.css.ts
|
|
1774
2967
|
var import_createRuntimeFn20 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1775
2968
|
var label5 = "o33ul29";
|
|
1776
|
-
var
|
|
2969
|
+
var root9 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1777
2970
|
var thumb2 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1778
2971
|
var track3 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
|
|
1779
2972
|
|
|
1780
2973
|
// src/components/Switch/Switch.tsx
|
|
1781
|
-
var
|
|
1782
|
-
var Switch = /* @__PURE__ */ (0,
|
|
1783
|
-
const generatedId = (0,
|
|
2974
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2975
|
+
var Switch = /* @__PURE__ */ (0, import_react36.forwardRef)(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
|
|
2976
|
+
const generatedId = (0, import_react36.useId)();
|
|
1784
2977
|
const switchId = id ?? generatedId;
|
|
1785
|
-
return /* @__PURE__ */ (0,
|
|
1786
|
-
/* @__PURE__ */ (0,
|
|
2978
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: cx(root9({ size }), className), "data-disabled": disabled || void 0, children: [
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1787
2980
|
RadixSwitch.Root,
|
|
1788
2981
|
{
|
|
1789
2982
|
ref,
|
|
@@ -1792,28 +2985,28 @@ var Switch = /* @__PURE__ */ (0, import_react26.forwardRef)(function Switch2({ l
|
|
|
1792
2985
|
"aria-label": ariaLabel,
|
|
1793
2986
|
className: track3({ size }),
|
|
1794
2987
|
...rest,
|
|
1795
|
-
children: /* @__PURE__ */ (0,
|
|
2988
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadixSwitch.Thumb, { className: thumb2({ size }) })
|
|
1796
2989
|
}
|
|
1797
2990
|
),
|
|
1798
|
-
label6 && /* @__PURE__ */ (0,
|
|
2991
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("label", { htmlFor: switchId, className: label5, children: label6 })
|
|
1799
2992
|
] });
|
|
1800
2993
|
});
|
|
1801
2994
|
|
|
1802
2995
|
// src/components/Table/Table.tsx
|
|
1803
|
-
var
|
|
1804
|
-
var
|
|
2996
|
+
var import_react37 = require("react");
|
|
2997
|
+
var import_icons16 = require("@bestow-ui/icons");
|
|
1805
2998
|
|
|
1806
2999
|
// src/components/Table/Table.css.ts
|
|
1807
3000
|
var import_createRuntimeFn21 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1808
3001
|
var body4 = "l3ploy5";
|
|
1809
3002
|
var caption = "l3ploy2";
|
|
1810
|
-
var
|
|
3003
|
+
var cell2 = /* @__PURE__ */ (0, import_createRuntimeFn21.createRuntimeFn)({ defaultClassName: "l3ploy9", variantClassNames: { size: { sm: "l3ploya", md: "l3ployb" }, align: { left: "l3ployc", center: "l3ployd", right: "l3ploye" } }, defaultVariants: { size: "md", align: "left" }, compoundVariants: [] });
|
|
1811
3004
|
var container = "l3ploy0";
|
|
1812
3005
|
var footer4 = "l3ploy7";
|
|
1813
3006
|
var footerCell = "l3ployg";
|
|
1814
3007
|
var head = "l3ployf";
|
|
1815
|
-
var
|
|
1816
|
-
var
|
|
3008
|
+
var header9 = "l3ploy3";
|
|
3009
|
+
var row3 = "l3ploy8";
|
|
1817
3010
|
var sortButton = "l3ployh";
|
|
1818
3011
|
var sortIcon = "l3ployi";
|
|
1819
3012
|
var stickyHeader = "l3ploy4";
|
|
@@ -1821,10 +3014,10 @@ var striped = "l3ploy6";
|
|
|
1821
3014
|
var table = "l3ploy1";
|
|
1822
3015
|
|
|
1823
3016
|
// src/components/Table/Table.tsx
|
|
1824
|
-
var
|
|
1825
|
-
var TableSizeContext = /* @__PURE__ */ (0,
|
|
1826
|
-
var TableSectionContext = /* @__PURE__ */ (0,
|
|
1827
|
-
var Table = /* @__PURE__ */ (0,
|
|
3017
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3018
|
+
var TableSizeContext = /* @__PURE__ */ (0, import_react37.createContext)("md");
|
|
3019
|
+
var TableSectionContext = /* @__PURE__ */ (0, import_react37.createContext)("body");
|
|
3020
|
+
var Table = /* @__PURE__ */ (0, import_react37.forwardRef)(function Table2({
|
|
1828
3021
|
size = "md",
|
|
1829
3022
|
striped: striped2,
|
|
1830
3023
|
stickyHeader: stickyHeader2,
|
|
@@ -1836,8 +3029,8 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
|
|
|
1836
3029
|
children,
|
|
1837
3030
|
...rest
|
|
1838
3031
|
}, ref) {
|
|
1839
|
-
const captionId = (0,
|
|
1840
|
-
return /* @__PURE__ */ (0,
|
|
3032
|
+
const captionId = (0, import_react37.useId)();
|
|
3033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1841
3034
|
"div",
|
|
1842
3035
|
{
|
|
1843
3036
|
className: cx(container, containerClassName),
|
|
@@ -1846,7 +3039,7 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
|
|
|
1846
3039
|
role: "region",
|
|
1847
3040
|
"aria-labelledby": caption2 ? captionId : void 0,
|
|
1848
3041
|
"aria-label": caption2 ? void 0 : ariaLabel,
|
|
1849
|
-
children: /* @__PURE__ */ (0,
|
|
3042
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1850
3043
|
"table",
|
|
1851
3044
|
{
|
|
1852
3045
|
ref,
|
|
@@ -1854,7 +3047,7 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
|
|
|
1854
3047
|
"aria-label": caption2 ? void 0 : ariaLabel,
|
|
1855
3048
|
...rest,
|
|
1856
3049
|
children: [
|
|
1857
|
-
caption2 && /* @__PURE__ */ (0,
|
|
3050
|
+
caption2 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("caption", { id: captionId, className: caption, children: caption2 }),
|
|
1858
3051
|
children
|
|
1859
3052
|
]
|
|
1860
3053
|
}
|
|
@@ -1862,57 +3055,57 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
|
|
|
1862
3055
|
}
|
|
1863
3056
|
) });
|
|
1864
3057
|
});
|
|
1865
|
-
var TableHeader = /* @__PURE__ */ (0,
|
|
3058
|
+
var TableHeader = /* @__PURE__ */ (0, import_react37.forwardRef)(
|
|
1866
3059
|
function TableHeader2({ className, ...rest }, ref) {
|
|
1867
|
-
return /* @__PURE__ */ (0,
|
|
3060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("thead", { ref, className: cx(header9, className), ...rest }) });
|
|
1868
3061
|
}
|
|
1869
3062
|
);
|
|
1870
|
-
var TableBody = /* @__PURE__ */ (0,
|
|
3063
|
+
var TableBody = /* @__PURE__ */ (0, import_react37.forwardRef)(
|
|
1871
3064
|
function TableBody2({ className, ...rest }, ref) {
|
|
1872
|
-
return /* @__PURE__ */ (0,
|
|
3065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tbody", { ref, className: cx(body4, className), ...rest }) });
|
|
1873
3066
|
}
|
|
1874
3067
|
);
|
|
1875
|
-
var TableFooter = /* @__PURE__ */ (0,
|
|
3068
|
+
var TableFooter = /* @__PURE__ */ (0, import_react37.forwardRef)(
|
|
1876
3069
|
function TableFooter2({ className, ...rest }, ref) {
|
|
1877
|
-
return /* @__PURE__ */ (0,
|
|
3070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tfoot", { ref, className: cx(footer4, className), ...rest }) });
|
|
1878
3071
|
}
|
|
1879
3072
|
);
|
|
1880
|
-
var TableRow = /* @__PURE__ */ (0,
|
|
1881
|
-
return /* @__PURE__ */ (0,
|
|
3073
|
+
var TableRow = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableRow2({ selected, className, ...rest }, ref) {
|
|
3074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
|
|
1882
3075
|
});
|
|
1883
|
-
var TableHead = /* @__PURE__ */ (0,
|
|
1884
|
-
const size = (0,
|
|
1885
|
-
const section = (0,
|
|
3076
|
+
var TableHead = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
|
|
3077
|
+
const size = (0, import_react37.useContext)(TableSizeContext);
|
|
3078
|
+
const section = (0, import_react37.useContext)(TableSectionContext);
|
|
1886
3079
|
const sortable = onSort !== void 0;
|
|
1887
3080
|
const direction = sortDirection ?? "none";
|
|
1888
|
-
const SortIcon = direction === "descending" ?
|
|
1889
|
-
return /* @__PURE__ */ (0,
|
|
3081
|
+
const SortIcon = direction === "descending" ? import_icons16.ArrowDownIcon : import_icons16.ArrowUpIcon;
|
|
3082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1890
3083
|
"th",
|
|
1891
3084
|
{
|
|
1892
3085
|
ref,
|
|
1893
3086
|
scope: scope ?? (section === "header" ? "col" : "row"),
|
|
1894
3087
|
"aria-sort": sortable && direction !== "none" ? direction : void 0,
|
|
1895
3088
|
className: cx(
|
|
1896
|
-
|
|
3089
|
+
cell2({ size, align }),
|
|
1897
3090
|
section === "header" ? head : section === "footer" ? footerCell : void 0,
|
|
1898
3091
|
className
|
|
1899
3092
|
),
|
|
1900
3093
|
...rest,
|
|
1901
|
-
children: sortable ? /* @__PURE__ */ (0,
|
|
3094
|
+
children: sortable ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("button", { type: "button", className: sortButton, onClick: onSort, children: [
|
|
1902
3095
|
children,
|
|
1903
|
-
/* @__PURE__ */ (0,
|
|
3096
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
|
|
1904
3097
|
] }) : children
|
|
1905
3098
|
}
|
|
1906
3099
|
);
|
|
1907
3100
|
});
|
|
1908
|
-
var TableCell = /* @__PURE__ */ (0,
|
|
1909
|
-
const size = (0,
|
|
1910
|
-
const section = (0,
|
|
1911
|
-
return /* @__PURE__ */ (0,
|
|
3101
|
+
var TableCell = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableCell2({ align, className, ...rest }, ref) {
|
|
3102
|
+
const size = (0, import_react37.useContext)(TableSizeContext);
|
|
3103
|
+
const section = (0, import_react37.useContext)(TableSectionContext);
|
|
3104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1912
3105
|
"td",
|
|
1913
3106
|
{
|
|
1914
3107
|
ref,
|
|
1915
|
-
className: cx(
|
|
3108
|
+
className: cx(cell2({ size, align }), section === "footer" && footerCell, className),
|
|
1916
3109
|
...rest
|
|
1917
3110
|
}
|
|
1918
3111
|
);
|
|
@@ -1920,35 +3113,35 @@ var TableCell = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableCel
|
|
|
1920
3113
|
|
|
1921
3114
|
// src/components/Tabs/Tabs.tsx
|
|
1922
3115
|
var RadixTabs = __toESM(require("@radix-ui/react-tabs"), 1);
|
|
1923
|
-
var
|
|
3116
|
+
var import_react38 = require("react");
|
|
1924
3117
|
|
|
1925
3118
|
// src/components/Tabs/Tabs.css.ts
|
|
1926
3119
|
var import_createRuntimeFn22 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
1927
|
-
var
|
|
1928
|
-
var
|
|
3120
|
+
var content10 = "fvhbtda";
|
|
3121
|
+
var list4 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
|
|
1929
3122
|
var trigger3 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ defaultClassName: "fvhbtd3", variantClassNames: { variant: { line: "fvhbtd4", soft: "fvhbtd5" }, size: { sm: "fvhbtd6", md: "fvhbtd7" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd8"], [{ variant: "soft", size: "md" }, "fvhbtd9"]] });
|
|
1930
3123
|
|
|
1931
3124
|
// src/components/Tabs/Tabs.tsx
|
|
1932
|
-
var
|
|
1933
|
-
var TabsStyleContext = /* @__PURE__ */ (0,
|
|
1934
|
-
var Tabs = /* @__PURE__ */ (0,
|
|
3125
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3126
|
+
var TabsStyleContext = /* @__PURE__ */ (0, import_react38.createContext)({ variant: "line", size: "md" });
|
|
3127
|
+
var Tabs = /* @__PURE__ */ (0, import_react38.forwardRef)(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
|
|
1935
3128
|
const controlled = "value" in props ? { value: props.value ?? "" } : {};
|
|
1936
|
-
return /* @__PURE__ */ (0,
|
|
3129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Root, { ref, ...props, ...controlled }) });
|
|
1937
3130
|
});
|
|
1938
|
-
var TabsList = /* @__PURE__ */ (0,
|
|
1939
|
-
const { variant } = (0,
|
|
1940
|
-
return /* @__PURE__ */ (0,
|
|
3131
|
+
var TabsList = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsList2({ className, ...rest }, ref) {
|
|
3132
|
+
const { variant } = (0, import_react38.useContext)(TabsStyleContext);
|
|
3133
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
|
|
1941
3134
|
});
|
|
1942
|
-
var TabsTrigger = /* @__PURE__ */ (0,
|
|
1943
|
-
const { variant, size } = (0,
|
|
1944
|
-
return /* @__PURE__ */ (0,
|
|
3135
|
+
var TabsTrigger = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsTrigger2({ className, ...rest }, ref) {
|
|
3136
|
+
const { variant, size } = (0, import_react38.useContext)(TabsStyleContext);
|
|
3137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
|
|
1945
3138
|
});
|
|
1946
|
-
var TabsContent = /* @__PURE__ */ (0,
|
|
1947
|
-
return /* @__PURE__ */ (0,
|
|
3139
|
+
var TabsContent = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsContent2({ className, ...rest }, ref) {
|
|
3140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
|
|
1948
3141
|
});
|
|
1949
3142
|
|
|
1950
3143
|
// src/components/Textarea/Textarea.tsx
|
|
1951
|
-
var
|
|
3144
|
+
var import_react39 = require("react");
|
|
1952
3145
|
|
|
1953
3146
|
// src/components/Textarea/Textarea.css.ts
|
|
1954
3147
|
var import_createRuntimeFn23 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
@@ -1959,9 +3152,9 @@ var footer5 = "_1koawa8";
|
|
|
1959
3152
|
var textarea = /* @__PURE__ */ (0, import_createRuntimeFn23.createRuntimeFn)({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
|
|
1960
3153
|
|
|
1961
3154
|
// src/components/Textarea/Textarea.tsx
|
|
1962
|
-
var
|
|
1963
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
1964
|
-
var Textarea = /* @__PURE__ */ (0,
|
|
3155
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3156
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react39.useLayoutEffect : import_react39.useEffect;
|
|
3157
|
+
var Textarea = /* @__PURE__ */ (0, import_react39.forwardRef)(function Textarea2({
|
|
1965
3158
|
label: label6,
|
|
1966
3159
|
helperText: helperText3,
|
|
1967
3160
|
error,
|
|
@@ -1982,13 +3175,13 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
|
|
|
1982
3175
|
"aria-describedby": ariaDescribedBy,
|
|
1983
3176
|
...rest
|
|
1984
3177
|
}, ref) {
|
|
1985
|
-
const generatedId = (0,
|
|
3178
|
+
const generatedId = (0, import_react39.useId)();
|
|
1986
3179
|
const textareaId = id ?? generatedId;
|
|
1987
3180
|
const helperId = helperText3 ? `${textareaId}-helper` : void 0;
|
|
1988
|
-
const innerRef = (0,
|
|
1989
|
-
const [uncontrolledLength, setUncontrolledLength] = (0,
|
|
3181
|
+
const innerRef = (0, import_react39.useRef)(null);
|
|
3182
|
+
const [uncontrolledLength, setUncontrolledLength] = (0, import_react39.useState)(() => String(defaultValue ?? "").length);
|
|
1990
3183
|
const length = value4 !== void 0 ? String(value4).length : uncontrolledLength;
|
|
1991
|
-
const fitHeight = (0,
|
|
3184
|
+
const fitHeight = (0, import_react39.useCallback)(() => {
|
|
1992
3185
|
const el = innerRef.current;
|
|
1993
3186
|
if (!autoResize || !el) return;
|
|
1994
3187
|
el.style.height = "auto";
|
|
@@ -2001,12 +3194,12 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
|
|
|
2001
3194
|
fitHeight();
|
|
2002
3195
|
onChange?.(event);
|
|
2003
3196
|
};
|
|
2004
|
-
return /* @__PURE__ */ (0,
|
|
2005
|
-
label6 && /* @__PURE__ */ (0,
|
|
3197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
|
|
3198
|
+
label6 && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("label", { htmlFor: textareaId, className: label, children: [
|
|
2006
3199
|
label6,
|
|
2007
|
-
required && /* @__PURE__ */ (0,
|
|
3200
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
|
|
2008
3201
|
] }),
|
|
2009
|
-
/* @__PURE__ */ (0,
|
|
3202
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2010
3203
|
"textarea",
|
|
2011
3204
|
{
|
|
2012
3205
|
ref: mergeRefs(innerRef, ref),
|
|
@@ -2028,49 +3221,57 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
|
|
|
2028
3221
|
...rest
|
|
2029
3222
|
}
|
|
2030
3223
|
),
|
|
2031
|
-
(helperText3 || showCount) && /* @__PURE__ */ (0,
|
|
2032
|
-
helperText3 && /* @__PURE__ */ (0,
|
|
2033
|
-
showCount && /* @__PURE__ */ (0,
|
|
3224
|
+
(helperText3 || showCount) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: footer5, children: [
|
|
3225
|
+
helperText3 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
|
|
3226
|
+
showCount && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
|
|
2034
3227
|
] })
|
|
2035
3228
|
] });
|
|
2036
3229
|
});
|
|
2037
3230
|
|
|
2038
3231
|
// src/components/Toast/Toast.tsx
|
|
2039
3232
|
var RadixToast = __toESM(require("@radix-ui/react-toast"), 1);
|
|
2040
|
-
var
|
|
2041
|
-
var
|
|
3233
|
+
var import_react40 = require("react");
|
|
3234
|
+
var import_icons17 = require("@bestow-ui/icons");
|
|
2042
3235
|
|
|
2043
3236
|
// src/components/Toast/Toast.css.ts
|
|
2044
3237
|
var import_createRuntimeFn24 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
2045
|
-
var action2 = "
|
|
2046
|
-
var close = "
|
|
2047
|
-
var description5 = "
|
|
2048
|
-
var title5 = "
|
|
2049
|
-
var toast = /* @__PURE__ */ (0, import_createRuntimeFn24.createRuntimeFn)({ defaultClassName: "_1g11zvx1", variantClassNames: {
|
|
3238
|
+
var action2 = "_1g11zvx9";
|
|
3239
|
+
var close = "_1g11zvxa";
|
|
3240
|
+
var description5 = "_1g11zvx8";
|
|
3241
|
+
var title5 = "_1g11zvx7";
|
|
3242
|
+
var toast = /* @__PURE__ */ (0, import_createRuntimeFn24.createRuntimeFn)({ defaultClassName: "_1g11zvx1", variantClassNames: { color: { primary: "_1g11zvx2", neutral: "_1g11zvx3", success: "_1g11zvx4", warning: "_1g11zvx5", danger: "_1g11zvx6" } }, defaultVariants: { color: "neutral" }, compoundVariants: [] });
|
|
2050
3243
|
var viewport2 = "_1g11zvx0";
|
|
2051
3244
|
|
|
2052
3245
|
// src/components/Toast/Toast.tsx
|
|
2053
|
-
var
|
|
3246
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2054
3247
|
var REMOVE_DELAY = 500;
|
|
2055
|
-
var ToastContext = /* @__PURE__ */ (0,
|
|
2056
|
-
function ToastProvider({ children, duration = 5e3, label:
|
|
2057
|
-
const
|
|
2058
|
-
const
|
|
3248
|
+
var ToastContext = /* @__PURE__ */ (0, import_react40.createContext)(null);
|
|
3249
|
+
function ToastProvider({ children, duration = 5e3, label: labelProp }) {
|
|
3250
|
+
const m = useMessages();
|
|
3251
|
+
const label6 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
|
|
3252
|
+
const [toasts, setToasts] = (0, import_react40.useState)([]);
|
|
3253
|
+
const nextId = (0, import_react40.useRef)(0);
|
|
2059
3254
|
const portal2 = usePortalProps();
|
|
2060
|
-
const toast2 = (0,
|
|
3255
|
+
const toast2 = (0, import_react40.useCallback)(({ variant, ...options }) => {
|
|
3256
|
+
if (variant !== void 0) {
|
|
3257
|
+
warnOnce(
|
|
3258
|
+
'toast() \uC758 variant \uB294 deprecated \uC608\uC694. color \uB97C \uC4F0\uC138\uC694 (variant "default" \u2192 color "neutral", 1.0 \uC5D0\uC11C \uC81C\uAC70).'
|
|
3259
|
+
);
|
|
3260
|
+
}
|
|
3261
|
+
const color = options.color ?? (variant === "default" ? "neutral" : variant);
|
|
2061
3262
|
const id = nextId.current++;
|
|
2062
|
-
setToasts((prev) => [...prev, { ...options, id, open: true }]);
|
|
3263
|
+
setToasts((prev) => [...prev, { ...options, color, id, open: true }]);
|
|
2063
3264
|
return id;
|
|
2064
3265
|
}, []);
|
|
2065
|
-
const dismiss = (0,
|
|
3266
|
+
const dismiss = (0, import_react40.useCallback)((id) => {
|
|
2066
3267
|
const isTarget = (t) => id === void 0 || t.id === id;
|
|
2067
3268
|
setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
|
|
2068
3269
|
setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
|
|
2069
3270
|
}, []);
|
|
2070
|
-
const value4 = (0,
|
|
2071
|
-
return /* @__PURE__ */ (0,
|
|
3271
|
+
const value4 = (0, import_react40.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
|
|
3272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
|
|
2072
3273
|
children,
|
|
2073
|
-
toasts.map(({ id, open, title: title6, description: description6,
|
|
3274
|
+
toasts.map(({ id, open, title: title6, description: description6, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2074
3275
|
RadixToast.Root,
|
|
2075
3276
|
{
|
|
2076
3277
|
open,
|
|
@@ -2078,21 +3279,21 @@ function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC
|
|
|
2078
3279
|
onOpenChange: (nextOpen) => {
|
|
2079
3280
|
if (!nextOpen) dismiss(id);
|
|
2080
3281
|
},
|
|
2081
|
-
className: toast({
|
|
3282
|
+
className: toast({ color }),
|
|
2082
3283
|
children: [
|
|
2083
|
-
/* @__PURE__ */ (0,
|
|
2084
|
-
description6 && /* @__PURE__ */ (0,
|
|
2085
|
-
action3 && /* @__PURE__ */ (0,
|
|
2086
|
-
/* @__PURE__ */ (0,
|
|
3284
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RadixToast.Title, { className: title5, children: title6 }),
|
|
3285
|
+
description6 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RadixToast.Description, { className: description5, children: description6 }),
|
|
3286
|
+
action3 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
|
|
3287
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_icons17.XIcon, { size: 16 }) })
|
|
2087
3288
|
]
|
|
2088
3289
|
},
|
|
2089
3290
|
id
|
|
2090
3291
|
)),
|
|
2091
|
-
/* @__PURE__ */ (0,
|
|
3292
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
|
|
2092
3293
|
] }) });
|
|
2093
3294
|
}
|
|
2094
3295
|
function useToast() {
|
|
2095
|
-
const context = (0,
|
|
3296
|
+
const context = (0, import_react40.useContext)(ToastContext);
|
|
2096
3297
|
if (!context) throw new Error("useToast \uB294 ToastProvider \uC548\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4.");
|
|
2097
3298
|
return context;
|
|
2098
3299
|
}
|
|
@@ -2102,12 +3303,12 @@ var RadixTooltip = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
|
2102
3303
|
|
|
2103
3304
|
// src/components/Tooltip/Tooltip.css.ts
|
|
2104
3305
|
var arrow2 = "z7rufs1";
|
|
2105
|
-
var
|
|
3306
|
+
var content11 = "z7rufs0";
|
|
2106
3307
|
|
|
2107
3308
|
// src/components/Tooltip/Tooltip.tsx
|
|
2108
|
-
var
|
|
3309
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2109
3310
|
function Tooltip({
|
|
2110
|
-
content:
|
|
3311
|
+
content: content12,
|
|
2111
3312
|
children,
|
|
2112
3313
|
side = "top",
|
|
2113
3314
|
align = "center",
|
|
@@ -2119,21 +3320,21 @@ function Tooltip({
|
|
|
2119
3320
|
className
|
|
2120
3321
|
}) {
|
|
2121
3322
|
const portal2 = usePortalProps();
|
|
2122
|
-
if (disabled ||
|
|
2123
|
-
return /* @__PURE__ */ (0,
|
|
2124
|
-
/* @__PURE__ */ (0,
|
|
2125
|
-
/* @__PURE__ */ (0,
|
|
3323
|
+
if (disabled || content12 == null || content12 === "") return children;
|
|
3324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
|
|
3325
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(RadixTooltip.Trigger, { asChild: true, children }),
|
|
3326
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
2126
3327
|
RadixTooltip.Content,
|
|
2127
3328
|
{
|
|
2128
3329
|
side,
|
|
2129
3330
|
align,
|
|
2130
3331
|
sideOffset: 6,
|
|
2131
3332
|
collisionPadding: 8,
|
|
2132
|
-
className: cx(portal2.className,
|
|
3333
|
+
className: cx(portal2.className, content11, className),
|
|
2133
3334
|
style: portal2.style,
|
|
2134
3335
|
children: [
|
|
2135
|
-
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
3336
|
+
content12,
|
|
3337
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
|
|
2137
3338
|
]
|
|
2138
3339
|
}
|
|
2139
3340
|
) })
|
|
@@ -2141,14 +3342,14 @@ function Tooltip({
|
|
|
2141
3342
|
}
|
|
2142
3343
|
|
|
2143
3344
|
// src/components/Typography/Typography.tsx
|
|
2144
|
-
var
|
|
3345
|
+
var import_react41 = require("react");
|
|
2145
3346
|
|
|
2146
3347
|
// src/components/Typography/Typography.css.ts
|
|
2147
3348
|
var import_createRuntimeFn25 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
2148
3349
|
var typography = /* @__PURE__ */ (0, import_createRuntimeFn25.createRuntimeFn)({ defaultClassName: "kiolio0", variantClassNames: { variant: { display: "kiolio1", h1: "kiolio2", h2: "kiolio3", h3: "kiolio4", h4: "kiolio5", "body-lg": "kiolio6", body: "kiolio7", "body-sm": "kiolio8", caption: "kiolio9" }, color: { "default": "kiolioa", muted: "kioliob", subtle: "kiolioc", primary: "kioliod", danger: "kiolioe", success: "kioliof", warning: "kioliog", inherit: "kiolioh" }, weight: { regular: "kiolioi", medium: "kiolioj", semibold: "kioliok", bold: "kioliol" }, align: { start: "kioliom", center: "kiolion", end: "kiolioo" }, truncate: { true: "kioliop" } }, defaultVariants: { variant: "body", color: "default" }, compoundVariants: [] });
|
|
2149
3350
|
|
|
2150
3351
|
// src/components/Typography/Typography.tsx
|
|
2151
|
-
var
|
|
3352
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2152
3353
|
var defaultElement = {
|
|
2153
3354
|
display: "h1",
|
|
2154
3355
|
h1: "h1",
|
|
@@ -2160,9 +3361,9 @@ var defaultElement = {
|
|
|
2160
3361
|
"body-sm": "p",
|
|
2161
3362
|
caption: "span"
|
|
2162
3363
|
};
|
|
2163
|
-
var Typography = /* @__PURE__ */ (0,
|
|
3364
|
+
var Typography = /* @__PURE__ */ (0, import_react41.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
|
|
2164
3365
|
const Component = as ?? defaultElement[variant];
|
|
2165
|
-
return /* @__PURE__ */ (0,
|
|
3366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2166
3367
|
Component,
|
|
2167
3368
|
{
|
|
2168
3369
|
ref,
|
|
@@ -2171,21 +3372,171 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
|
|
|
2171
3372
|
}
|
|
2172
3373
|
);
|
|
2173
3374
|
});
|
|
3375
|
+
|
|
3376
|
+
// src/components/VerificationCodeInput/VerificationCodeInput.tsx
|
|
3377
|
+
var import_react42 = require("react");
|
|
3378
|
+
|
|
3379
|
+
// src/components/VerificationCodeInput/VerificationCodeInput.css.ts
|
|
3380
|
+
var input4 = "ea01812";
|
|
3381
|
+
var row4 = "ea01810";
|
|
3382
|
+
var slot = "ea01813";
|
|
3383
|
+
var slots = "ea01811";
|
|
3384
|
+
var timer = "ea01814";
|
|
3385
|
+
|
|
3386
|
+
// src/components/VerificationCodeInput/VerificationCodeInput.tsx
|
|
3387
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3388
|
+
var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
|
|
3389
|
+
var VerificationCodeInput = /* @__PURE__ */ (0, import_react42.forwardRef)(
|
|
3390
|
+
function VerificationCodeInput2(props, ref) {
|
|
3391
|
+
const {
|
|
3392
|
+
length = 6,
|
|
3393
|
+
value: value4,
|
|
3394
|
+
defaultValue,
|
|
3395
|
+
onValueChange,
|
|
3396
|
+
onComplete,
|
|
3397
|
+
type = "numeric",
|
|
3398
|
+
label: labelProp,
|
|
3399
|
+
helperText: helperText3,
|
|
3400
|
+
error,
|
|
3401
|
+
disabled,
|
|
3402
|
+
autoFocus,
|
|
3403
|
+
expiresIn,
|
|
3404
|
+
onExpire,
|
|
3405
|
+
onResend,
|
|
3406
|
+
resendText: resendTextProp,
|
|
3407
|
+
expiredText: expiredTextProp,
|
|
3408
|
+
name,
|
|
3409
|
+
id,
|
|
3410
|
+
className
|
|
3411
|
+
} = props;
|
|
3412
|
+
const m = useMessages();
|
|
3413
|
+
const label6 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
|
|
3414
|
+
const resendText = resendTextProp ?? m.resend ?? "\uC7AC\uC804\uC1A1";
|
|
3415
|
+
const expiredText = expiredTextProp ?? m.verificationExpired ?? "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.";
|
|
3416
|
+
const generatedId = (0, import_react42.useId)();
|
|
3417
|
+
const inputId = id ?? generatedId;
|
|
3418
|
+
const helperId = `${inputId}-helper`;
|
|
3419
|
+
const statusId = `${inputId}-status`;
|
|
3420
|
+
const inputRef = (0, import_react42.useRef)(null);
|
|
3421
|
+
const isControlled = "value" in props;
|
|
3422
|
+
const [innerValue, setInnerValue] = (0, import_react42.useState)(defaultValue ?? "");
|
|
3423
|
+
const code = (isControlled ? value4 ?? "" : innerValue).slice(0, length);
|
|
3424
|
+
const [focused, setFocused] = (0, import_react42.useState)(false);
|
|
3425
|
+
const [endAt, setEndAt] = (0, import_react42.useState)(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
|
|
3426
|
+
const [remaining, setRemaining] = (0, import_react42.useState)(expiresIn ?? 0);
|
|
3427
|
+
const expired = expiresIn !== void 0 && remaining <= 0;
|
|
3428
|
+
const onExpireRef = (0, import_react42.useRef)(onExpire);
|
|
3429
|
+
(0, import_react42.useEffect)(() => {
|
|
3430
|
+
onExpireRef.current = onExpire;
|
|
3431
|
+
});
|
|
3432
|
+
(0, import_react42.useEffect)(() => {
|
|
3433
|
+
if (endAt === null) return;
|
|
3434
|
+
const tick = () => {
|
|
3435
|
+
const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
|
|
3436
|
+
setRemaining(left);
|
|
3437
|
+
if (left === 0) {
|
|
3438
|
+
clearInterval(timer2);
|
|
3439
|
+
onExpireRef.current?.();
|
|
3440
|
+
}
|
|
3441
|
+
};
|
|
3442
|
+
const timer2 = setInterval(tick, 250);
|
|
3443
|
+
tick();
|
|
3444
|
+
return () => clearInterval(timer2);
|
|
3445
|
+
}, [endAt]);
|
|
3446
|
+
const setCode = (next) => {
|
|
3447
|
+
if (!isControlled) setInnerValue(next);
|
|
3448
|
+
onValueChange?.(next);
|
|
3449
|
+
if (next.length === length && code.length !== length) onComplete?.(next);
|
|
3450
|
+
};
|
|
3451
|
+
const handleChange = (event) => {
|
|
3452
|
+
const raw = event.target.value;
|
|
3453
|
+
const cleaned = (type === "numeric" ? raw.replace(/\D/g, "") : raw.replace(/[^0-9a-z]/gi, "").toUpperCase()).slice(0, length);
|
|
3454
|
+
setCode(cleaned);
|
|
3455
|
+
};
|
|
3456
|
+
const resend = () => {
|
|
3457
|
+
onResend?.();
|
|
3458
|
+
setCode("");
|
|
3459
|
+
if (expiresIn) {
|
|
3460
|
+
setEndAt(Date.now() + expiresIn * 1e3);
|
|
3461
|
+
setRemaining(expiresIn);
|
|
3462
|
+
}
|
|
3463
|
+
inputRef.current?.focus();
|
|
3464
|
+
};
|
|
3465
|
+
const description6 = helperText3 ?? m.verificationCodeHint?.(length, type) ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
|
|
3466
|
+
const activeIndex = Math.min(code.length, length - 1);
|
|
3467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
3468
|
+
"div",
|
|
3469
|
+
{
|
|
3470
|
+
className: cx(field, className),
|
|
3471
|
+
"data-invalid": error || void 0,
|
|
3472
|
+
"data-disabled": disabled || void 0,
|
|
3473
|
+
children: [
|
|
3474
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("label", { htmlFor: inputId, className: label, children: label6 }),
|
|
3475
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: row4, children: [
|
|
3476
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: slots, children: [
|
|
3477
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3478
|
+
"input",
|
|
3479
|
+
{
|
|
3480
|
+
ref: mergeRefs(ref, inputRef),
|
|
3481
|
+
id: inputId,
|
|
3482
|
+
type: "text",
|
|
3483
|
+
inputMode: type === "numeric" ? "numeric" : "text",
|
|
3484
|
+
autoComplete: "one-time-code",
|
|
3485
|
+
pattern: type === "numeric" ? "[0-9]*" : void 0,
|
|
3486
|
+
value: code,
|
|
3487
|
+
onChange: handleChange,
|
|
3488
|
+
onFocus: () => setFocused(true),
|
|
3489
|
+
onBlur: () => setFocused(false),
|
|
3490
|
+
disabled,
|
|
3491
|
+
autoFocus,
|
|
3492
|
+
"aria-invalid": error || void 0,
|
|
3493
|
+
"aria-describedby": `${helperId} ${statusId}`,
|
|
3494
|
+
className: input4
|
|
3495
|
+
}
|
|
3496
|
+
),
|
|
3497
|
+
Array.from({ length }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3498
|
+
"div",
|
|
3499
|
+
{
|
|
3500
|
+
className: slot,
|
|
3501
|
+
"data-active": focused && index === activeIndex ? "" : void 0,
|
|
3502
|
+
"aria-hidden": true,
|
|
3503
|
+
children: code[index] ?? ""
|
|
3504
|
+
},
|
|
3505
|
+
index
|
|
3506
|
+
))
|
|
3507
|
+
] }),
|
|
3508
|
+
expiresIn !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { role: "timer", className: timer, children: formatTime(remaining) }),
|
|
3509
|
+
onResend && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
|
|
3510
|
+
] }),
|
|
3511
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { id: helperId, className: helperText({ error }), children: description6 }),
|
|
3512
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
|
|
3513
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("input", { type: "hidden", name, value: code })
|
|
3514
|
+
]
|
|
3515
|
+
}
|
|
3516
|
+
);
|
|
3517
|
+
}
|
|
3518
|
+
);
|
|
2174
3519
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2175
3520
|
0 && (module.exports = {
|
|
2176
3521
|
Accordion,
|
|
2177
3522
|
AccordionItem,
|
|
3523
|
+
AddressInput,
|
|
3524
|
+
AgreementGroup,
|
|
2178
3525
|
Alert,
|
|
3526
|
+
AmountInput,
|
|
2179
3527
|
Avatar,
|
|
2180
3528
|
Badge,
|
|
2181
3529
|
Breadcrumb,
|
|
3530
|
+
BusinessNumberInput,
|
|
2182
3531
|
Button,
|
|
3532
|
+
Calendar,
|
|
2183
3533
|
Card,
|
|
2184
3534
|
CardBody,
|
|
2185
3535
|
CardFooter,
|
|
2186
3536
|
CardHeader,
|
|
2187
3537
|
Checkbox,
|
|
2188
3538
|
Combobox,
|
|
3539
|
+
DatePicker,
|
|
2189
3540
|
Divider,
|
|
2190
3541
|
Drawer,
|
|
2191
3542
|
DrawerClose,
|
|
@@ -2199,9 +3550,11 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
|
|
|
2199
3550
|
IconButton,
|
|
2200
3551
|
Input,
|
|
2201
3552
|
Link,
|
|
3553
|
+
LocaleProvider,
|
|
2202
3554
|
Modal,
|
|
2203
3555
|
ModalClose,
|
|
2204
3556
|
Pagination,
|
|
3557
|
+
PhoneNumberInput,
|
|
2205
3558
|
Popover,
|
|
2206
3559
|
PopoverClose,
|
|
2207
3560
|
Progress,
|
|
@@ -2229,10 +3582,23 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
|
|
|
2229
3582
|
ToastProvider,
|
|
2230
3583
|
Tooltip,
|
|
2231
3584
|
Typography,
|
|
3585
|
+
VerificationCodeInput,
|
|
3586
|
+
composeExtraAddress,
|
|
2232
3587
|
contrastRatio,
|
|
2233
3588
|
createIntentColors,
|
|
2234
3589
|
createTheme,
|
|
3590
|
+
en,
|
|
3591
|
+
formatBusinessNumber,
|
|
3592
|
+
formatKoreanAmount,
|
|
3593
|
+
formatKoreanDate,
|
|
3594
|
+
formatPhoneNumber,
|
|
3595
|
+
hasAllRequiredAgreements,
|
|
3596
|
+
isValidBusinessNumber,
|
|
3597
|
+
kakaoPostcodeProvider,
|
|
3598
|
+
parseISODate,
|
|
2235
3599
|
themeClass,
|
|
3600
|
+
toISODate,
|
|
3601
|
+
useMessages,
|
|
2236
3602
|
usePortalClassName,
|
|
2237
3603
|
usePortalProps,
|
|
2238
3604
|
useTheme,
|