@bestow-ui/react 0.12.0 → 1.0.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/dist/index.cjs CHANGED
@@ -29,8 +29,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
30
 
31
31
  // src/index.ts
32
- var index_exports = {};
33
- __export(index_exports, {
32
+ var src_exports = {};
33
+ __export(src_exports, {
34
34
  Accordion: () => Accordion,
35
35
  AccordionItem: () => AccordionItem,
36
36
  AddressInput: () => AddressInput,
@@ -112,13 +112,12 @@ __export(index_exports, {
112
112
  themeClass: () => themeClass,
113
113
  toISODate: () => toISODate,
114
114
  useMessages: () => useMessages,
115
- usePortalClassName: () => usePortalClassName,
116
115
  usePortalProps: () => usePortalProps,
117
116
  useTheme: () => useTheme,
118
117
  useToast: () => useToast,
119
118
  vars: () => vars
120
119
  });
121
- module.exports = __toCommonJS(index_exports);
120
+ module.exports = __toCommonJS(src_exports);
122
121
 
123
122
  // src/theme/contract.css.ts
124
123
  var themeClass = { light: "tkagtb0", dark: "tkagtb1" };
@@ -203,36 +202,43 @@ function hoverFor(base, delta, contrast) {
203
202
  if (contrastRatio(contrast, preferred) >= 4.5) return preferred;
204
203
  return withL(base, Math.min(1, Math.max(0, base.l - delta)));
205
204
  }
206
- function pickContrast(solid) {
205
+ function solidWithContrast(color) {
207
206
  const white = import_tokens.palette.white;
208
207
  const dark = import_tokens.palette.gray[900];
209
- if (contrastRatio(white, solid) >= 4.5) return white;
210
- return contrastRatio(dark, solid) >= contrastRatio(white, solid) ? dark : white;
208
+ if (contrastRatio(white, color) >= 4.5) return { solid: color, contrast: white };
209
+ if (contrastRatio(dark, color) >= 4.5) return { solid: color, contrast: dark };
210
+ const base = rgbToOklch(parseHex(color));
211
+ for (let delta = 5e-3; delta <= 1; delta += 5e-3) {
212
+ const darker = withL(base, Math.max(0, base.l - delta));
213
+ if (contrastRatio(white, darker) >= 4.5) return { solid: darker, contrast: white };
214
+ const lighter = withL(base, Math.min(1, base.l + delta));
215
+ if (contrastRatio(dark, lighter) >= 4.5) return { solid: lighter, contrast: dark };
216
+ }
217
+ return { solid: import_tokens.palette.black, contrast: white };
211
218
  }
212
219
  var rgba = (hex, alpha) => {
213
220
  const [r, g, b] = parseHex(hex).map((v) => Math.round(v * 255));
214
221
  return `rgba(${r}, ${g}, ${b}, ${alpha})`;
215
222
  };
216
223
  function createIntentColors(intent, color) {
217
- const solid = toHex(parseHex(color));
218
- const base = rgbToOklch(parseHex(solid));
224
+ const input5 = toHex(parseHex(color));
225
+ const base = rgbToOklch(parseHex(input5));
219
226
  const lightSubtle = withL(base, 0.97, Math.min(base.c, 0.12) * 0.3);
220
227
  const lightSubtleHover = withL(base, 0.93, Math.min(base.c, 0.12) * 0.45);
221
- const lightContrast = pickContrast(solid);
228
+ const { solid, contrast: lightContrast } = solidWithContrast(input5);
222
229
  const light = {
223
230
  solid,
224
- solidHover: hoverFor(base, -0.06, lightContrast),
231
+ solidHover: hoverFor(rgbToOklch(parseHex(solid)), -0.06, lightContrast),
225
232
  contrast: lightContrast,
226
233
  subtle: lightSubtle,
227
234
  subtleHover: lightSubtleHover,
228
235
  text: findReadable(base, Math.min(base.l, 0.55), -0.02, [import_tokens.lightColors.bg.default, lightSubtle, lightSubtleHover])
229
236
  };
230
237
  const darkBg = import_tokens.darkColors.bg.default;
231
- const darkSolid = base.l < 0.5 ? withL(base, 0.55) : solid;
238
+ const { solid: darkSolid, contrast: darkContrast } = solidWithContrast(base.l < 0.5 ? withL(base, 0.55) : input5);
232
239
  const darkBase = rgbToOklch(parseHex(darkSolid));
233
240
  const darkSubtleOnBg = blend(darkSolid, 0.16, darkBg);
234
241
  const darkSubtleHoverOnBg = blend(darkSolid, 0.26, darkBg);
235
- const darkContrast = pickContrast(darkSolid);
236
242
  const dark = {
237
243
  solid: darkSolid,
238
244
  solidHover: hoverFor(darkBase, 0.06, darkContrast),
@@ -295,65 +301,6 @@ function themeToStyle(theme, mode) {
295
301
  return Object.keys(map).length ? (0, import_dynamic.assignInlineVars)(map) : void 0;
296
302
  }
297
303
 
298
- // src/theme/ThemeProvider.tsx
299
- var import_react = require("react");
300
-
301
- // src/utils/cx.ts
302
- function cx(...classNames) {
303
- return classNames.filter(Boolean).join(" ");
304
- }
305
-
306
- // src/theme/ThemeProvider.css.ts
307
- var portal = "sfyhlv0";
308
- var root = "sfyhlv1 sfyhlv0";
309
-
310
- // src/theme/ThemeProvider.tsx
311
- var import_jsx_runtime = require("react/jsx-runtime");
312
- var ThemeContext = /* @__PURE__ */ (0, import_react.createContext)({ theme: "light" });
313
- var ThemeProvider = /* @__PURE__ */ (0, import_react.forwardRef)(function ThemeProvider2({ theme: themeProp, overrides, className, style, children, ...rest }, ref) {
314
- const parent = (0, import_react.useContext)(ThemeContext);
315
- const theme = themeProp ?? parent.theme;
316
- const merged = (0, import_react.useMemo)(() => mergeThemes(parent.overrides, overrides), [parent.overrides, overrides]);
317
- const value4 = (0, import_react.useMemo)(
318
- () => ({ theme, overrides: merged, style: themeToStyle(merged, theme) }),
319
- [theme, merged]
320
- );
321
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
322
- "div",
323
- {
324
- ref,
325
- "data-theme": theme,
326
- className: cx(themeClass[theme], root, className),
327
- style: value4.style ? { ...value4.style, ...style } : style,
328
- ...rest,
329
- children
330
- }
331
- ) });
332
- });
333
- function useTheme() {
334
- return (0, import_react.useContext)(ThemeContext).theme;
335
- }
336
- function usePortalProps() {
337
- const { theme, style } = (0, import_react.useContext)(ThemeContext);
338
- return { className: cx(themeClass[theme], portal), style };
339
- }
340
- function usePortalClassName() {
341
- return usePortalProps().className;
342
- }
343
-
344
- // src/i18n/LocaleProvider.tsx
345
- var import_react2 = require("react");
346
- var import_jsx_runtime2 = require("react/jsx-runtime");
347
- var MessagesContext = /* @__PURE__ */ (0, import_react2.createContext)({});
348
- function LocaleProvider({ messages, children }) {
349
- const parent = (0, import_react2.useContext)(MessagesContext);
350
- const value4 = (0, import_react2.useMemo)(() => ({ ...parent, ...messages }), [parent, messages]);
351
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MessagesContext.Provider, { value: value4, children });
352
- }
353
- function useMessages() {
354
- return (0, import_react2.useContext)(MessagesContext);
355
- }
356
-
357
304
  // src/i18n/en.ts
358
305
  var WEEKDAYS_LONG = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
359
306
  var MONTHS = [
@@ -425,6 +372,209 @@ var en = {
425
372
  dateIncomplete: "Enter the date as YYYY-MM-DD."
426
373
  };
427
374
 
375
+ // src/utils/koreanFormat.ts
376
+ var onlyDigits = (input5) => input5.replace(/\D/g, "");
377
+ function phoneNumberMaxDigits(digits) {
378
+ if (digits.startsWith("02")) return 10;
379
+ if (/^1[568]/.test(digits)) return 8;
380
+ return 11;
381
+ }
382
+ function formatPhoneNumber(input5) {
383
+ const d = onlyDigits(input5).slice(0, phoneNumberMaxDigits(onlyDigits(input5)));
384
+ if (d.startsWith("02")) {
385
+ if (d.length <= 2) return d;
386
+ if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;
387
+ if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;
388
+ return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;
389
+ }
390
+ if (/^1[568]/.test(d)) {
391
+ return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;
392
+ }
393
+ if (d.length <= 3) return d;
394
+ if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;
395
+ if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;
396
+ return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;
397
+ }
398
+ function formatBusinessNumber(input5) {
399
+ const d = onlyDigits(input5).slice(0, 10);
400
+ if (d.length <= 3) return d;
401
+ if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;
402
+ return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;
403
+ }
404
+ function isValidBusinessNumber(input5) {
405
+ const d = onlyDigits(input5);
406
+ if (d.length !== 10) return false;
407
+ const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];
408
+ const digits = [...d].map(Number);
409
+ let sum = weights.reduce((acc, w, i) => acc + w * digits[i], 0);
410
+ sum += Math.floor(digits[8] * 5 / 10);
411
+ return (10 - sum % 10) % 10 === digits[9];
412
+ }
413
+ function formatKoreanAmount(amount, unit = "\uC6D0") {
414
+ const n = Math.floor(Math.abs(amount));
415
+ if (n === 0) return `0${unit}`;
416
+ const units = [
417
+ { value: 1e12, label: "\uC870" },
418
+ { value: 1e8, label: "\uC5B5" },
419
+ { value: 1e4, label: "\uB9CC" },
420
+ { value: 1, label: "" }
421
+ ];
422
+ let rest = n;
423
+ const parts = [];
424
+ for (const u of units) {
425
+ const q = Math.floor(rest / u.value);
426
+ rest %= u.value;
427
+ if (q > 0) parts.push(`${q.toLocaleString("ko-KR")}${u.label}`);
428
+ }
429
+ return `${amount < 0 ? "-" : ""}${parts.join(" ")}${unit}`;
430
+ }
431
+
432
+ // src/utils/date.ts
433
+ var pad = (n) => String(n).padStart(2, "0");
434
+ function toISODate(date) {
435
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
436
+ }
437
+ function parseISODate(value4) {
438
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value4 ?? "");
439
+ if (!m) return null;
440
+ const [y, mo, d] = [Number(m[1]), Number(m[2]), Number(m[3])];
441
+ const date = new Date(y, mo - 1, d);
442
+ return date.getFullYear() === y && date.getMonth() === mo - 1 && date.getDate() === d ? date : null;
443
+ }
444
+ function addDays(date, days) {
445
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);
446
+ }
447
+ function addMonths(date, months) {
448
+ const target = new Date(date.getFullYear(), date.getMonth() + months, 1);
449
+ const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
450
+ return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));
451
+ }
452
+ function isSameDay(a, b) {
453
+ return !!a && !!b && toISODate(a) === toISODate(b);
454
+ }
455
+ function isSameMonth(a, b) {
456
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
457
+ }
458
+ function compareDays(a, b) {
459
+ const x = toISODate(a);
460
+ const y = toISODate(b);
461
+ return x < y ? -1 : x > y ? 1 : 0;
462
+ }
463
+ function getCalendarWeeks(year, month) {
464
+ const first = new Date(year, month, 1);
465
+ const start = addDays(first, -first.getDay());
466
+ return Array.from({ length: 6 }, (_, week) => Array.from({ length: 7 }, (_2, day2) => addDays(start, week * 7 + day2)));
467
+ }
468
+ var KOREAN_WEEKDAYS = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
469
+ function formatKoreanDate(date, withWeekday = true) {
470
+ const base = `${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${date.getDate()}\uC77C`;
471
+ return withWeekday ? `${base} ${KOREAN_WEEKDAYS[date.getDay()]}\uC694\uC77C` : base;
472
+ }
473
+
474
+ // src/components/AddressInput/addressProviders.ts
475
+ var KAKAO_POSTCODE_SRC = "https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
476
+ var loading = null;
477
+ function loadKakaoPostcode() {
478
+ const w = window;
479
+ const existing = w.kakao?.Postcode ?? w.daum?.Postcode;
480
+ if (existing) return Promise.resolve(existing);
481
+ loading ?? (loading = new Promise((resolve, reject) => {
482
+ const script = document.createElement("script");
483
+ script.src = KAKAO_POSTCODE_SRC;
484
+ script.async = true;
485
+ script.onload = () => {
486
+ const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;
487
+ if (ctor) resolve(ctor);
488
+ else reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC5B4\uC694"));
489
+ };
490
+ script.onerror = () => {
491
+ loading = null;
492
+ reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694"));
493
+ };
494
+ document.head.appendChild(script);
495
+ }));
496
+ return loading;
497
+ }
498
+ function composeExtraAddress(data) {
499
+ if (data.userSelectedType !== "R") return "";
500
+ const parts = [];
501
+ if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);
502
+ if (data.buildingName && data.apartment === "Y") parts.push(data.buildingName);
503
+ return parts.length ? ` (${parts.join(", ")})` : "";
504
+ }
505
+ var kakaoPostcodeProvider = async (container2, onSelect) => {
506
+ const Postcode = await loadKakaoPostcode();
507
+ new Postcode({
508
+ width: "100%",
509
+ height: "100%",
510
+ oncomplete: (data) => {
511
+ const address = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || "";
512
+ onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });
513
+ }
514
+ }).embed(container2);
515
+ };
516
+
517
+ // src/components/AgreementGroup/agreements.ts
518
+ function hasAllRequiredAgreements(items2, value4) {
519
+ return items2.every((item7) => !item7.required || value4.includes(item7.value));
520
+ }
521
+
522
+ // src/theme/ThemeProvider.tsx
523
+ var import_react = require("react");
524
+
525
+ // src/utils/cx.ts
526
+ function cx(...classNames) {
527
+ return classNames.filter(Boolean).join(" ");
528
+ }
529
+
530
+ // src/theme/ThemeProvider.css.ts
531
+ var portal = "sfyhlv0";
532
+ var root = "sfyhlv1 sfyhlv0";
533
+
534
+ // src/theme/ThemeProvider.tsx
535
+ var import_jsx_runtime = require("react/jsx-runtime");
536
+ var ThemeContext = /* @__PURE__ */ (0, import_react.createContext)({ theme: "light" });
537
+ var ThemeProvider = /* @__PURE__ */ (0, import_react.forwardRef)(function ThemeProvider2({ theme: themeProp, overrides, className, style, children, ...rest }, ref) {
538
+ const parent = (0, import_react.useContext)(ThemeContext);
539
+ const theme = themeProp ?? parent.theme;
540
+ const merged = (0, import_react.useMemo)(() => mergeThemes(parent.overrides, overrides), [parent.overrides, overrides]);
541
+ const value4 = (0, import_react.useMemo)(
542
+ () => ({ theme, overrides: merged, style: themeToStyle(merged, theme) }),
543
+ [theme, merged]
544
+ );
545
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
546
+ "div",
547
+ {
548
+ ref,
549
+ "data-theme": theme,
550
+ className: cx(themeClass[theme], root, className),
551
+ style: value4.style ? { ...value4.style, ...style } : style,
552
+ ...rest,
553
+ children
554
+ }
555
+ ) });
556
+ });
557
+ function useTheme() {
558
+ return (0, import_react.useContext)(ThemeContext).theme;
559
+ }
560
+ function usePortalProps() {
561
+ const { theme, style } = (0, import_react.useContext)(ThemeContext);
562
+ return { className: cx(themeClass[theme], portal), style };
563
+ }
564
+
565
+ // src/i18n/LocaleProvider.tsx
566
+ var import_react2 = require("react");
567
+ var import_jsx_runtime2 = require("react/jsx-runtime");
568
+ var MessagesContext = /* @__PURE__ */ (0, import_react2.createContext)({});
569
+ function LocaleProvider({ messages, children }) {
570
+ const parent = (0, import_react2.useContext)(MessagesContext);
571
+ const value4 = (0, import_react2.useMemo)(() => ({ ...parent, ...messages }), [parent, messages]);
572
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MessagesContext.Provider, { value: value4, children });
573
+ }
574
+ function useMessages() {
575
+ return (0, import_react2.useContext)(MessagesContext);
576
+ }
577
+
428
578
  // src/components/Accordion/Accordion.tsx
