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