@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/README.md +1 -1
- package/dist/chunk-PFEZ3D2H.js +212 -0
- package/dist/chunk-PFEZ3D2H.js.map +1 -0
- package/dist/client.js +3112 -0
- package/dist/client.js.map +1 -0
- package/dist/index.cjs +390 -388
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +101 -108
- package/dist/index.d.ts +101 -108
- package/dist/index.js +2 -3507
- package/dist/shared.js +246 -0
- package/dist/shared.js.map +1 -0
- package/package.json +14 -8
- package/dist/index.js.map +0 -1
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
|
|
33
|
-
__export(
|
|
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(
|
|
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
|
|
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,
|
|
210
|
-
|
|
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
|
|
218
|
-
const base = rgbToOklch(parseHex(
|
|
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 =
|
|
228
|
+
const { solid, contrast: lightContrast } = solidWithContrast(input5);
|
|
222
229
|
const light = {
|
|
223
230
|
solid,
|
|
224
|
-
solidHover: hoverFor(
|
|
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) :
|
|
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/
|
|
1171
|
-
var
|
|
1172
|
-
|
|
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,
|
|
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,
|
|
1252
|
-
(
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
1592
|
+
var import_react23 = require("react");
|
|
1553
1593
|
var import_icons9 = require("@bestow-ui/icons");
|
|
1554
1594
|
|
|
1555
|
-
// src/utils/
|
|
1556
|
-
var
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
1654
|
-
const gridRef = (0,
|
|
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,
|
|
1666
|
+
const [innerValue, setInnerValue] = (0, import_react23.useState)(defaultValue ?? "");
|
|
1657
1667
|
const selected = parseISODate(isControlled ? value4 : innerValue);
|
|
1658
|
-
const
|
|
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 [
|
|
1668
|
-
const
|
|
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,
|
|
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,
|
|
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
|
|
1712
|
-
const
|
|
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(
|
|
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(
|
|
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))
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
1856
|
-
const anchorRef = (0,
|
|
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,
|
|
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,
|
|
1862
|
-
const [query, setQuery] = (0,
|
|
1863
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
1864
|
-
const filtered = (0,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2162
|
-
const [touched, setTouched] = (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
2976
|
-
const generatedId = (0,
|
|
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
|
|
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,
|
|
3019
|
-
var TableSectionContext = /* @__PURE__ */ (0,
|
|
3020
|
-
var Table = /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
3077
|
-
const size = (0,
|
|
3078
|
-
const section = (0,
|
|
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,
|
|
3102
|
-
const size = (0,
|
|
3103
|
-
const section = (0,
|
|
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
|
|
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,
|
|
3127
|
-
var Tabs = /* @__PURE__ */ (0,
|
|
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,
|
|
3132
|
-
const { variant } = (0,
|
|
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,
|
|
3136
|
-
const { variant, size } = (0,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
3182
|
-
const [uncontrolledLength, setUncontrolledLength] = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
3253
|
-
const nextId = (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,
|
|
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,
|
|
3266
|
+
setToasts((prev) => [...prev, { ...options, id, open: true }]);
|
|
3264
3267
|
return id;
|
|
3265
3268
|
}, []);
|
|
3266
|
-
const dismiss = (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
3423
|
+
const inputRef = (0, import_react44.useRef)(null);
|
|
3421
3424
|
const isControlled = "value" in props;
|
|
3422
|
-
const [innerValue, setInnerValue] = (0,
|
|
3425
|
+
const [innerValue, setInnerValue] = (0, import_react44.useState)(defaultValue ?? "");
|
|
3423
3426
|
const code = (isControlled ? value4 ?? "" : innerValue).slice(0, length);
|
|
3424
|
-
const [focused, setFocused] = (0,
|
|
3425
|
-
const [endAt, setEndAt] = (0,
|
|
3426
|
-
const [remaining, setRemaining] = (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,
|
|
3429
|
-
(0,
|
|
3431
|
+
const onExpireRef = (0, import_react44.useRef)(onExpire);
|
|
3432
|
+
(0, import_react44.useEffect)(() => {
|
|
3430
3433
|
onExpireRef.current = onExpire;
|
|
3431
3434
|
});
|
|
3432
|
-
(0,
|
|
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,
|