429
579
  var RadixAccordion = __toESM(require("@radix-ui/react-accordion"), 1);
430
580
  var import_icons = require("@bestow-ui/icons");
@@ -475,23 +625,10 @@ var visuallyHidden = "_1kdtbw10";
475
625
  var import_createRuntimeFn = require("@vanilla-extract/recipes/createRuntimeFn");
476
626
  var spinner = /* @__PURE__ */ (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "_4b5tg40", variantClassNames: { color: { inherit: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "inherit", size: "md" }, compoundVariants: [] });
477
627
 
478
- // src/utils/warnOnce.ts
479
- var warned = /* @__PURE__ */ new Set();
480
- function warnOnce(message) {
481
- if (typeof process !== "undefined" && process.env.NODE_ENV === "production") return;
482
- if (warned.has(message)) return;
483
- warned.add(message);
484
- console.warn(`[BestOW UI] ${message}`);
485
- }
486
-
487
628
  // src/components/Spinner/Spinner.tsx
488
629
  var import_jsx_runtime4 = require("react/jsx-runtime");
489
630
  var Spinner = /* @__PURE__ */ (0, import_react4.forwardRef)(function Spinner2({ size, color, label: labelProp, className, ...rest }, ref) {
490
631
  const m = useMessages();
491
- if (color === "current") {
492
- warnOnce('Spinner \uC758 color="current" \uB294 deprecated \uC608\uC694. color="inherit" \uB97C \uC4F0\uC138\uC694 (1.0 \uC5D0\uC11C \uC81C\uAC70).');
493
- color = "inherit";
494
- }
495
632
  const label6 = labelProp ?? m.loading ?? "\uB85C\uB529 \uC911";
496
633
  const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
497
634
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
@@ -702,49 +839,6 @@ function Modal({
702
839
  }
703
840
  var ModalClose = Dialog.Close;
704
841
 
705
- // src/components/AddressInput/addressProviders.ts
706
- var KAKAO_POSTCODE_SRC = "https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
707
- var loading = null;
708
- function loadKakaoPostcode() {
709
- const w = window;
710
- const existing = w.kakao?.Postcode ?? w.daum?.Postcode;
711
- if (existing) return Promise.resolve(existing);
712
- loading ?? (loading = new Promise((resolve, reject) => {
713
- const script = document.createElement("script");
714
- script.src = KAKAO_POSTCODE_SRC;
715
- script.async = true;
716
- script.onload = () => {
717
- const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;
718
- if (ctor) resolve(ctor);
719
- else reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC5B4\uC694"));
720
- };
721
- script.onerror = () => {
722
- loading = null;
723
- reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694"));
724
- };
725
- document.head.appendChild(script);
726
- }));
727
- return loading;
728
- }
729
- function composeExtraAddress(data) {
730
- if (data.userSelectedType !== "R") return "";
731
- const parts = [];
732
- if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);
733
- if (data.buildingName && data.apartment === "Y") parts.push(data.buildingName);
734
- return parts.length ? ` (${parts.join(", ")})` : "";
735
- }
736
- var kakaoPostcodeProvider = async (container2, onSelect) => {
737
- const Postcode = await loadKakaoPostcode();
738
- new Postcode({
739
- width: "100%",
740
- height: "100%",
741
- oncomplete: (data) => {
742
- const address = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || "";
743
- onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });
744
- }
745
- }).embed(container2);
746
- };
747
-
748
842
  // src/components/AddressInput/AddressInput.css.ts
749
843
  var fieldset = "_16fi7uy0";
750
844
  var legend = "_16fi7uy1";
@@ -1001,9 +1095,6 @@ var toggle = "j3uxdc8";
1001
1095
 
1002
1096
  // src/components/AgreementGroup/AgreementGroup.tsx
1003
1097
  var import_jsx_runtime11 = require("react/jsx-runtime");
