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