1004
- function hasAllRequiredAgreements(items2, value4) {
1005
- return items2.every((item7) => !item7.required || value4.includes(item7.value));
1006
- }
1007
1098
  var AgreementGroup = /* @__PURE__ */ (0, import_react11.forwardRef)(
1008
1099
  function AgreementGroup2(props, ref) {
1009
1100
  const {
@@ -1165,67 +1256,16 @@ var Alert = /* @__PURE__ */ (0, import_react12.forwardRef)(function Alert2({
1165
1256
  });
1166
1257
 
1167
1258
  // src/components/AmountInput/AmountInput.tsx
1259
+ var import_react15 = require("react");
1260
+
1261
+ // src/utils/useFormattedInput.ts
1168
1262
  var import_react14 = require("react");
1169
1263
 
1170
- // src/utils/koreanFormat.ts
1171
- var onlyDigits = (input5) => input5.replace(/\D/g, "");
1172
- function phoneNumberMaxDigits(digits) {
1173
- if (digits.startsWith("02")) return 10;
1174
- if (/^1[568]/.test(digits)) return 8;
1175
- return 11;
1176
- }
1177
- function formatPhoneNumber(input5) {
1178
- const d = onlyDigits(input5).slice(0, phoneNumberMaxDigits(onlyDigits(input5)));
1179
- if (d.startsWith("02")) {
1180
- if (d.length <= 2) return d;
1181
- if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;
1182
- if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;
1183
- return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;
1184
- }
1185
- if (/^1[568]/.test(d)) {
1186
- return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;
1187
- }
1188
- if (d.length <= 3) return d;
1189
- if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;
1190
- if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;
1191
- return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;
1192
- }
1193
- function formatBusinessNumber(input5) {
1194
- const d = onlyDigits(input5).slice(0, 10);
1195
- if (d.length <= 3) return d;
1196
- if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;
1197
- return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;
1198
- }
1199
- function isValidBusinessNumber(input5) {
1200
- const d = onlyDigits(input5);
1201
- if (d.length !== 10) return false;
1202
- const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];
1203
- const digits = [...d].map(Number);
1204
- let sum = weights.reduce((acc, w, i) => acc + w * digits[i], 0);
1205
- sum += Math.floor(digits[8] * 5 / 10);
1206
- return (10 - sum % 10) % 10 === digits[9];
1207
- }
1208
- function formatKoreanAmount(amount, unit = "\uC6D0") {
1209
- const n = Math.floor(Math.abs(amount));
1210
- if (n === 0) return `0${unit}`;
1211
- const units = [
1212
- { value: 1e12, label: "\uC870" },
1213
- { value: 1e8, label: "\uC5B5" },
1214
- { value: 1e4, label: "\uB9CC" },
1215
- { value: 1, label: "" }
1216
- ];
1217
- let rest = n;
1218
- const parts = [];
1219
- for (const u of units) {
1220
- const q = Math.floor(rest / u.value);
1221
- rest %= u.value;
1222
- if (q > 0) parts.push(`${q.toLocaleString("ko-KR")}${u.label}`);
1223
- }
1224
- return `${amount < 0 ? "-" : ""}${parts.join(" ")}${unit}`;
1225
- }
1264
+ // src/utils/useIsomorphicLayoutEffect.ts
1265
+ var import_react13 = require("react");
1266
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react13.useLayoutEffect : import_react13.useEffect;
1226
1267
 
1227
1268
  // src/utils/useFormattedInput.ts
1228
- var import_react13 = require("react");
1229
1269
  function caretAfter(display, count2, isMeaningful) {
1230
1270
  if (count2 <= 0) return 0;
1231
1271
  let seen = 0;
@@ -1245,11 +1285,11 @@ function useFormattedInput({
1245
1285
  isMeaningful,
1246
1286
  inputRef
1247
1287
  }) {
1248
- const [innerValue, setInnerValue] = (0, import_react13.useState)(() => sanitize4(defaultValue ?? ""));
1288
+ const [innerValue, setInnerValue] = (0, import_react14.useState)(() => sanitize4(defaultValue ?? ""));
1249
1289
  const raw = isControlled ? sanitize4(value4 ?? "") : innerValue;
1250
1290
  const display = format2(raw);
1251
- const pendingCaret = (0, import_react13.useRef)(null);
1252
- (0, import_react13.useLayoutEffect)(() => {
1291
+ const pendingCaret = (0, import_react14.useRef)(null);
1292
+ useIsomorphicLayoutEffect(() => {
1253
1293
  const input5 = inputRef.current;
1254
1294
  if (pendingCaret.current === null || !input5 || document.activeElement !== input5) return;
1255
1295
  const position = caretAfter(input5.value, pendingCaret.current, isMeaningful);
@@ -1295,7 +1335,7 @@ var input3 = "_70qkav0";
1295
1335
  var import_jsx_runtime13 = require("react/jsx-runtime");
1296
1336
  var MAX_DIGITS = 15;
1297
1337
  var isDigit = (char) => /\d/.test(char);
1298
- var AmountInput = /* @__PURE__ */ (0, import_react14.forwardRef)(
1338
+ var AmountInput = /* @__PURE__ */ (0, import_react15.forwardRef)(
1299
1339
  function AmountInput2(props, ref) {
1300
1340
  const {
1301
1341
  value: value4,
@@ -1311,7 +1351,7 @@ var AmountInput = /* @__PURE__ */ (0, import_react14.forwardRef)(
1311
1351
  className,
1312
1352
  ...rest
1313
1353
  } = props;
1314
- const inputRef = (0, import_react14.useRef)(null);
1354
+ const inputRef = (0, import_react15.useRef)(null);
1315
1355
  const m = useMessages();
1316
1356
  const unit = unitProp ?? m.currencyUnit ?? "\uC6D0";
1317
1357
  const label6 = labelProp ?? m.amount ?? "\uAE08\uC561";
@@ -1361,7 +1401,7 @@ var AmountInput = /* @__PURE__ */ (0, import_react14.forwardRef)(
1361
1401
  // src/components/Avatar/Avatar.tsx
1362
1402
  var RadixAvatar = __toESM(require("@radix-ui/react-avatar"), 1);
1363
1403
  var import_icons6 = require("@bestow-ui/icons");
1364
- var import_react15 = require("react");
1404
+ var import_react16 = require("react");
1365
1405
 
1366
1406
  // src/components/Avatar/Avatar.css.ts
1367
1407
  var import_createRuntimeFn7 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1376,7 +1416,7 @@ function getInitials(name) {
1376
1416
  const first = (word) => Array.from(word)[0] ?? "";
1377
1417
  return (first(a) + first(b)).toUpperCase();
1378
1418
  }
1379
- var Avatar = /* @__PURE__ */ (0, import_react15.forwardRef)(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
1419
+ var Avatar = /* @__PURE__ */ (0, import_react16.forwardRef)(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
1380
1420
  const label6 = alt ?? name;
1381
1421
  const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
1382
1422
  const initials = name ? getInitials(name) : "";
@@ -1387,7 +1427,7 @@ var Avatar = /* @__PURE__ */ (0, import_react15.forwardRef)(function Avatar2({ s
1387
1427
  });
1388
1428
 
1389
1429
  // src/components/Badge/Badge.tsx
1390
- var import_react16 = require("react");
1430
+ var import_react17 = require("react");
1391
1431
 
1392
1432
  // src/components/Badge/Badge.css.ts
1393
1433
  var import_createRuntimeFn8 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1396,7 +1436,7 @@ var icon3 = "_1295cfng";
1396
1436
 
1397
1437
  // src/components/Badge/Badge.tsx
1398
1438
  var import_jsx_runtime15 = require("react/jsx-runtime");
1399
- var Badge = /* @__PURE__ */ (0, import_react16.forwardRef)(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
1439
+ var Badge = /* @__PURE__ */ (0, import_react17.forwardRef)(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
1400
1440
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
1401
1441
  startIcon && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: icon3, children: startIcon }),
1402
1442
  children
@@ -1404,12 +1444,12 @@ var Badge = /* @__PURE__ */ (0, import_react16.forwardRef)(function Badge2({ var
1404
1444
  });
1405
1445
 
1406
1446
  // src/components/Breadcrumb/Breadcrumb.tsx
1407
- var import_react18 = require("react");
1447
+ var import_react19 = require("react");
1408
1448
  var import_icons8 = require("@bestow-ui/icons");
1409
1449
 
1410
1450
  // src/components/Link/Link.tsx
1411
1451
  var import_react_slot = require("@radix-ui/react-slot");
1412
- var import_react17 = require("react");
1452
+ var import_react18 = require("react");
1413
1453
  var import_icons7 = require("@bestow-ui/icons");
1414
1454
 
1415
1455
  // src/components/Link/Link.css.ts
@@ -1422,7 +1462,7 @@ var import_jsx_runtime16 = (
1422
1462
  // Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
1423
1463
  require("react/jsx-runtime")
1424
1464
  );
1425
- var Link = /* @__PURE__ */ (0, import_react17.forwardRef)(function Link2({
1465
+ var Link = /* @__PURE__ */ (0, import_react18.forwardRef)(function Link2({
1426
1466
  as: Component = "a",
1427
1467
  asChild,
1428
1468
  color,
@@ -1470,7 +1510,7 @@ var separator = "_18t8ztt4";
1470
1510
 
1471
1511
  // src/components/Breadcrumb/Breadcrumb.tsx
1472
1512
  var import_jsx_runtime17 = require("react/jsx-runtime");
1473
- var Breadcrumb = /* @__PURE__ */ (0, import_react18.forwardRef)(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabelProp, className, ...rest }, ref) {
1513
+ var Breadcrumb = /* @__PURE__ */ (0, import_react19.forwardRef)(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabelProp, className, ...rest }, ref) {
1474
1514
  const m = useMessages();
1475
1515
  const ariaLabel = ariaLabelProp ?? m.breadcrumb ?? "\uC774\uB3D9 \uACBD\uB85C";
1476
1516
  const sep = separator3 ?? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons8.ChevronRightIcon, { size: 14 });
@@ -1484,11 +1524,11 @@ var Breadcrumb = /* @__PURE__ */ (0, import_react18.forwardRef)(function Breadcr
1484
1524
  });
1485
1525
 
1486
1526
  // src/components/BusinessNumberInput/BusinessNumberInput.tsx
1487
- var import_react19 = require("react");
1527
+ var import_react20 = require("react");
1488
1528
  var import_jsx_runtime18 = require("react/jsx-runtime");
1489
1529
  var sanitize = (input5) => input5.replace(/\D/g, "").slice(0, 10);
1490
1530
  var isDigit2 = (char) => /\d/.test(char);
1491
- var BusinessNumberInput = /* @__PURE__ */ (0, import_react19.forwardRef)(
1531
+ var BusinessNumberInput = /* @__PURE__ */ (0, import_react20.forwardRef)(
1492
1532
  function BusinessNumberInput2(props, ref) {
1493
1533
  const {
1494
1534
  value: value4,
@@ -1504,12 +1544,12 @@ var BusinessNumberInput = /* @__PURE__ */ (0, import_react19.forwardRef)(
1504
1544
  onKeyDown,
1505
1545
  ...rest
1506
1546
  } = props;
1507
- const inputRef = (0, import_react19.useRef)(null);
1547
+ const inputRef = (0, import_react20.useRef)(null);
1508
1548
  const m = useMessages();
1509
1549
  const invalidText = invalidTextProp ?? m.businessNumberInvalid ?? "\uC62C\uBC14\uB978 \uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638\uAC00 \uC544\uB2C8\uC5D0\uC694. \uBC88\uD638\uB97C \uB2E4\uC2DC \uD655\uC778\uD574 \uC8FC\uC138\uC694.";
1510
1550
  const label6 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
1511
1551
  const incompleteText = m.businessNumberIncomplete ?? "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
1512
- const [touched, setTouched] = (0, import_react19.useState)(false);
1552
+ const [touched, setTouched] = (0, import_react20.useState)(false);
1513
1553
  const field3 = useFormattedInput({
1514
1554
  isControlled: "value" in props,
1515
1555
  value: value4,
@@ -1549,53 +1589,23 @@ var BusinessNumberInput = /* @__PURE__ */ (0, import_react19.forwardRef)(
1549
1589
  );
1550
1590
 
1551
1591
  // src/components/Calendar/Calendar.tsx
1552
- var import_react21 = require("react");
1592
+ var import_react23 = require("react");
1553
1593
  var import_icons9 = require("@bestow-ui/icons");
1554
1594
 
1555
- // src/utils/date.ts
1556
- var pad = (n) => String(n).padStart(2, "0");
1557
- function toISODate(date) {
1558
- return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
1559
- }
1560
- function parseISODate(value4) {
1561
- const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value4 ?? "");
1562
- if (!m) return null;
1563
- const [y, mo, d] = [Number(m[1]), Number(m[2]), Number(m[3])];
1564
- const date = new Date(y, mo - 1, d);
1565
- return date.getFullYear() === y && date.getMonth() === mo - 1 && date.getDate() === d ? date : null;
1566
- }
1567
- function addDays(date, days) {
1568
- return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);
1569
- }
1570
- function addMonths(date, months) {
1571
- const target = new Date(date.getFullYear(), date.getMonth() + months, 1);
1572
- const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
1573
- return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));
1574
- }
1575
- function isSameDay(a, b) {
1576
- return !!a && !!b && toISODate(a) === toISODate(b);
1577
- }
1578
- function isSameMonth(a, b) {
1579
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
1580
- }
1581
- function compareDays(a, b) {
1582
- const x = toISODate(a);
1583
- const y = toISODate(b);
1584
- return x < y ? -1 : x > y ? 1 : 0;
1585
- }
1586
- function getCalendarWeeks(year, month) {
1587
- const first = new Date(year, month, 1);
1588
- const start = addDays(first, -first.getDay());
1589
- return Array.from({ length: 6 }, (_, week) => Array.from({ length: 7 }, (_2, day2) => addDays(start, week * 7 + day2)));
1590
- }
1591
- var KOREAN_WEEKDAYS = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
1592
- function formatKoreanDate(date, withWeekday = true) {
1593
- const base = `${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${date.getDate()}\uC77C`;
1594
- return withWeekday ? `${base} ${KOREAN_WEEKDAYS[date.getDay()]}\uC694\uC77C` : base;
1595
+ // src/utils/useIsClient.ts
1596
+ var import_react21 = require("react");
1597
+ var subscribeNothing = () => () => {
1598
+ };
1599
+ function useIsClient() {
1600
+ return (0, import_react21.useSyncExternalStore)(
1601
+ subscribeNothing,
1602
+ () => true,
1603
+ () => false
1604
+ );
1595
1605
  }
1596
1606
 
1597
1607
  // src/components/IconButton/IconButton.tsx
1598
- var import_react20 = require("react");
1608
+ var import_react22 = require("react");
1599
1609
 
1600
1610
  // src/components/IconButton/IconButton.css.ts
1601
1611
  var import_createRuntimeFn10 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1603,7 +1613,7 @@ var iconButton = /* @__PURE__ */ (0, import_createRuntimeFn10.createRuntimeFn)({
1603
1613
 
1604
1614
  // src/components/IconButton/IconButton.tsx
1605
1615
  var import_jsx_runtime19 = require("react/jsx-runtime");
1606
- var IconButton = /* @__PURE__ */ (0, import_react20.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading: loading2, className, children, ...rest }, ref) {
1616
+ var IconButton = /* @__PURE__ */ (0, import_react22.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading: loading2, className, children, ...rest }, ref) {
1607
1617
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1608
1618
  Button,
1609
1619
  {
@@ -1630,7 +1640,7 @@ var weekday = "_1qyq67b4";
1630
1640
 
1631
1641
  // src/components/Calendar/Calendar.tsx
1632
1642
  var import_jsx_runtime20 = require("react/jsx-runtime");
1633
- var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2(props, ref) {
1643
+ var Calendar = /* @__PURE__ */ (0, import_react23.forwardRef)(function Calendar2(props, ref) {
1634
1644
  const {
1635
1645
  value: value4,
1636
1646
  defaultValue,
@@ -1650,12 +1660,13 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1650
1660
  const nextMonthLabel = nextMonthLabelProp ?? m.nextMonth ?? "\uB2E4\uC74C \uB2EC";
1651
1661
  const weekdaysShort = m.weekdaysShort ?? KOREAN_WEEKDAYS;
1652
1662
  const weekdaysLong = m.weekdaysLong ?? KOREAN_WEEKDAYS.map((name) => `${name}\uC694\uC77C`);
1653
- const headingId = (0, import_react21.useId)();
1654
- const gridRef = (0, import_react21.useRef)(null);
1663
+ const headingId = (0, import_react23.useId)();
1664
+ const gridRef = (0, import_react23.useRef)(null);
1655
1665
  const isControlled = "value" in props;
1656
- const [innerValue, setInnerValue] = (0, import_react21.useState)(defaultValue ?? "");
1666
+ const [innerValue, setInnerValue] = (0, import_react23.useState)(defaultValue ?? "");
1657
1667
  const selected = parseISODate(isControlled ? value4 : innerValue);
1658
- const today = parseISODate(todayProp) ?? /* @__PURE__ */ new Date();
1668
+ const isClient = useIsClient();
1669
+ const today = parseISODate(todayProp) ?? (isClient ? /* @__PURE__ */ new Date() : null);
1659
1670
  const minDate = parseISODate(min);
1660
1671
  const maxDate = parseISODate(max);
1661
1672
  const clamp = (date) => {
@@ -1664,15 +1675,17 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1664
1675
  return date;
1665
1676
  };
1666
1677
  const isDisabled = (date) => minDate !== null && compareDays(date, minDate) < 0 || maxDate !== null && compareDays(date, maxDate) > 0 || !!isDateDisabled?.(date);
1667
- const [focused, setFocused] = (0, import_react21.useState)(() => clamp(selected ?? today));
1668
- const moveFocus = (0, import_react21.useRef)(initialFocus ?? false);
1678
+ const [focusedState, setFocused] = (0, import_react23.useState)(null);
1679
+ const base = selected ?? today;
1680
+ const focused = focusedState ?? (base ? clamp(base) : null);
1681
+ const moveFocus = (0, import_react23.useRef)(initialFocus ?? false);
1669
1682
  const selectedIso = selected ? toISODate(selected) : "";
1670
- (0, import_react21.useEffect)(() => {
1683
+ (0, import_react23.useEffect)(() => {
1671
1684
  const date = parseISODate(selectedIso);
1672
1685
  if (date) setFocused((prev) => isSameDay(prev, date) ? prev : date);
1673
1686
  }, [selectedIso]);
1674
- (0, import_react21.useEffect)(() => {
1675
- if (!moveFocus.current) return;
1687
+ (0, import_react23.useEffect)(() => {
1688
+ if (!moveFocus.current || !focused) return;
1676
1689
  moveFocus.current = false;
1677
1690
  gridRef.current?.querySelector(`[data-date="${toISODate(focused)}"]`)?.focus();
1678
1691
  }, [focused]);
@@ -1688,6 +1701,7 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1688
1701
  setFocused(date);
1689
1702
  };
1690
1703
  const handleKeyDown = (event) => {
1704
+ if (!focused) return;
1691
1705
  const moves = {
1692
1706
  ArrowLeft: () => addDays(focused, -1),
1693
1707
  ArrowRight: () => addDays(focused, 1),
@@ -1705,13 +1719,11 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1705
1719
  }
1706
1720
  };
1707
1721
  const visible = focused;
1708
- const weeks = getCalendarWeeks(visible.getFullYear(), visible.getMonth()).filter(
1722
+ const weeks = visible ? getCalendarWeeks(visible.getFullYear(), visible.getMonth()).filter(
1709
1723
  (week) => week.some((date) => isSameMonth(date, visible))
1710
- );
1711
- const prevMonth = addMonths(visible, -1);
1712
- const nextMonth = addMonths(visible, 1);
1713
- const canPrev = !minDate || compareDays(new Date(visible.getFullYear(), visible.getMonth(), 0), minDate) >= 0;
1714
- const canNext = !maxDate || compareDays(new Date(visible.getFullYear(), visible.getMonth() + 1, 1), maxDate) <= 0;
1724
+ ) : [];
1725
+ const canPrev = !!visible && (!minDate || compareDays(new Date(visible.getFullYear(), visible.getMonth(), 0), minDate) >= 0);
1726
+ const canNext = !!visible && (!maxDate || compareDays(new Date(visible.getFullYear(), visible.getMonth() + 1, 1), maxDate) <= 0);
1715
1727
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { ref, className: cx(root6, className), children: [
1716
1728
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: header3, children: [
1717
1729
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -1720,18 +1732,18 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1720
1732
  "aria-label": prevMonthLabel,
1721
1733
  size: "sm",
1722
1734
  disabled: !canPrev,
1723
- onClick: () => setFocused(clamp(prevMonth)),
1735
+ onClick: () => visible && setFocused(clamp(addMonths(visible, -1))),
1724
1736
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons9.ChevronLeftIcon, {})
1725
1737
  }
1726
1738
  ),
1727
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { id: headingId, className: heading, "aria-live": "polite", children: m.monthTitle?.(visible.getFullYear(), visible.getMonth() + 1) ?? `${visible.getFullYear()}\uB144 ${visible.getMonth() + 1}\uC6D4` }),
1739
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { id: headingId, className: heading, "aria-live": "polite", children: visible && (m.monthTitle?.(visible.getFullYear(), visible.getMonth() + 1) ?? `${visible.getFullYear()}\uB144 ${visible.getMonth() + 1}\uC6D4`) }),
1728
1740
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1729
1741
  IconButton,
1730
1742
  {
1731
1743
  "aria-label": nextMonthLabel,
1732
1744
  size: "sm",
1733
1745
  disabled: !canNext,
1734
- onClick: () => setFocused(clamp(nextMonth)),
1746
+ onClick: () => visible && setFocused(clamp(addMonths(visible, 1))),
1735
1747
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons9.ChevronRightIcon, {})
1736
1748
  }
1737
1749
  )
@@ -1740,7 +1752,8 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1740
1752
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tr", { children: weekdaysShort.map((name, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("th", { scope: "col", abbr: weekdaysLong[index], className: weekday, "data-weekday": index, children: name }, index)) }) }),
1741
1753
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tbody", { children: weeks.map((week) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tr", { children: week.map((date) => {
1742
1754
  const iso = toISODate(date);
1743
- if (!isSameMonth(date, visible)) return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("td", { role: "gridcell", className: cell }, iso);
1755
+ if (!visible || !isSameMonth(date, visible))
1756
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("td", { role: "gridcell", className: cell }, iso);
1744
1757
  const isSelected = isSameDay(date, selected);
1745
1758
  const isToday = isSameDay(date, today);
1746
1759
  const holiday = !!isHoliday?.(date);
@@ -1774,7 +1787,7 @@ var Calendar = /* @__PURE__ */ (0, import_react21.forwardRef)(function Calendar2
1774
1787
  });
1775
1788
 
1776
1789
  // src/components/Card/Card.tsx
1777
- var import_react22 = require("react");
1790
+ var import_react24 = require("react");
1778
1791
 
1779
1792
  // src/components/Card/Card.css.ts
1780
1793
  var import_createRuntimeFn11 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1785,22 +1798,22 @@ var header4 = "dnuf1u8";
1785
1798
 
1786
1799
  // src/components/Card/Card.tsx
1787
1800
  var import_jsx_runtime21 = require("react/jsx-runtime");
1788
- var Card = /* @__PURE__ */ (0, import_react22.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
1801
+ var Card = /* @__PURE__ */ (0, import_react24.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
1789
1802
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
1790
1803
  });
1791
- var CardHeader = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
1804
+ var CardHeader = /* @__PURE__ */ (0, import_react24.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
1792
1805
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(header4, className), ...rest });
1793
1806
  });
1794
- var CardBody = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardBody2({ className, ...rest }, ref) {
1807
+ var CardBody = /* @__PURE__ */ (0, import_react24.forwardRef)(function CardBody2({ className, ...rest }, ref) {
1795
1808
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(body2, className), ...rest });
1796
1809
  });
1797
- var CardFooter = /* @__PURE__ */ (0, import_react22.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
1810
+ var CardFooter = /* @__PURE__ */ (0, import_react24.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
1798
1811
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cx(footer2, className), ...rest });
1799
1812
  });
1800
1813
 
1801
1814
  // src/components/Combobox/Combobox.tsx
1802
1815
  var Popover = __toESM(require("@radix-ui/react-popover"), 1);
1803
- var import_react23 = require("react");
1816
+ var import_react25 = require("react");
1804
1817
  var import_icons10 = require("@bestow-ui/icons");
1805
1818
 
1806
1819
  // src/components/Select/Select.css.ts
@@ -1820,7 +1833,7 @@ var toggle2 = "c2pbq70";
1820
1833
  // src/components/Combobox/Combobox.tsx
1821
1834
  var import_jsx_runtime22 = require("react/jsx-runtime");
1822
1835
  var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
1823
- var Combobox = /* @__PURE__ */ (0, import_react23.forwardRef)(function Combobox2(props, ref) {
1836
+ var Combobox = /* @__PURE__ */ (0, import_react25.forwardRef)(function Combobox2(props, ref) {
1824
1837
  const {
1825
1838
  options,
1826
1839
  value: value4,
@@ -1845,23 +1858,23 @@ var Combobox = /* @__PURE__ */ (0, import_react23.forwardRef)(function Combobox2
1845
1858
  const m = useMessages();
1846
1859
  const emptyMessage = emptyMessageProp ?? m.noResults ?? "\uACB0\uACFC\uAC00 \uC5C6\uC5B4\uC694";
1847
1860
  const toggleLabel = toggleLabelProp ?? m.openList ?? "\uBAA9\uB85D \uC5F4\uAE30";
1848
- const generatedId = (0, import_react23.useId)();
1861
+ const generatedId = (0, import_react25.useId)();
1849
1862
  const inputId = id ?? generatedId;
1850
1863
  const labelId = `${inputId}-label`;
1851
1864
  const listId = `${inputId}-listbox`;
1852
1865
  const helperId = helperText3 ? `${inputId}-helper` : void 0;
1853
1866
  const optionId = (index) => `${inputId}-option-${index}`;
1854
1867
  const portal2 = usePortalProps();
1855
- const inputRef = (0, import_react23.useRef)(null);
1856
- const anchorRef = (0, import_react23.useRef)(null);
1868
+ const inputRef = (0, import_react25.useRef)(null);
1869
+ const anchorRef = (0, import_react25.useRef)(null);
1857
1870
  const isControlled = "value" in props;
1858
- const [innerValue, setInnerValue] = (0, import_react23.useState)(defaultValue);
1871
+ const [innerValue, setInnerValue] = (0, import_react25.useState)(defaultValue);
1859
1872
  const selectedValue = isControlled ? value4 : innerValue;
1860
1873
  const selectedOption = options.find((o) => o.value === selectedValue);
1861
- const [open, setOpen] = (0, import_react23.useState)(false);
1862
- const [query, setQuery] = (0, import_react23.useState)(null);
1863
- const [activeIndex, setActiveIndex] = (0, import_react23.useState)(-1);
1864
- const filtered = (0, import_react23.useMemo)(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
1874
+ const [open, setOpen] = (0, import_react25.useState)(false);
1875
+ const [query, setQuery] = (0, import_react25.useState)(null);
1876
+ const [activeIndex, setActiveIndex] = (0, import_react25.useState)(-1);
1877
+ const filtered = (0, import_react25.useMemo)(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
1865
1878
  const inputText = query ?? selectedOption?.label ?? "";
1866
1879
  const firstEnabled = (list5, from = 0, step = 1) => {
1867
1880
  for (let i = from; i >= 0 && i < list5.length; i += step) if (!list5[i].disabled) return i;
@@ -1927,7 +1940,7 @@ var Combobox = /* @__PURE__ */ (0, import_react23.forwardRef)(function Combobox2
1927
1940
  break;
1928
1941
  }
1929
1942
  };
1930
- (0, import_react23.useEffect)(() => {
1943
+ (0, import_react25.useEffect)(() => {
1931
1944
  if (!open || activeIndex < 0) return;
1932
1945
  document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
1933
1946
  }, [open, activeIndex]);
@@ -2055,13 +2068,13 @@ var Combobox = /* @__PURE__ */ (0, import_react23.forwardRef)(function Combobox2
2055
2068
  });
2056
2069
 
2057
2070
  // src/components/DatePicker/DatePicker.tsx
2058
- var import_react25 = require("react");
2071
+ var import_react27 = require("react");
2059
2072
  var import_icons12 = require("@bestow-ui/icons");
2060
2073
 
2061
2074
  // src/components/Popover/Popover.tsx
2062
2075
  var RadixPopover = __toESM(require("@radix-ui/react-popover"), 1);
2063
2076
  var import_icons11 = require("@bestow-ui/icons");
2064
- var import_react24 = require("react");
2077
+ var import_react26 = require("react");
2065
2078
 
2066
2079
  // src/components/Popover/Popover.css.ts
2067
2080
  var arrow = "_1j99p8x4";
@@ -2091,7 +2104,7 @@ function Popover2({
2091
2104
  }) {
2092
2105
  const portal2 = usePortalProps();
2093
2106
  const m = useMessages();
2094
- const titleId = (0, import_react24.useId)();
2107
+ const titleId = (0, import_react26.useId)();
2095
2108
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
2096
2109
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Trigger, { asChild: true, children }),
2097
2110
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
@@ -2125,7 +2138,7 @@ var import_jsx_runtime24 = require("react/jsx-runtime");
2125
2138
  var sanitize2 = (input5) => input5.replace(/\D/g, "").slice(0, 8);
2126
2139
  var format = (digits) => digits.length <= 4 ? digits : digits.length <= 6 ? `${digits.slice(0, 4)}-${digits.slice(4)}` : `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6)}`;
2127
2140
  var isDigit3 = (char) => /\d/.test(char);
2128
- var DatePicker = /* @__PURE__ */ (0, import_react25.forwardRef)(
2141
+ var DatePicker = /* @__PURE__ */ (0, import_react27.forwardRef)(
2129
2142
  function DatePicker2(props, ref) {
2130
2143
  const {
2131
2144
  value: value4,
@@ -2151,17 +2164,17 @@ var DatePicker = /* @__PURE__ */ (0, import_react25.forwardRef)(
2151
2164
  id,
2152
2165
  className
2153
2166
  } = props;
2154
- const inputRef = (0, import_react25.useRef)(null);
2167
+ const inputRef = (0, import_react27.useRef)(null);
2155
2168
  const m = useMessages();
2156
2169
  const label6 = labelProp ?? m.date ?? "\uB0A0\uC9DC";
2157
2170
  const calendarLabel = calendarLabelProp ?? m.openCalendar ?? "\uB2EC\uB825 \uC5F4\uAE30";
2158
2171
  const invalidText = invalidTextProp ?? m.dateInvalid ?? "\uC62C\uBC14\uB978 \uB0A0\uC9DC\uAC00 \uC544\uB2C8\uC5D0\uC694.";
2159
2172
  const unavailableText = unavailableTextProp ?? m.dateUnavailable ?? "\uACE0\uB97C \uC218 \uC5C6\uB294 \uB0A0\uC9DC\uC608\uC694.";
2160
2173
  const incompleteText = incompleteTextProp ?? m.dateIncomplete ?? "\uB0A0\uC9DC\uB97C YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
2161
- const [open, setOpen] = (0, import_react25.useState)(false);
2162
- const [touched, setTouched] = (0, import_react25.useState)(false);
2174
+ const [open, setOpen] = (0, import_react27.useState)(false);
2175
+ const [touched, setTouched] = (0, import_react27.useState)(false);
2163
2176
  const isControlled = "value" in props;
2164
- const lastEmitted = (0, import_react25.useRef)(isControlled ? value4 ?? "" : defaultValue ?? "");
2177
+ const lastEmitted = (0, import_react27.useRef)(isControlled ? value4 ?? "" : defaultValue ?? "");
2165
2178
  const minDate = parseISODate(min);
2166
2179
  const maxDate = parseISODate(max);
2167
2180
  const toIso = (digits) => digits.length === 8 ? `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6)}` : "";
@@ -2186,7 +2199,7 @@ var DatePicker = /* @__PURE__ */ (0, import_react25.forwardRef)(
2186
2199
  });
2187
2200
  const textIso = toIso(field3.raw);
2188
2201
  const { setRaw } = field3;
2189
- (0, import_react25.useEffect)(() => {
2202
+ (0, import_react27.useEffect)(() => {
2190
2203
  if (!isControlled) return;
2191
2204
  const next = value4 ?? "";
2192
2205
  lastEmitted.current = next;
@@ -2258,7 +2271,7 @@ var DatePicker = /* @__PURE__ */ (0, import_react25.forwardRef)(
2258
2271
  );
2259
2272
 
2260
2273
  // src/components/Divider/Divider.tsx
2261
- var import_react26 = require("react");
2274
+ var import_react28 = require("react");
2262
2275
 
2263
2276
  // src/components/Divider/Divider.css.ts
2264
2277
  var import_createRuntimeFn12 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2268,7 +2281,7 @@ var line = "_1t3gq8v4";
2268
2281
 
2269
2282
  // src/components/Divider/Divider.tsx
2270
2283
  var import_jsx_runtime25 = require("react/jsx-runtime");
2271
- var Divider = /* @__PURE__ */ (0, import_react26.forwardRef)(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
2284
+ var Divider = /* @__PURE__ */ (0, import_react28.forwardRef)(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
2272
2285
  if (children && orientation === "horizontal") {
2273
2286
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ref, className: cx(labeled, className), ...rest, children: [
2274
2287
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: line, "aria-hidden": true }),
@@ -2350,7 +2363,7 @@ var DrawerClose = Dialog2.Close;
2350
2363
 
2351
2364
  // src/components/DropdownMenu/DropdownMenu.tsx
2352
2365
  var RadixMenu = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
2353
- var import_react27 = require("react");
2366
+ var import_react29 = require("react");
2354
2367
 
2355
2368
  // src/components/DropdownMenu/DropdownMenu.css.ts
2356
2369
  var content9 = "_1d7ahux0";
@@ -2366,7 +2379,7 @@ var import_jsx_runtime27 = require("react/jsx-runtime");
2366
2379
  var DropdownMenu = RadixMenu.Root;
2367
2380
  var DropdownMenuTrigger = RadixMenu.Trigger;
2368
2381
  var DropdownMenuGroup = RadixMenu.Group;
2369
- var DropdownMenuContent = /* @__PURE__ */ (0, import_react27.forwardRef)(
2382
+ var DropdownMenuContent = /* @__PURE__ */ (0, import_react29.forwardRef)(
2370
2383
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
2371
2384
  const portal2 = usePortalProps();
2372
2385
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -2384,11 +2397,8 @@ var DropdownMenuContent = /* @__PURE__ */ (0, import_react27.forwardRef)(
2384
2397
  ) });
2385
2398
  }
2386
2399
  );
2387
- var DropdownMenuItem = /* @__PURE__ */ (0, import_react27.forwardRef)(
2400
+ var DropdownMenuItem = /* @__PURE__ */ (0, import_react29.forwardRef)(
2388
2401
  function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "neutral", className, children, ...rest }, ref) {
2389
- if (color === "default") {
2390
- warnOnce('DropdownMenuItem \uC758 color="default" \uB294 deprecated \uC608\uC694. color="neutral" \uC744 \uC4F0\uC138\uC694 (1.0 \uC5D0\uC11C \uC81C\uAC70).');
2391
- }
2392
2402
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
2393
2403
  icon6 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: icon5, "aria-hidden": true, children: icon6 }),
2394
2404
  children,
@@ -2396,12 +2406,12 @@ var DropdownMenuItem = /* @__PURE__ */ (0, import_react27.forwardRef)(
2396
2406
  ] });
2397
2407
  }
2398
2408
  );
2399
- var DropdownMenuLabel = /* @__PURE__ */ (0, import_react27.forwardRef)(
2409
+ var DropdownMenuLabel = /* @__PURE__ */ (0, import_react29.forwardRef)(
2400
2410
  function DropdownMenuLabel2({ className, ...rest }, ref) {
2401
2411
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
2402
2412
  }
2403
2413
  );
2404
- var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react27.forwardRef)(
2414
+ var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react29.forwardRef)(
2405
2415
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
2406
2416
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
2407
2417
  }
@@ -2409,7 +2419,7 @@ var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react27.forwardRef)(
2409
2419
 
2410
2420
  // src/components/Pagination/Pagination.tsx
2411
2421
  var import_icons14 = require("@bestow-ui/icons");
2412
- var import_react28 = require("react");
2422
+ var import_react30 = require("react");
2413
2423
 
2414
2424
  // src/components/Pagination/getPaginationItems.ts
2415
2425
  var range = (start, end) => end < start ? [] : Array.from({ length: end - start + 1 }, (_, i) => start + i);
@@ -2443,7 +2453,7 @@ var list3 = "_1iraoak0";
2443
2453
 
2444
2454
  // src/components/Pagination/Pagination.tsx
2445
2455
  var import_jsx_runtime28 = require("react/jsx-runtime");
2446
- var Pagination = /* @__PURE__ */ (0, import_react28.forwardRef)(function Pagination2({
2456
+ var Pagination = /* @__PURE__ */ (0, import_react30.forwardRef)(function Pagination2({
2447
2457
  totalPages,
2448
2458
  page: pageProp,
2449
2459
  defaultPage = 1,
@@ -2456,7 +2466,7 @@ var Pagination = /* @__PURE__ */ (0, import_react28.forwardRef)(function Paginat
2456
2466
  "aria-label": ariaLabelProp,
2457
2467
  ...rest
2458
2468
  }, ref) {
2459
- const [uncontrolledPage, setUncontrolledPage] = (0, import_react28.useState)(defaultPage);
2469
+ const [uncontrolledPage, setUncontrolledPage] = (0, import_react30.useState)(defaultPage);
2460
2470
  const m = useMessages();
2461
2471
  const ariaLabel = ariaLabelProp ?? m.pagination ?? "\uD398\uC774\uC9C0 \uD0D0\uC0C9";
2462
2472
  const getItemLabel = getItemLabelProp ?? ((type, n) => type === "previous" ? m.paginationPrevious ?? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? m.paginationNext ?? "\uB2E4\uC74C \uD398\uC774\uC9C0" : m.paginationPage?.(n) ?? `${n} \uD398\uC774\uC9C0`);
@@ -2508,14 +2518,14 @@ var Pagination = /* @__PURE__ */ (0, import_react28.forwardRef)(function Paginat
2508
2518
  });
2509
2519
 
2510
2520
  // src/components/PhoneNumberInput/PhoneNumberInput.tsx
2511
- var import_react29 = require("react");
2521
+ var import_react31 = require("react");
2512
2522
  var import_jsx_runtime29 = require("react/jsx-runtime");
2513
2523
  var sanitize3 = (input5) => {
2514
2524
  const digits = input5.replace(/\D/g, "");
2515
2525
  return digits.slice(0, phoneNumberMaxDigits(digits));
2516
2526
  };
2517
2527
  var isDigit4 = (char) => /\d/.test(char);
2518
- var PhoneNumberInput = /* @__PURE__ */ (0, import_react29.forwardRef)(
2528
+ var PhoneNumberInput = /* @__PURE__ */ (0, import_react31.forwardRef)(
2519
2529
  function PhoneNumberInput2(props, ref) {
2520
2530
  const {
2521
2531
  value: value4,
@@ -2526,7 +2536,7 @@ var PhoneNumberInput = /* @__PURE__ */ (0, import_react29.forwardRef)(
2526
2536
  onKeyDown,
2527
2537
  ...rest
2528
2538
  } = props;
2529
- const inputRef = (0, import_react29.useRef)(null);
2539
+ const inputRef = (0, import_react31.useRef)(null);
2530
2540
  const m = useMessages();
2531
2541
  const label6 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
2532
2542
  const field3 = useFormattedInput({
@@ -2561,7 +2571,7 @@ var PhoneNumberInput = /* @__PURE__ */ (0, import_react29.forwardRef)(
2561
2571
  );
2562
2572
 
2563
2573
  // src/components/Progress/Progress.tsx
2564
- var import_react30 = require("react");
2574
+ var import_react32 = require("react");
2565
2575
 
2566
2576
  // src/components/Progress/Progress.css.ts
2567
2577
  var import_createRuntimeFn15 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2575,7 +2585,7 @@ var value2 = "_1tvkq003";
2575
2585
  // src/components/Progress/Progress.tsx
2576
2586
  var import_jsx_runtime30 = require("react/jsx-runtime");
2577
2587
  var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
2578
- var Progress = /* @__PURE__ */ (0, import_react30.forwardRef)(function Progress2({
2588
+ var Progress = /* @__PURE__ */ (0, import_react32.forwardRef)(function Progress2({
2579
2589
  value: value4,
2580
2590
  max = 100,
2581
2591
  label: label6,
@@ -2587,7 +2597,7 @@ var Progress = /* @__PURE__ */ (0, import_react30.forwardRef)(function Progress2
2587
2597
  className,
2588
2598
  ...rest
2589
2599
  }, ref) {
2590
- const labelId = (0, import_react30.useId)();
2600
+ const labelId = (0, import_react32.useId)();
2591
2601
  const isIndeterminate = value4 === void 0 || value4 === null;
2592
2602
  const safeMax = max > 0 ? max : 100;
2593
2603
  const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
@@ -2623,7 +2633,7 @@ var Progress = /* @__PURE__ */ (0, import_react30.forwardRef)(function Progress2
2623
2633
 
2624
2634
  // src/components/RadioGroup/RadioGroup.tsx
2625
2635
  var RadixRadioGroup = __toESM(require("@radix-ui/react-radio-group"), 1);
2626
- var import_react31 = require("react");
2636
+ var import_react33 = require("react");
2627
2637
 
2628
2638
  // src/components/RadioGroup/RadioGroup.css.ts
2629
2639
  var import_createRuntimeFn16 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2638,7 +2648,7 @@ var text = "_1w9iwjmb";
2638
2648
 
2639
2649
  // src/components/RadioGroup/RadioGroup.tsx
2640
2650
  var import_jsx_runtime31 = require("react/jsx-runtime");
2641
- var RadioGroup = /* @__PURE__ */ (0, import_react31.forwardRef)(function RadioGroup2(props, ref) {
2651
+ var RadioGroup = /* @__PURE__ */ (0, import_react33.forwardRef)(function RadioGroup2(props, ref) {
2642
2652
  const {
2643
2653
  options,
2644
2654
  value: value4,
@@ -2657,7 +2667,7 @@ var RadioGroup = /* @__PURE__ */ (0, import_react31.forwardRef)(function RadioGr
2657
2667
  className
2658
2668
  } = props;
2659
2669
  const isControlled = "value" in props;
2660
- const generatedId = (0, import_react31.useId)();
2670
+ const generatedId = (0, import_react33.useId)();
2661
2671
  const baseId = id ?? generatedId;
2662
2672
  const labelId = label6 ? `${baseId}-label` : void 0;
2663
2673
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
@@ -2713,10 +2723,10 @@ var RadioGroup = /* @__PURE__ */ (0, import_react31.forwardRef)(function RadioGr
2713
2723
 
2714
2724
  // src/components/Select/Select.tsx
2715
2725
  var RadixSelect = __toESM(require("@radix-ui/react-select"), 1);
2716
- var import_react32 = require("react");
2726
+ var import_react34 = require("react");
2717
2727
  var import_icons15 = require("@bestow-ui/icons");
2718
2728
  var import_jsx_runtime32 = require("react/jsx-runtime");
2719
- var Select = /* @__PURE__ */ (0, import_react32.forwardRef)(function Select2(props, ref) {
2729
+ var Select = /* @__PURE__ */ (0, import_react34.forwardRef)(function Select2(props, ref) {
2720
2730
  const {
2721
2731
  options,
2722
2732
  value: value4,
@@ -2736,7 +2746,7 @@ var Select = /* @__PURE__ */ (0, import_react32.forwardRef)(function Select2(pro
2736
2746
  className
2737
2747
  } = props;
2738
2748
  const isControlled = "value" in props;
2739
- const generatedId = (0, import_react32.useId)();
2749
+ const generatedId = (0, import_react34.useId)();
2740
2750
  const triggerId = id ?? generatedId;
2741
2751
  const helperId = helperText3 ? `${triggerId}-helper` : void 0;
2742
2752
  const portal2 = usePortalProps();
@@ -2803,7 +2813,7 @@ var Select = /* @__PURE__ */ (0, import_react32.forwardRef)(function Select2(pro
2803
2813
 
2804
2814
  // src/components/Skeleton/Skeleton.tsx
2805
2815
  var import_dynamic2 = require("@vanilla-extract/dynamic");
2806
- var import_react33 = require("react");
2816
+ var import_react35 = require("react");
2807
2817
 
2808
2818
  // src/components/Skeleton/Skeleton.css.ts
2809
2819
  var import_createRuntimeFn17 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2815,7 +2825,7 @@ var width = "var(--_1s8datd0)";
2815
2825
  // src/components/Skeleton/Skeleton.tsx
2816
2826
  var import_jsx_runtime33 = require("react/jsx-runtime");
2817
2827
  var toCss = (value4) => typeof value4 === "number" ? `${value4}px` : value4;
2818
- var Skeleton = /* @__PURE__ */ (0, import_react33.forwardRef)(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
2828
+ var Skeleton = /* @__PURE__ */ (0, import_react35.forwardRef)(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
2819
2829
  const w = toCss(width2 ?? (variant === "circle" ? 40 : "100%"));
2820
2830
  const h = toCss(height2 ?? (variant === "circle" ? w : variant === "rect" ? 100 : "1em"));
2821
2831
  if (variant === "text" && lines2 > 1) {
@@ -2852,7 +2862,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react33.forwardRef)(function Skeleton2
2852
2862
 
2853
2863
  // src/components/Slider/Slider.tsx
2854
2864
  var RadixSlider = __toESM(require("@radix-ui/react-slider"), 1);
2855
- var import_react34 = require("react");
2865
+ var import_react36 = require("react");
2856
2866
 
2857
2867
  // src/components/Slider/Slider.css.ts
2858
2868
  var import_createRuntimeFn18 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2868,7 +2878,7 @@ var value3 = "_126mzjm3";
2868
2878
 
2869
2879
  // src/components/Slider/Slider.tsx
2870
2880
  var import_jsx_runtime34 = require("react/jsx-runtime");
2871
- var Slider = /* @__PURE__ */ (0, import_react34.forwardRef)(function Slider2(props, ref) {
2881
+ var Slider = /* @__PURE__ */ (0, import_react36.forwardRef)(function Slider2(props, ref) {
2872
2882
  const {
2873
2883
  value: value4,
2874
2884
  defaultValue,
@@ -2889,12 +2899,12 @@ var Slider = /* @__PURE__ */ (0, import_react34.forwardRef)(function Slider2(pro
2889
2899
  } = props;
2890
2900
  const m = useMessages();
2891
2901
  const thumbLabels = thumbLabelsProp ?? [m.rangeStart ?? "\uCD5C\uC18C", m.rangeEnd ?? "\uCD5C\uB300"];
2892
- const generatedId = (0, import_react34.useId)();
2902
+ const generatedId = (0, import_react36.useId)();
2893
2903
  const baseId = id ?? generatedId;
2894
2904
  const labelId = `${baseId}-label`;
2895
2905
  const helperId = `${baseId}-helper`;
2896
2906
  const isControlled = "value" in props;
2897
- const [innerValue, setInnerValue] = (0, import_react34.useState)(defaultValue ?? [min]);
2907
+ const [innerValue, setInnerValue] = (0, import_react36.useState)(defaultValue ?? [min]);
2898
2908
  const current2 = isControlled ? value4 ?? [min] : innerValue;
2899
2909
  const isRange = current2.length > 1;
2900
2910
  const handleChange = (next) => {
@@ -2947,7 +2957,7 @@ var Slider = /* @__PURE__ */ (0, import_react34.forwardRef)(function Slider2(pro
2947
2957
  });
2948
2958
 
2949
2959
  // src/components/Stack/Stack.tsx
2950
- var import_react35 = require("react");
2960
+ var import_react37 = require("react");
2951
2961
 
2952
2962
  // src/components/Stack/Stack.css.ts
2953
2963
  var import_createRuntimeFn19 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2955,13 +2965,13 @@ var stack = /* @__PURE__ */ (0, import_createRuntimeFn19.createRuntimeFn)({ defa
2955
2965
 
2956
2966
  // src/components/Stack/Stack.tsx
2957
2967
  var import_jsx_runtime35 = require("react/jsx-runtime");
2958
- var Stack = /* @__PURE__ */ (0, import_react35.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
2968
+ var Stack = /* @__PURE__ */ (0, import_react37.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
2959
2969
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
2960
2970
  });
2961
2971
 
2962
2972
  // src/components/Switch/Switch.tsx
2963
2973
  var RadixSwitch = __toESM(require("@radix-ui/react-switch"), 1);
2964
- var import_react36 = require("react");
2974
+ var import_react38 = require("react");
2965
2975
 
2966
2976
  // src/components/Switch/Switch.css.ts
2967
2977
  var import_createRuntimeFn20 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2972,8 +2982,8 @@ var track3 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ def
2972
2982
 
2973
2983
  // src/components/Switch/Switch.tsx
2974
2984
  var import_jsx_runtime36 = require("react/jsx-runtime");
2975
- var Switch = /* @__PURE__ */ (0, import_react36.forwardRef)(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
2976
- const generatedId = (0, import_react36.useId)();
2985
+ var Switch = /* @__PURE__ */ (0, import_react38.forwardRef)(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
2986
+ const generatedId = (0, import_react38.useId)();
2977
2987
  const switchId = id ?? generatedId;
2978
2988
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: cx(root9({ size }), className), "data-disabled": disabled || void 0, children: [
2979
2989
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -2993,7 +3003,7 @@ var Switch = /* @__PURE__ */ (0, import_react36.forwardRef)(function Switch2({ l
2993
3003
  });
2994
3004
 
2995
3005
  // src/components/Table/Table.tsx
2996
- var import_react37 = require("react");
3006
+ var import_react39 = require("react");
2997
3007
  var import_icons16 = require("@bestow-ui/icons");
2998
3008
 
2999
3009
  // src/components/Table/Table.css.ts
@@ -3015,9 +3025,9 @@ var table = "l3ploy1";
3015
3025
 
3016
3026
  // src/components/Table/Table.tsx
3017
3027
  var import_jsx_runtime37 = require("react/jsx-runtime");
3018
- var TableSizeContext = /* @__PURE__ */ (0, import_react37.createContext)("md");
3019
- var TableSectionContext = /* @__PURE__ */ (0, import_react37.createContext)("body");
3020
- var Table = /* @__PURE__ */ (0, import_react37.forwardRef)(function Table2({
3028
+ var TableSizeContext = /* @__PURE__ */ (0, import_react39.createContext)("md");
3029
+ var TableSectionContext = /* @__PURE__ */ (0, import_react39.createContext)("body");
3030
+ var Table = /* @__PURE__ */ (0, import_react39.forwardRef)(function Table2({
3021
3031
  size = "md",
3022
3032
  striped: striped2,
3023
3033
  stickyHeader: stickyHeader2,
@@ -3029,7 +3039,7 @@ var Table = /* @__PURE__ */ (0, import_react37.forwardRef)(function Table2({
3029
3039
  children,
3030
3040
  ...rest
3031
3041
  }, ref) {
3032
- const captionId = (0, import_react37.useId)();
3042
+ const captionId = (0, import_react39.useId)();
3033
3043
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3034
3044
  "div",
3035
3045
  {
@@ -3055,27 +3065,27 @@ var Table = /* @__PURE__ */ (0, import_react37.forwardRef)(function Table2({
3055
3065
  }
3056
3066
  ) });
3057
3067
  });
3058
- var TableHeader = /* @__PURE__ */ (0, import_react37.forwardRef)(
3068
+ var TableHeader = /* @__PURE__ */ (0, import_react39.forwardRef)(
3059
3069
  function TableHeader2({ className, ...rest }, ref) {
3060
3070
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("thead", { ref, className: cx(header9, className), ...rest }) });
3061
3071
  }
3062
3072
  );
3063
- var TableBody = /* @__PURE__ */ (0, import_react37.forwardRef)(
3073
+ var TableBody = /* @__PURE__ */ (0, import_react39.forwardRef)(
3064
3074
  function TableBody2({ className, ...rest }, ref) {
3065
3075
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tbody", { ref, className: cx(body4, className), ...rest }) });
3066
3076
  }
3067
3077
  );
3068
- var TableFooter = /* @__PURE__ */ (0, import_react37.forwardRef)(
3078
+ var TableFooter = /* @__PURE__ */ (0, import_react39.forwardRef)(
3069
3079
  function TableFooter2({ className, ...rest }, ref) {
3070
3080
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tfoot", { ref, className: cx(footer4, className), ...rest }) });
3071
3081
  }
3072
3082
  );
3073
- var TableRow = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableRow2({ selected, className, ...rest }, ref) {
3083
+ var TableRow = /* @__PURE__ */ (0, import_react39.forwardRef)(function TableRow2({ selected, className, ...rest }, ref) {
3074
3084
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
3075
3085
  });
3076
- var TableHead = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
3077
- const size = (0, import_react37.useContext)(TableSizeContext);
3078
- const section = (0, import_react37.useContext)(TableSectionContext);
3086
+ var TableHead = /* @__PURE__ */ (0, import_react39.forwardRef)(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
3087
+ const size = (0, import_react39.useContext)(TableSizeContext);
3088
+ const section = (0, import_react39.useContext)(TableSectionContext);
3079
3089
  const sortable = onSort !== void 0;
3080
3090
  const direction = sortDirection ?? "none";
3081
3091
  const SortIcon = direction === "descending" ? import_icons16.ArrowDownIcon : import_icons16.ArrowUpIcon;
@@ -3098,9 +3108,9 @@ var TableHead = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableHea
3098
3108
  }
3099
3109
  );
3100
3110
  });
3101
- var TableCell = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableCell2({ align, className, ...rest }, ref) {
3102
- const size = (0, import_react37.useContext)(TableSizeContext);
3103
- const section = (0, import_react37.useContext)(TableSectionContext);
3111
+ var TableCell = /* @__PURE__ */ (0, import_react39.forwardRef)(function TableCell2({ align, className, ...rest }, ref) {
3112
+ const size = (0, import_react39.useContext)(TableSizeContext);
3113
+ const section = (0, import_react39.useContext)(TableSectionContext);
3104
3114
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3105
3115
  "td",
3106
3116
  {
@@ -3113,7 +3123,7 @@ var TableCell = /* @__PURE__ */ (0, import_react37.forwardRef)(function TableCel
3113
3123
 
3114
3124
  // src/components/Tabs/Tabs.tsx
3115
3125
  var RadixTabs = __toESM(require("@radix-ui/react-tabs"), 1);
3116
- var import_react38 = require("react");
3126
+ var import_react40 = require("react");
3117
3127
 
3118
3128
  // src/components/Tabs/Tabs.css.ts
3119
3129
  var import_createRuntimeFn22 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -3123,25 +3133,25 @@ var trigger3 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ d
3123
3133
 
3124
3134
  // src/components/Tabs/Tabs.tsx
3125
3135
  var import_jsx_runtime38 = require("react/jsx-runtime");
3126
- var TabsStyleContext = /* @__PURE__ */ (0, import_react38.createContext)({ variant: "line", size: "md" });
3127
- var Tabs = /* @__PURE__ */ (0, import_react38.forwardRef)(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
3136
+ var TabsStyleContext = /* @__PURE__ */ (0, import_react40.createContext)({ variant: "line", size: "md" });
3137
+ var Tabs = /* @__PURE__ */ (0, import_react40.forwardRef)(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
3128
3138
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
3129
3139
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Root, { ref, ...props, ...controlled }) });
3130
3140
  });
3131
- var TabsList = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsList2({ className, ...rest }, ref) {
3132
- const { variant } = (0, import_react38.useContext)(TabsStyleContext);
3141
+ var TabsList = /* @__PURE__ */ (0, import_react40.forwardRef)(function TabsList2({ className, ...rest }, ref) {
3142
+ const { variant } = (0, import_react40.useContext)(TabsStyleContext);
3133
3143
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
3134
3144
  });
3135
- var TabsTrigger = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsTrigger2({ className, ...rest }, ref) {
3136
- const { variant, size } = (0, import_react38.useContext)(TabsStyleContext);
3145
+ var TabsTrigger = /* @__PURE__ */ (0, import_react40.forwardRef)(function TabsTrigger2({ className, ...rest }, ref) {
3146
+ const { variant, size } = (0, import_react40.useContext)(TabsStyleContext);
3137
3147
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
3138
3148
  });
3139
- var TabsContent = /* @__PURE__ */ (0, import_react38.forwardRef)(function TabsContent2({ className, ...rest }, ref) {
3149
+ var TabsContent = /* @__PURE__ */ (0, import_react40.forwardRef)(function TabsContent2({ className, ...rest }, ref) {
3140
3150
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
3141
3151
  });
3142
3152
 
3143
3153
  // src/components/Textarea/Textarea.tsx
3144
- var import_react39 = require("react");
3154
+ var import_react41 = require("react");
3145
3155
 
3146
3156
  // src/components/Textarea/Textarea.css.ts
3147
3157
  var import_createRuntimeFn23 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -3153,8 +3163,7 @@ var textarea = /* @__PURE__ */ (0, import_createRuntimeFn23.createRuntimeFn)({ d
3153
3163
 
3154
3164
  // src/components/Textarea/Textarea.tsx
3155
3165
  var import_jsx_runtime39 = require("react/jsx-runtime");
3156
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react39.useLayoutEffect : import_react39.useEffect;
3157
- var Textarea = /* @__PURE__ */ (0, import_react39.forwardRef)(function Textarea2({
3166
+ var Textarea = /* @__PURE__ */ (0, import_react41.forwardRef)(function Textarea2({
3158
3167
  label: label6,
3159
3168
  helperText: helperText3,
3160
3169
  error,
@@ -3175,13 +3184,13 @@ var Textarea = /* @__PURE__ */ (0, import_react39.forwardRef)(function Textarea2
3175
3184
  "aria-describedby": ariaDescribedBy,
3176
3185
  ...rest
3177
3186
  }, ref) {
3178
- const generatedId = (0, import_react39.useId)();
3187
+ const generatedId = (0, import_react41.useId)();
3179
3188
  const textareaId = id ?? generatedId;
3180
3189
  const helperId = helperText3 ? `${textareaId}-helper` : void 0;
3181
- const innerRef = (0, import_react39.useRef)(null);
3182
- const [uncontrolledLength, setUncontrolledLength] = (0, import_react39.useState)(() => String(defaultValue ?? "").length);
3190
+ const innerRef = (0, import_react41.useRef)(null);
3191
+ const [uncontrolledLength, setUncontrolledLength] = (0, import_react41.useState)(() => String(defaultValue ?? "").length);
3183
3192
  const length = value4 !== void 0 ? String(value4).length : uncontrolledLength;
3184
- const fitHeight = (0, import_react39.useCallback)(() => {
3193
+ const fitHeight = (0, import_react41.useCallback)(() => {
3185
3194
  const el = innerRef.current;
3186
3195
  if (!autoResize || !el) return;
3187
3196
  el.style.height = "auto";
@@ -3230,7 +3239,7 @@ var Textarea = /* @__PURE__ */ (0, import_react39.forwardRef)(function Textarea2
3230
3239
 
3231
3240
  // src/components/Toast/Toast.tsx
3232
3241
  var RadixToast = __toESM(require("@radix-ui/react-toast"), 1);
3233
- var import_react40 = require("react");
3242
+ var import_react42 = require("react");
3234
3243
  var import_icons17 = require("@bestow-ui/icons");
3235
3244
 
3236
3245
  // src/components/Toast/Toast.css.ts
@@ -3245,30 +3254,24 @@ var viewport2 = "_1g11zvx0";
3245
3254
  // src/components/Toast/Toast.tsx
3246
3255
  var import_jsx_runtime40 = require("react/jsx-runtime");
3247
3256
  var REMOVE_DELAY = 500;
3248
- var ToastContext = /* @__PURE__ */ (0, import_react40.createContext)(null);
3257
+ var ToastContext = /* @__PURE__ */ (0, import_react42.createContext)(null);
3249
3258
  function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3250
3259
  const m = useMessages();
3251
3260
  const label6 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
3252
- const [toasts, setToasts] = (0, import_react40.useState)([]);
3253
- const nextId = (0, import_react40.useRef)(0);
3261
+ const [toasts, setToasts] = (0, import_react42.useState)([]);
3262
+ const nextId = (0, import_react42.useRef)(0);
3254
3263
  const portal2 = usePortalProps();
3255
- const toast2 = (0, import_react40.useCallback)(({ variant, ...options }) => {
3256
- if (variant !== void 0) {
3257
- warnOnce(
3258
- 'toast() \uC758 variant \uB294 deprecated \uC608\uC694. color \uB97C \uC4F0\uC138\uC694 (variant "default" \u2192 color "neutral", 1.0 \uC5D0\uC11C \uC81C\uAC70).'
3259
- );
3260
- }
3261
- const color = options.color ?? (variant === "default" ? "neutral" : variant);
3264
+ const toast2 = (0, import_react42.useCallback)((options) => {
3262
3265
  const id = nextId.current++;
3263
- setToasts((prev) => [...prev, { ...options, color, id, open: true }]);
3266
+ setToasts((prev) => [...prev, { ...options, id, open: true }]);
3264
3267
  return id;
3265
3268
  }, []);
3266
- const dismiss = (0, import_react40.useCallback)((id) => {
3269
+ const dismiss = (0, import_react42.useCallback)((id) => {
3267
3270
  const isTarget = (t) => id === void 0 || t.id === id;
3268
3271
  setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
3269
3272
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
3270
3273
  }, []);
3271
- const value4 = (0, import_react40.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
3274
+ const value4 = (0, import_react42.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
3272
3275
  return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
3273
3276
  children,
3274
3277
  toasts.map(({ id, open, title: title6, description: description6, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
@@ -3293,7 +3296,7 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3293
3296
  ] }) });
3294
3297
  }
3295
3298
  function useToast() {
3296
- const context = (0, import_react40.useContext)(ToastContext);
3299
+ const context = (0, import_react42.useContext)(ToastContext);
3297
3300
  if (!context) throw new Error("useToast \uB294 ToastProvider \uC548\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4.");
3298
3301
  return context;
3299
3302
  }
@@ -3342,7 +3345,7 @@ function Tooltip({
3342
3345
  }
3343
3346
 
3344
3347
  // src/components/Typography/Typography.tsx
3345
- var import_react41 = require("react");
3348
+ var import_react43 = require("react");
3346
3349
 
3347
3350
  // src/components/Typography/Typography.css.ts
3348
3351
  var import_createRuntimeFn25 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -3361,7 +3364,7 @@ var defaultElement = {
3361
3364
  "body-sm": "p",
3362
3365
  caption: "span"
3363
3366
  };
3364
- var Typography = /* @__PURE__ */ (0, import_react41.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
3367
+ var Typography = /* @__PURE__ */ (0, import_react43.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
3365
3368
  const Component = as ?? defaultElement[variant];
3366
3369
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3367
3370
  Component,
@@ -3374,7 +3377,7 @@ var Typography = /* @__PURE__ */ (0, import_react41.forwardRef)(function Typogra
3374
3377
  });
3375
3378
 
3376
3379
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3377
- var import_react42 = require("react");
3380
+ var import_react44 = require("react");
3378
3381
 
3379
3382
  // src/components/VerificationCodeInput/VerificationCodeInput.css.ts
3380
3383
  var input4 = "ea01812";
@@ -3386,7 +3389,7 @@ var timer = "ea01814";
3386
3389
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3387
3390
  var import_jsx_runtime43 = require("react/jsx-runtime");
3388
3391
  var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
3389
- var VerificationCodeInput = /* @__PURE__ */ (0, import_react42.forwardRef)(
3392
+ var VerificationCodeInput = /* @__PURE__ */ (0, import_react44.forwardRef)(
3390
3393
  function VerificationCodeInput2(props, ref) {
3391
3394
  const {
3392
3395
  length = 6,
@@ -3413,23 +3416,23 @@ var VerificationCodeInput = /* @__PURE__ */ (0, import_react42.forwardRef)(
3413
3416
  const label6 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
3414
3417
  const resendText = resendTextProp ?? m.resend ?? "\uC7AC\uC804\uC1A1";
3415
3418
  const expiredText = expiredTextProp ?? m.verificationExpired ?? "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.";
3416
- const generatedId = (0, import_react42.useId)();
3419
+ const generatedId = (0, import_react44.useId)();
3417
3420
  const inputId = id ?? generatedId;
3418
3421
  const helperId = `${inputId}-helper`;
3419
3422
  const statusId = `${inputId}-status`;
3420
- const inputRef = (0, import_react42.useRef)(null);
3423
+ const inputRef = (0, import_react44.useRef)(null);
3421
3424
  const isControlled = "value" in props;
3422
- const [innerValue, setInnerValue] = (0, import_react42.useState)(defaultValue ?? "");
3425
+ const [innerValue, setInnerValue] = (0, import_react44.useState)(defaultValue ?? "");
3423
3426
  const code = (isControlled ? value4 ?? "" : innerValue).slice(0, length);
3424
- const [focused, setFocused] = (0, import_react42.useState)(false);
3425
- const [endAt, setEndAt] = (0, import_react42.useState)(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3426
- const [remaining, setRemaining] = (0, import_react42.useState)(expiresIn ?? 0);
3427
+ const [focused, setFocused] = (0, import_react44.useState)(false);
3428
+ const [endAt, setEndAt] = (0, import_react44.useState)(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3429
+ const [remaining, setRemaining] = (0, import_react44.useState)(expiresIn ?? 0);
3427
3430
  const expired = expiresIn !== void 0 && remaining <= 0;
3428
- const onExpireRef = (0, import_react42.useRef)(onExpire);
3429
- (0, import_react42.useEffect)(() => {
3431
+ const onExpireRef = (0, import_react44.useRef)(onExpire);
3432
+ (0, import_react44.useEffect)(() => {
3430
3433
  onExpireRef.current = onExpire;
3431
3434
  });
3432
- (0, import_react42.useEffect)(() => {
3435
+ (0, import_react44.useEffect)(() => {
3433
3436
  if (endAt === null) return;
3434
3437
  const tick = () => {
3435
3438
  const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
@@ -3599,7 +3602,6 @@ var VerificationCodeInput = /* @__PURE__ */ (0, import_react42.forwardRef)(
3599
3602
  themeClass,
3600
3603
  toISODate,
3601
3604
  useMessages,
3602
- usePortalClassName,
3603
3605
  usePortalProps,
3604
3606
  useTheme,
3605
3607
  useToast,