@bestow-ui/react 1.4.0 → 1.5.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.d.cts CHANGED
@@ -85,12 +85,14 @@ type Widen<T> = {
85
85
  * 그래서 넣지 않으면 화면이 그대로이고, 기존 토큰(border.default 등)을 덮어쓴 사용자 설정도 계속 따른다(하위 영역의 CSS 덮어쓰기 포함).
86
86
  * - `color.border.input`·`inputHover` (1.x 추가): 입력 칸(Input·Select·Combobox·Textarea·인증번호 칸 등) 테두리. 기본은 border.default·border.strong.
87
87
  * 흰 배경과 1.3:1 인 기본 테두리를 3:1 이상으로 올리려면 `strongInputBorders` 를 쓴다(2.0 에서 기본값이 될 예정).
88
+ * - `color.border.control` (1.x 추가): Checkbox·Radio 테두리, 꺼진 Switch 트랙, Stepper 의 예정 단계. 기본은 border.strong(라이트 2.07:1).
88
89
  */
89
90
  declare const optionalTokens: {
90
91
  color: {
91
92
  border: {
92
93
  input: string;
93
94
  inputHover: string;
95
+ control: string;
94
96
  };
95
97
  };
96
98
  };
@@ -100,6 +102,7 @@ declare const vars: {
100
102
  border: {
101
103
  input: `var(--${string})`;
102
104
  inputHover: `var(--${string})`;
105
+ control: `var(--${string})`;
103
106
  default: `var(--${string})`;
104
107
  strong: `var(--${string})`;
105
108
  focus: `var(--${string})`;
@@ -272,9 +275,9 @@ type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';
272
275
  declare function createIntentColors(intent: IntentName, color: string): ThemeInput;
273
276
 
274
277
  /**
275
- * 입력 칸 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비).
276
- * 기본 테두리(border.default)는 흰 배경과 1.3:1 이라 칸의 경계가 잘 보이지 않는다 — 2.0 에서 기본값이 될 예정.
277
- * hover 는 테두리보다 더 진하게(다크는 더 밝게) 바뀐다.
278
+ * 입력 칸·체크 컨트롤 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비) — 2.0 에서 기본값이 될 예정.
279
+ * - 입력 칸(border.input): 기본 border.default 는 흰 배경과 1.3:1. hover 는 테두리보다 더 진하게(다크는 더 밝게).
280
+ * - Checkbox·Radio 테두리, 꺼진 Switch, Stepper 예정 단계(border.control): 기본 border.strong 은 라이트 흰 배경과 2.07:1.
278
281
  *
279
282
  * @example
280
283
  * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>
package/dist/index.d.ts CHANGED
@@ -85,12 +85,14 @@ type Widen<T> = {
85
85
  * 그래서 넣지 않으면 화면이 그대로이고, 기존 토큰(border.default 등)을 덮어쓴 사용자 설정도 계속 따른다(하위 영역의 CSS 덮어쓰기 포함).
86
86
  * - `color.border.input`·`inputHover` (1.x 추가): 입력 칸(Input·Select·Combobox·Textarea·인증번호 칸 등) 테두리. 기본은 border.default·border.strong.
87
87
  * 흰 배경과 1.3:1 인 기본 테두리를 3:1 이상으로 올리려면 `strongInputBorders` 를 쓴다(2.0 에서 기본값이 될 예정).
88
+ * - `color.border.control` (1.x 추가): Checkbox·Radio 테두리, 꺼진 Switch 트랙, Stepper 의 예정 단계. 기본은 border.strong(라이트 2.07:1).
88
89
  */
89
90
  declare const optionalTokens: {
90
91
  color: {
91
92
  border: {
92
93
  input: string;
93
94
  inputHover: string;
95
+ control: string;
94
96
  };
95
97
  };
96
98
  };
@@ -100,6 +102,7 @@ declare const vars: {
100
102
  border: {
101
103
  input: `var(--${string})`;
102
104
  inputHover: `var(--${string})`;
105
+ control: `var(--${string})`;
103
106
  default: `var(--${string})`;
104
107
  strong: `var(--${string})`;
105
108
  focus: `var(--${string})`;
@@ -272,9 +275,9 @@ type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';
272
275
  declare function createIntentColors(intent: IntentName, color: string): ThemeInput;
273
276
 
274
277
  /**
275
- * 입력 칸 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비).
276
- * 기본 테두리(border.default)는 흰 배경과 1.3:1 이라 칸의 경계가 잘 보이지 않는다 — 2.0 에서 기본값이 될 예정.
277
- * hover 는 테두리보다 더 진하게(다크는 더 밝게) 바뀐다.
278
+ * 입력 칸·체크 컨트롤 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비) — 2.0 에서 기본값이 될 예정.
279
+ * - 입력 칸(border.input): 기본 border.default 는 흰 배경과 1.3:1. hover 는 테두리보다 더 진하게(다크는 더 밝게).
280
+ * - Checkbox·Radio 테두리, 꺼진 Switch, Stepper 예정 단계(border.control): 기본 border.strong 은 라이트 흰 배경과 2.07:1.
278
281
  *
279
282
  * @example
280
283
  * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>
package/dist/shared.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  toISODate,
18
18
  vars,
19
19
  visuallyHidden
20
- } from "./chunk-TIFI6ZQU.js";
20
+ } from "./chunk-VQ45DNC3.js";
21
21
 
22
22
  // src/theme/color.ts
23
23
  import { darkColors, lightColors, palette } from "@bestow-ui/tokens";
@@ -159,9 +159,11 @@ function createIntentColors(intent, color) {
159
159
  // src/theme/presets.ts
160
160
  var strongInputBorders = /* @__PURE__ */ Object.freeze({
161
161
  // 라이트: gray600 / gray700 — 흰 배경 5.18:1, bg.subtle(gray50) 4.91:1
162
- light: { color: { border: { input: "#666e76", inputHover: "#495057" } } },
162
+ // 체크 컨트롤: gray600 — 흰 배경 5.18:1
163
+ light: { color: { border: { input: "#666e76", inputHover: "#495057", control: "#666e76" } } },
163
164
  // 다크: gray500 / gray300 — gray600 은 bg.subtle(gray900) 위에서 2.98:1 이라 한 단계 밝게. bg.default 8.57:1, bg.subtle 7.43:1
164
- dark: { color: { border: { input: "#adb5bd", inputHover: "#dee2e6" } } }
165
+ // 체크 컨트롤: gray500 — 다크 기본값(border.strong)과 같다(이미 8.57:1)
166
+ dark: { color: { border: { input: "#adb5bd", inputHover: "#dee2e6", control: "#adb5bd" } } }
165
167
  });
166
168
 
167
169
  // src/i18n/en.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/color.ts","../src/theme/presets.ts","../src/i18n/en.ts","../src/components/AgreementGroup/agreements.ts","../src/components/Badge/Badge.tsx","../src/components/Badge/Badge.css.ts","../src/components/Card/Card.tsx","../src/components/Card/Card.css.ts","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.css.ts","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.css.ts","../src/components/Progress/Progress.tsx","../src/components/Progress/Progress.css.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.css.ts","../src/components/Typography/Typography.tsx","../src/components/Typography/Typography.css.ts","../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["// 대표색 하나로 intent 색 세트를 만드는 색 계산 유틸.\n// OKLCH(사람이 느끼는 밝기에 가까운 색 공간)에서 밝기를 조절하고, WCAG 대비(4.5:1)를 만족하도록 글자색을 찾는다.\nimport { darkColors, lightColors, palette } from '@bestow-ui/tokens';\nimport type { ThemeInput } from './createTheme';\n\ntype Rgb = [number, number, number]; // 0~1, sRGB\ninterface Oklch {\n l: number;\n c: number;\n h: number;\n}\n\nexport function parseHex(hex: string): Rgb {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m) throw new Error(`올바른 hex 색이 아니에요: \"${hex}\" (예: \"#7c3aed\")`);\n let h = m[1]!;\n if (h.length === 3) h = h.replace(/./g, (c) => c + c);\n return [0, 2, 4].map((i) => parseInt(h.slice(i, i + 2), 16) / 255) as Rgb;\n}\n\nexport function toHex(rgb: Rgb): string {\n return `#${rgb\n .map((v) =>\n Math.round(Math.min(1, Math.max(0, v)) * 255)\n .toString(16)\n .padStart(2, '0'),\n )\n .join('')}`;\n}\n\nconst toLinear = (c: number) => (c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4);\nconst fromLinear = (c: number) => (c <= 0.0031308 ? 12.92 * c : 1.055 * c ** (1 / 2.4) - 0.055);\n\nfunction rgbToOklch([r, g, b]: Rgb): Oklch {\n const [lr, lg, lb] = [toLinear(r), toLinear(g), toLinear(b)];\n const l_ = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n const m_ = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n const s_ = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;\n const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;\n const bb = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;\n return { l: L, c: Math.hypot(a, bb), h: Math.atan2(bb, a) };\n}\n\nfunction oklchToRgbUnclamped({ l, c, h }: Oklch): Rgb {\n const a = c * Math.cos(h);\n const b = c * Math.sin(h);\n const l_ = (l + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m_ = (l - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s_ = (l - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n fromLinear(4.0767416621 * l_ - 3.3077115913 * m_ + 0.2309699292 * s_),\n fromLinear(-1.2684380046 * l_ + 2.6097574011 * m_ - 0.3413193965 * s_),\n fromLinear(-0.0041960863 * l_ - 0.7034186147 * m_ + 1.707614701 * s_),\n ];\n}\n\nconst inGamut = (rgb: Rgb) => rgb.every((v) => v >= -1e-4 && v <= 1 + 1e-4);\n\n/** sRGB 범위를 벗어나면 채도(c)를 줄여 범위 안으로 맞춘다. */\nfunction oklchToRgb(color: Oklch): Rgb {\n const l = Math.min(1, Math.max(0, color.l));\n let rgb = oklchToRgbUnclamped({ ...color, l });\n if (inGamut(rgb)) return rgb;\n let lo = 0;\n let hi = color.c;\n for (let i = 0; i < 20; i++) {\n const mid = (lo + hi) / 2;\n if (inGamut(oklchToRgbUnclamped({ l, c: mid, h: color.h }))) lo = mid;\n else hi = mid;\n }\n rgb = oklchToRgbUnclamped({ l, c: lo, h: color.h });\n return rgb;\n}\n\nfunction luminance([r, g, b]: Rgb): number {\n return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);\n}\n\n/** WCAG 대비율 (1 ~ 21) */\nexport function contrastRatio(a: string, b: string): number {\n const [la, lb] = [luminance(parseHex(a)), luminance(parseHex(b))];\n return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);\n}\n\n/** fg 를 alpha 만큼 bg 위에 겹친 결과 색 */\nfunction blend(fg: string, alpha: number, bg: string): string {\n const [f, b] = [parseHex(fg), parseHex(bg)];\n return toHex(f.map((v, i) => v * alpha + b[i]! * (1 - alpha)) as Rgb);\n}\n\nconst withL = (base: Oklch, l: number, c = base.c) => toHex(oklchToRgb({ l, c, h: base.h }));\n\n/** 대상 배경들 위에서 대비 4.5 를 넘을 때까지 밝기를 step 만큼 옮긴다. */\nfunction findReadable(base: Oklch, startL: number, step: number, backgrounds: string[]): string {\n let l = startL;\n for (let i = 0; i < 40; i++) {\n const hex = withL(base, l);\n if (backgrounds.every((bg) => contrastRatio(hex, bg) >= 4.5)) return hex;\n l = Math.min(1, Math.max(0, l + step));\n }\n return step < 0 ? palette.black : palette.white;\n}\n\n/**\n * solid 의 hover 색: 밝기를 delta 만큼 옮기되, 그 결과에서 글자색(contrast) 대비가 4.5 아래로 떨어지면 반대 방향으로 옮긴다.\n * (예: 다크 모드에서 파란 버튼을 밝게 하면 흰 글자 대비가 떨어지므로 어둡게 한다)\n */\nfunction hoverFor(base: Oklch, delta: number, contrast: string): string {\n const preferred = withL(base, Math.min(1, Math.max(0, base.l + delta)));\n if (contrastRatio(contrast, preferred) >= 4.5) return preferred;\n return withL(base, Math.min(1, Math.max(0, base.l - delta)));\n}\n\n/**\n * solid 배경과 그 위 글자색(contrast). 흰 글자가 4.5 를 넘으면 흰색, 아니면 짙은 글자.\n * 둘 다 4.5 미만인 중간 밝기 색(초록 #059669, 주황 #ea580c 등)은 solid 의 밝기를 가장 적게 옮겨 4.5 를 맞춘다\n * (같은 거리면 어둡게 + 흰 글자를 먼저 고른다).\n */\nfunction solidWithContrast(color: string): { solid: string; contrast: string } {\n const white = palette.white;\n const dark = palette.gray[900];\n if (contrastRatio(white, color) >= 4.5) return { solid: color, contrast: white };\n if (contrastRatio(dark, color) >= 4.5) return { solid: color, contrast: dark };\n const base = rgbToOklch(parseHex(color));\n for (let delta = 0.005; delta <= 1; delta += 0.005) {\n const darker = withL(base, Math.max(0, base.l - delta));\n if (contrastRatio(white, darker) >= 4.5) return { solid: darker, contrast: white };\n const lighter = withL(base, Math.min(1, base.l + delta));\n if (contrastRatio(dark, lighter) >= 4.5) return { solid: lighter, contrast: dark };\n }\n return { solid: palette.black, contrast: white };\n}\n\nconst rgba = (hex: string, alpha: number) => {\n const [r, g, b] = parseHex(hex).map((v) => Math.round(v * 255));\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';\n\n/**\n * 대표색 하나로 intent(primary 등)의 라이트·다크 색 세트를 만든다. 결과는 createTheme 에 넘긴다.\n * - solid 는 넘긴 색을 그대로 쓴다 (다크모드에서 너무 어두우면 조금 밝힌다). 단 흰 글자·짙은 글자 모두\n * 대비 4.5:1 이 안 나오는 중간 밝기 색이면 4.5 가 나올 만큼만 밝기를 옮긴다.\n * - text 와 contrast(solid 위 글자색)는 WCAG AA 대비 4.5:1 을 만족하도록 계산한다.\n * - intent 가 'primary' 면 포커스 링 색(border.focus)도 함께 바꾼다.\n *\n * @example createTheme(createIntentColors('primary', '#7c3aed'))\n */\nexport function createIntentColors(intent: IntentName, color: string): ThemeInput {\n const input = toHex(parseHex(color));\n const base = rgbToOklch(parseHex(input));\n\n // 라이트\n const lightSubtle = withL(base, 0.97, Math.min(base.c, 0.12) * 0.3);\n const lightSubtleHover = withL(base, 0.93, Math.min(base.c, 0.12) * 0.45);\n const { solid, contrast: lightContrast } = solidWithContrast(input);\n const light = {\n solid,\n solidHover: hoverFor(rgbToOklch(parseHex(solid)), -0.06, lightContrast),\n contrast: lightContrast,\n subtle: lightSubtle,\n subtleHover: lightSubtleHover,\n text: findReadable(base, Math.min(base.l, 0.55), -0.02, [lightColors.bg.default, lightSubtle, lightSubtleHover]),\n };\n\n // 다크\n const darkBg = darkColors.bg.default;\n const { solid: darkSolid, contrast: darkContrast } = solidWithContrast(base.l < 0.5 ? withL(base, 0.55) : input);\n const darkBase = rgbToOklch(parseHex(darkSolid));\n const darkSubtleOnBg = blend(darkSolid, 0.16, darkBg);\n const darkSubtleHoverOnBg = blend(darkSolid, 0.26, darkBg);\n const dark = {\n solid: darkSolid,\n solidHover: hoverFor(darkBase, 0.06, darkContrast),\n contrast: darkContrast,\n subtle: rgba(darkSolid, 0.16),\n subtleHover: rgba(darkSolid, 0.26),\n text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg]),\n };\n\n // primary 는 포커스 링(border.focus)도 브랜드 색을 따라가게 한다. 다크는 어두운 배경에서 잘 보이도록 solid 보다 밝게.\n // 포커스 링은 그래픽이라 배경과 3:1 이상이어야 한다(WCAG 1.4.11). 노랑·하늘색처럼 밝은 색은 라이트에서 미달이므로\n // 그때는 배경 대비 4.5:1 이 보장된 text 색을 쓴다.\n const focusOn = (candidate: string, fallback: string, bg: string) =>\n contrastRatio(candidate, bg) >= 3 ? candidate : fallback;\n const focus =\n intent === 'primary'\n ? {\n light: { border: { focus: focusOn(light.solid, light.text, lightColors.bg.default) } },\n dark: {\n border: { focus: focusOn(withL(darkBase, Math.min(1, darkBase.l + 0.06)), dark.text, darkBg) },\n },\n }\n : undefined;\n\n return {\n light: { color: { [intent]: light, ...focus?.light } },\n dark: { color: { [intent]: dark, ...focus?.dark } },\n } as ThemeInput;\n}\n","import type { ThemeInput } from './createTheme';\n\n/**\n * 입력 칸 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비).\n * 기본 테두리(border.default)는 흰 배경과 1.3:1 이라 칸의 경계가 잘 보이지 않는다 — 2.0 에서 기본값이 될 예정.\n * hover 는 테두리보다 더 진하게(다크는 더 밝게) 바뀐다.\n *\n * @example\n * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>\n * createTheme(createIntentColors('primary', '#7c3aed'), strongInputBorders) // 브랜드 테마와 함께\n */\n// 색은 palette 를 import 하지 않고 값으로 적는다 — `palette.gray[600]` 같은 속성 읽기는 번들러가 지우지 못해,\n// 이 값을 쓰지 않는 앱에도 tokens 전체가 딸려 왔다(\"앱 기본\" +460 B). palette 와 같은지는 presets.test.ts 가 확인한다.\nexport const strongInputBorders: ThemeInput = /* @__PURE__ */ Object.freeze({\n // 라이트: gray600 / gray700 — 흰 배경 5.18:1, bg.subtle(gray50) 4.91:1\n light: { color: { border: { input: '#666e76', inputHover: '#495057' } } },\n // 다크: gray500 / gray300 — gray600 은 bg.subtle(gray900) 위에서 2.98:1 이라 한 단계 밝게. bg.default 8.57:1, bg.subtle 7.43:1\n dark: { color: { border: { input: '#adb5bd', inputHover: '#dee2e6' } } },\n});\n","import type { BestowMessages } from './LocaleProvider';\n\nconst WEEKDAYS_LONG = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] as const;\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n] as const;\n\n/**\n * 영어 문구. `<LocaleProvider messages={en}>` 로 쓴다. 따로 import 할 때만 번들에 들어간다.\n * 한국 서비스 전용 부품(사업자등록번호 등)의 문구도 영어로 바뀌지만 서식(하이픈 위치 등)은 그대로다.\n */\nexport const en: BestowMessages = {\n close: 'Close',\n loading: 'Loading',\n notifications: 'Notifications',\n breadcrumb: 'Breadcrumb',\n pagination: 'Pagination',\n paginationPrevious: 'Previous page',\n paginationNext: 'Next page',\n paginationPage: (page) => `Page ${page}`,\n newWindow: '(opens in a new window)',\n noResults: 'No results',\n openList: 'Show options',\n clearSelection: 'Clear selection',\n skipToContent: 'Skip to main content',\n decrement: 'Decrease',\n increment: 'Increase',\n steps: 'Progress',\n stepCompleted: 'completed',\n fileSelect: 'Choose files',\n fileDropHint: 'or drag and drop here',\n fileList: 'Selected files',\n fileRemove: (name) => `Remove ${name}`,\n filesSelected: (count) => `${count} ${count === 1 ? 'file' : 'files'} selected`,\n fileRemoved: (name) => `${name} removed`,\n fileTooLarge: (name, maxSize) => `${name}: files must be ${maxSize} or smaller.`,\n fileTypeNotAllowed: (name) => `${name}: this file type is not allowed.`,\n fileTooMany: (maxFiles) => `You can upload up to ${maxFiles} files.`,\n dateRangeStart: 'Start date',\n dateRangeEnd: 'End date',\n dateRangePresets: 'Quick select',\n errorSummaryTitle: (count) => `There ${count === 1 ? 'is 1 problem' : `are ${count} problems`} with your answers`,\n rangeStart: 'minimum',\n rangeEnd: 'maximum',\n agreeAll: 'Agree to all',\n required: 'Required',\n optional: 'Optional',\n show: 'View',\n hide: 'Hide',\n verificationCode: 'Verification code',\n verificationCodeHint: (length, type) => `Enter the ${length}-${type === 'numeric' ? 'digit' : 'character'} code.`,\n resend: 'Resend',\n verificationExpired: 'The code has expired. Please request a new one.',\n phoneNumber: 'Phone number',\n businessNumber: 'Business registration number',\n businessNumberInvalid: 'This business registration number is not valid. Please check it again.',\n businessNumberIncomplete: 'Enter all 10 digits.',\n amount: 'Amount',\n currencyUnit: 'KRW',\n address: 'Address',\n addressSearch: 'Find address',\n addressSearchDescription: 'Search by road name, building name, or lot number.',\n postalCode: 'Postal code',\n baseAddress: 'Address',\n baseAddressPlaceholder: 'Select \"Find address\" to choose an address',\n detailAddress: 'Address line 2',\n detailAddressPlaceholder: 'Apartment, suite, unit, etc.',\n addressLoading: 'Loading address search',\n addressLoadError: 'Could not load address search. Please try again later.',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n monthTitle: (year, month) => `${MONTHS[month - 1]} ${year}`,\n weekdaysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n weekdaysLong: WEEKDAYS_LONG,\n dayLabel: (date, weekdayLong) =>\n `${date.getDate()}, ${weekdayLong}, ${MONTHS[date.getMonth()]} ${date.getFullYear()}`,\n holiday: 'holiday',\n today: 'today',\n date: 'Date',\n openCalendar: 'Choose date',\n calendar: 'Calendar',\n dateInvalid: 'This date does not exist.',\n dateUnavailable: 'This date is not available.',\n dateIncomplete: 'Enter the date as YYYY-MM-DD.',\n};\n","import type { ReactNode } from 'react';\n\n// 서버 컴포넌트에서도 부를 수 있도록 컴포넌트(hook·Radix) 파일과 분리한 순수 타입·함수\n\nexport interface AgreementItem {\n value: string;\n /** 약관 이름 (예: \"서비스 이용약관 동의\") */\n label: ReactNode;\n /** 필수 동의 여부. 이름 앞에 \"필수\"/\"선택\" 이 붙는다 */\n required?: boolean;\n /** 펼쳐서 보여 줄 약관 내용. 있으면 \"보기\" 버튼이 생긴다 */\n content?: ReactNode;\n}\n\n/** 필수 항목에 모두 동의했는지 */\nexport function hasAllRequiredAgreements(items: AgreementItem[], value: string[]): boolean {\n return items.every((item) => !item.required || value.includes(item.value));\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Badge.css';\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** 시각적 스타일 */\n variant?: 'solid' | 'soft' | 'outline';\n /** 의미 색상 */\n color?: 'primary' | 'neutral' | 'danger' | 'success' | 'warning';\n /** 크기 */\n size?: 'sm' | 'md' | 'lg';\n /** 텍스트 앞에 표시할 아이콘 (장식용 — 의미는 텍스트로 전달한다) */\n startIcon?: ReactNode;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant, color, size, startIcon, className, children, ...rest },\n ref,\n) {\n return (\n <span ref={ref} className={cx(styles.badge({ variant, color, size }), className)} {...rest}>\n {startIcon && <span className={styles.icon}>{startIcon}</span>}\n {children}\n </span>\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WWwW6jMBCG7zyFj7sHVwlpd1vyMNVgD8SqsS3blGRXffcVTk0IJJF92AtInvn_n2-MME_v2_LthTXqmfwtCOHCGQmnigglhULaSDzuC0JAilZR4bFzFWGoPNpxuQVTkU-wPyit0Xk9UGeAId3-HKu1thxtRbbmSJyWghNvQTkDFpW_NFALXPRuYXRepE0vZTBrtPK0gU7I06JzVqEOlLu0Dyjag7_Vfq7QDrnouyAIuIe7glmZ-vEaRMNBeDwzV0TpwYIZlz_ResFA0jC2inSCc4n74qt4iuN-CeOugX20VveKU6altjE5dm1Cys3SOOKZ368kv_K-3-7a7_cdv9s7mPvwi7DXEDZTLnYgeFBjRQf2RMOrFLxn03ioYFp5C84vROXjmL72EheS3UOJx6O_JntLIlPYewsygywqssimmHSyKFmTQRIZB9WizQD7FmRxxZB0rG_FmqpOonI9Y-hcBlZUZHFNMelgUbImY0lkA1glVJtBFhVZZFNMOlmUrMl4IOuEmj7f5caEU8sA56PmfJjdPKnKy2nhxJ9lz7ROj-46FNehz_89tFmHviaH7hJDXXcd2j78MRjv1B2sUB8V2eyLr3_qQ3MiUQgAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var badge = /* @__PURE__ */ _7a468({defaultClassName:'_1295cfn4',variantClassNames:{variant:{solid:'_1295cfn5',soft:'_1295cfn6',outline:'_1295cfn7'},color:{primary:'_1295cfn8',neutral:'_1295cfn9',danger:'_1295cfna',success:'_1295cfnb',warning:'_1295cfnc'},size:{sm:'_1295cfnd',md:'_1295cfne',lg:'_1295cfnf'}},defaultVariants:{variant:'soft',color:'neutral',size:'md'},compoundVariants:[]});\nexport var icon = '_1295cfng';","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Card.css';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n /** 시각적 스타일. outline 은 테두리, elevated 는 그림자(다크 모드는 가장자리 ring 포함), soft 는 옅은 배경 */\n variant?: 'outline' | 'elevated' | 'soft';\n /** 안쪽 여백 (sm 16px, md 24px, lg 32px). 이미지를 가장자리까지 붙이려면 none */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /** 렌더링할 요소 (기본 div). 목록이면 li, 독립된 콘텐츠면 article 등 */\n as?: ElementType;\n}\n\n/** 배경·테두리·radius·padding 을 가진 컨테이너. 자식 사이 간격은 16px. */\nexport const Card = /* @__PURE__ */ forwardRef<HTMLElement, CardProps>(function Card(\n { variant, padding, as: Component = 'div', className, ...rest },\n ref,\n) {\n return <Component ref={ref} className={cx(styles.card({ variant, padding }), className)} {...rest} />;\n});\n\nexport type CardSectionProps = HTMLAttributes<HTMLDivElement>;\n\n/** 제목·설명 영역. Typography 와 함께 쓴다. */\nexport const CardHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardHeader(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.header, className)} {...rest} />;\n});\n\n/** 본문 영역 */\nexport const CardBody = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardBody(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.body, className)} {...rest} />;\n});\n\n/** 버튼 등 동작 영역. 오른쪽 정렬 */\nexport const CardFooter = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardFooter(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.footer, className)} {...rest} />;\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Card/Card.css.ts.vanilla.css?source=LmRudWYxdTAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLWJlc3Rvdy1zcGFjZS00KTsKICBtaW4td2lkdGg6IDA7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYmVzdG93LXJhZGl1cy1sZyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJnLWRlZmF1bHQpOwogIGNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItZmctZGVmYXVsdCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWJlc3Rvdy1mb250LWZhbWlseS1zYW5zKTsKfQouZG51ZjF1MSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItYm9yZGVyLWRlZmF1bHQpOwp9Ci5kbnVmMXUyIHsKICBib3gtc2hhZG93OiB2YXIoLS1iZXN0b3ctc2hhZG93LW1kKTsKfQouZG51ZjF1MyB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJnLXN1YnRsZSk7Cn0KLmRudWYxdTQgewogIHBhZGRpbmc6IDA7Cn0KLmRudWYxdTUgewogIHBhZGRpbmc6IHZhcigtLWJlc3Rvdy1zcGFjZS00KTsKfQouZG51ZjF1NiB7CiAgcGFkZGluZzogdmFyKC0tYmVzdG93LXNwYWNlLTYpOwp9Ci5kbnVmMXU3IHsKICBwYWRkaW5nOiB2YXIoLS1iZXN0b3ctc3BhY2UtOCk7Cn0KLmRudWYxdTggewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLWJlc3Rvdy1zcGFjZS0xKTsKfQouZG51ZjF1OSB7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXNtKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtbm9ybWFsKTsKfQouZG51ZjF1YSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgZ2FwOiB2YXIoLS1iZXN0b3ctc3BhY2UtMik7Cn0';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var body = 'dnuf1u9';\nexport var card = /* @__PURE__ */ _7a468({defaultClassName:'dnuf1u0',variantClassNames:{variant:{outline:'dnuf1u1',elevated:'dnuf1u2',soft:'dnuf1u3'},padding:{none:'dnuf1u4',sm:'dnuf1u5',md:'dnuf1u6',lg:'dnuf1u7'}},defaultVariants:{variant:'outline',padding:'md'},compoundVariants:[]});\nexport var footer = 'dnuf1ua';\nexport var header = 'dnuf1u8';","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './DescriptionList.css';\n\nexport interface DescriptionListItem {\n /** 이름 (dt) */\n term: ReactNode;\n /** 값 (dd) */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** 이름–값 목록 */\n items: DescriptionListItem[];\n /** horizontal(기본): 이름 왼쪽·값 오른쪽. vertical: 이름 위·값 아래(좁은 곳·긴 값) */\n layout?: 'horizontal' | 'vertical';\n /** horizontal 일 때 이름 열의 폭 (기본 30%) — 예: \"8rem\" */\n termWidth?: string;\n /** 항목 사이에 구분선 */\n divided?: boolean;\n}\n\n/**\n * 이름–값 목록(주문 상세의 고객·연락처·금액 등). `<dl>` 안에 항목마다 `<div><dt/><dd/></div>` 로 그려 스크린리더가 쌍으로 읽는다.\n * hook 이 없어 서버 컴포넌트로도 렌더링된다.\n */\nexport const DescriptionList = /* @__PURE__ */ forwardRef<HTMLDListElement, DescriptionListProps>(\n function DescriptionList({ items, layout = 'horizontal', termWidth, divided, className, style, ...rest }, ref) {\n return (\n <dl\n ref={ref}\n className={cx(styles.root, className)}\n style={termWidth ? { ...assignInlineVars({ [styles.termWidth]: termWidth }), ...style } : style}\n {...rest}\n >\n {items.map((item, index) => (\n <div key={index} className={styles.item({ layout, divided })}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </div>\n ))}\n </dl>\n );\n },\n);\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/DescriptionList/DescriptionList.css.ts.vanilla.css?source=Ll8xNGcwb3Q0MSB7CiAgLS1fMTRnMG90NDA6IDMwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1iZXN0b3ctZm9udC1mYW1pbHktc2Fucyk7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXNtKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtbm9ybWFsKTsKfQouXzE0ZzBvdDQyIHsKICBtaW4td2lkdGg6IDA7Cn0KLl8xNGcwb3Q0MyB7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLV8xNGcwb3Q0MCkgbWlubWF4KDAsIDFmcik7CiAgY29sdW1uLWdhcDogdmFyKC0tYmVzdG93LXNwYWNlLTQpOwogIHBhZGRpbmctYmxvY2s6IHZhcigtLWJlc3Rvdy1zcGFjZS0yKTsKfQouXzE0ZzBvdDQ0IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiB2YXIoLS1iZXN0b3ctc3BhY2UtMSk7CiAgcGFkZGluZy1ibG9jazogdmFyKC0tYmVzdG93LXNwYWNlLTIpOwp9Ci5fMTRnMG90NDU6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJlc3Rvdy1jb2xvci1ib3JkZXItZGVmYXVsdCk7Cn0KLl8xNGcwb3Q0NiB7CiAgbWFyZ2luOiAwOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS1iZXN0b3ctZm9udC13ZWlnaHQtbWVkaXVtKTsKICBjb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWZnLW11dGVkKTsKICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKfQouXzE0ZzBvdDQ3IHsKICBtYXJnaW46IDA7CiAgY29sb3I6IHZhcigtLWJlc3Rvdy1jb2xvci1mZy1kZWZhdWx0KTsKICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKfQ';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var description = '_14g0ot47';\nexport var item = /* @__PURE__ */ _7a468({defaultClassName:'_14g0ot42',variantClassNames:{layout:{horizontal:'_14g0ot43',vertical:'_14g0ot44'},divided:{true:'_14g0ot45'}},defaultVariants:{layout:'horizontal'},compoundVariants:[]});\nexport var root = '_14g0ot41';\nexport var term = '_14g0ot46';\nexport var termWidth = 'var(--_14g0ot40)';","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Divider.css';\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n /** 방향. vertical 은 flex 행 안에서 부모 높이를 채운다 */\n orientation?: 'horizontal' | 'vertical';\n /** 시각적 구분만 하고 의미가 없으면 true — 스크린리더에서 숨긴다 */\n decorative?: boolean;\n /**\n * 가운데에 표시할 텍스트 (예: \"또는\"). horizontal 에서만 쓴다.\n * separator 역할의 자식은 스크린리더가 읽지 않으므로, 텍스트가 있으면 선만 숨기고 텍스트는 읽히게 둔다.\n */\n children?: ReactNode;\n}\n\nexport const Divider = /* @__PURE__ */ forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', decorative, className, children, ...rest },\n ref,\n) {\n if (children && orientation === 'horizontal') {\n return (\n <div ref={ref} className={cx(styles.labeled, className)} {...rest}>\n <span className={styles.line} aria-hidden />\n {children}\n <span className={styles.line} aria-hidden />\n </div>\n );\n }\n\n const a11y = decorative\n ? { role: 'none' }\n : { role: 'separator', 'aria-orientation': orientation === 'vertical' ? ('vertical' as const) : undefined };\n return <div ref={ref} className={cx(styles.divider({ orientation }), className)} {...a11y} {...rest} />;\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Divider/Divider.css.ts.vanilla.css?source=Ll8xdDNncTh2MCB7CiAgZmxleC1zaHJpbms6IDA7CiAgYm9yZGVyOiBub25lOwogIG1hcmdpbjogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItYm9yZGVyLWRlZmF1bHQpOwp9Ci5fMXQzZ3E4djEgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMXB4Owp9Ci5fMXQzZ3E4djIgewogIHdpZHRoOiAxcHg7CiAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICBtaW4taGVpZ2h0OiAxZW07Cn0KLl8xdDNncTh2MyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tYmVzdG93LXNwYWNlLTMpOwogIHdpZHRoOiAxMDAlOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1iZXN0b3ctZm9udC1mYW1pbHktc2Fucyk7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXhzKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtdGlnaHQpOwogIGNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItZmctc3VidGxlKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5fMXQzZ3E4djQgewogIGZsZXg6IDE7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKfQ';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var divider = /* @__PURE__ */ _7a468({defaultClassName:'_1t3gq8v0',variantClassNames:{orientation:{horizontal:'_1t3gq8v1',vertical:'_1t3gq8v2'}},defaultVariants:{orientation:'horizontal'},compoundVariants:[]});\nexport var labeled = '_1t3gq8v3';\nexport var line = '_1t3gq8v4';","import { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Progress.css';\n\nexport interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** 현재 값 (0 ~ max). 생략하거나 null 이면 진행률을 모르는 상태(indeterminate)로 움직이는 막대를 보여 준다 */\n value?: number | null;\n /** 최댓값 */\n max?: number;\n /** 막대 위에 보이는 레이블. progressbar 의 이름이 된다 */\n label?: ReactNode;\n /** 레이블이 없을 때 스크린리더용 이름 */\n 'aria-label'?: string;\n /** 오른쪽에 값 텍스트(기본 \"42%\")를 보여 준다 */\n showValue?: boolean;\n /** 값 텍스트 형식. 화면 표시와 스크린리더(aria-valuetext)에 함께 쓴다 (예: (v, max) => `${v}/${max}개`) */\n formatValue?: (value: number, max: number) => string;\n /** 막대 두께 (sm 4px · md 8px · lg 12px) */\n size?: 'sm' | 'md' | 'lg';\n /** 의미 색상 */\n color?: 'primary' | 'neutral' | 'success' | 'warning' | 'danger';\n}\n\nconst defaultFormat = (value: number, max: number) => `${Math.round((value / max) * 100)}%`;\n\nexport const Progress = /* @__PURE__ */ forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n {\n value,\n max = 100,\n label,\n 'aria-label': ariaLabel,\n showValue,\n formatValue = defaultFormat,\n size,\n color,\n className,\n ...rest\n },\n ref,\n) {\n const labelId = useId();\n const isIndeterminate = value === undefined || value === null;\n const safeMax = max > 0 ? max : 100;\n const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value));\n const valueText = isIndeterminate ? undefined : formatValue(clamped, safeMax);\n\n return (\n <div ref={ref} className={cx(styles.root, className)} {...rest}>\n {(label || (showValue && valueText)) && (\n <div className={styles.header}>\n {label && (\n <span id={labelId} className={styles.label}>\n {label}\n </span>\n )}\n {/* 스크린리더는 progressbar 의 aria-valuetext 로 읽으므로 화면용 텍스트는 숨긴다 */}\n {showValue && valueText && (\n <span className={styles.value} aria-hidden>\n {valueText}\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : ariaLabel}\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-valuenow={isIndeterminate ? undefined : clamped}\n aria-valuetext={valueText}\n className={styles.track({ size })}\n >\n <div\n className={styles.indicator({ color })}\n data-state={isIndeterminate ? 'indeterminate' : clamped >= safeMax ? 'complete' : 'loading'}\n style={isIndeterminate ? undefined : { width: `${(clamped / safeMax) * 100}%` }}\n />\n </div>\n </div>\n );\n});\n","import 'src/styles/animations.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51T3WqDMBS-9ynOjaBsGYlV27qbPsbuRhqjDdVEYjZahu8-plspGjPtXeB8-f4453Dm10LTmrfwTkrdHLcYw5cHUGhV9w8A1VAmzDUD_OoBdB6AUeMRGUadd5gSkllCMk-IHYSR2yGA0VS2hdJ1NjwraniAEuw_A4p3fggtoxUP8Ms-Df_J5CZL8I2MhA7HG3cFq0VmG3sku9VxvKLjB9tc0FsydmFL9xYwWrGAYOzDE0RxcwmnPuwfsUs8dYhrZX56xTkvnVq_uE16h7SKbcdiR8rOpVYfMkeNaoURSmbQZ5yeoRWL7sFWzd1Y88RFeTK2Q_-bfFIdIKRpLi6IMqZ0LpRETEnDpUEDyhVzPye5gthiy5WSLtuhvq6lexMlN2z3DVsBqiZDBQAA';\nimport 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Progress/Progress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA41Vy27bMBC8-yuIAgXiAw05cZpUQYECvfQDeiuKYCWu5G0oUl0u_WiRfy9IxY2lOI1hwIY5q5nZ5ZBa3C9l8_CrKAr1Z6aUodBb2Jeqsbi7m6n8qw0x1kLelar2NnYuIS30pdoAX2hdYRC_1aGHGvXlPKFbMrIu1bIo3mca70Q30JHdTx46QnQAF-Z3s8fZ4uBqedoVWGqdJsEulKqCgJYcJuBnDELNXtfeCTop1eCpQtki_tf21fyfz0C_8ZTLtK5DlwuToF4jtWs5VXoEa0nf47Yuc1u5cvsqx4DoDg3FQbT21vOkNK_pptUGG4h2InSVhTrglpwml20FAZZSQRT_JmkXBc3zZDbABE60ix0y1aUSqKIFTgthJLzKwr0PNOSG0YLQJm-S3yA31m9LtSZjhm2Z5KXybJA1g6EYJuaGRd1Ea7OzCuqHln10Rr_eS3XcS-V3OqzBJAvkAooq8mfZ716ZQ4iVWBzP9jq3eMjAqt-N0A8j9HaC3ozQ5eUEvh3Dp4dCbo1MkhBhcIdJ50mO2zCRIYHaee7AzhVCQO2jjEW_GxBI8RD89I6cQUHuyIHgux_Z0NMmrQY74KiDQfN-2XJf3RSglotVGOjJJQVFriFHgiOpj5nurI3rmTrgvRbcTbIN55M4jMJgT5BU55OEWNcYwgmS-nySLbAj154gMeeTGHAt8jPH53RHgLroGRvkoBlNrNHozh8OX_o_zwKTjI2z4_xwjT6OCt_MxYvjOwrHgVQp30NNsi9VsbgeZJ69N56T5dxgKBXU6baYWF49qfko6SYr84EN3pJRX8BtIHzDnbz0__TUsYIGk14Vx-ZeTv4rtWubjuCT178Elo90LAcAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var header = '_1tvkq001';\nexport var indicator = /* @__PURE__ */ _7a468({defaultClassName:'_1tvkq008',variantClassNames:{color:{primary:'_1tvkq009',neutral:'_1tvkq00a',success:'_1tvkq00b',warning:'_1tvkq00c',danger:'_1tvkq00d'}},defaultVariants:{color:'primary'},compoundVariants:[]});\nexport var label = '_1tvkq002';\nexport var root = '_1tvkq000';\nexport var track = /* @__PURE__ */ _7a468({defaultClassName:'_1tvkq004',variantClassNames:{size:{sm:'_1tvkq005',md:'_1tvkq006',lg:'_1tvkq007'}},defaultVariants:{size:'md'},compoundVariants:[]});\nexport var value = '_1tvkq003';","import type { space } from '@bestow-ui/tokens';\nimport { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Stack.css';\n\nexport interface StackProps extends HTMLAttributes<HTMLElement> {\n /** 렌더링할 요소 */\n as?: ElementType;\n /** 배치 방향 */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** 자식 사이 간격 (space 토큰 키) */\n gap?: keyof typeof space;\n /** 교차축 정렬 (align-items) */\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** 주축 정렬 (justify-content) */\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** 줄바꿈 허용 */\n wrap?: boolean;\n}\n\nexport const Stack = /* @__PURE__ */ forwardRef<HTMLElement, StackProps>(function Stack(\n { as: Component = 'div', direction, gap, align, justify, wrap, className, ...rest },\n ref,\n) {\n return (\n <Component ref={ref} className={cx(styles.stack({ direction, gap, align, justify, wrap }), className)} {...rest} />\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Stack/Stack.css.ts.vanilla.css?source=#H4sIAAAAAAAAA33TzW7DIAwH8HueguN2oOr3mvRhJkLchIxABm6zbOq7T001Tc6HL5x-_oMts3rf1N9pVadr8ZMIUZjYWtVn4mLh65wI0RgnO1NglYn1Obknqz-_GfyDycIE0Gi8y0TwHVHbWaW9vTaOwN1SnAxwgxCB6D0TO1twGApK1WbipsKLlDlE9J2MrdIg168EH1m8ofiNxVuKTyzeUZyyeE-xYvGB4pzFR4o1i08UF_zoRoMGXo-Gd-H16NnloJU1pZMGoYnPnZYRVUAiq6nU4BACUWYhD1xBXD11EQOgrgj7mLJcRbDG0cW1g6uvEc2ll9o7BIeLrTTzeqYdx-SOW_Lz9jn3HLADoJ-55QpU8NfRBZ-chxs42xMf_r9_Fx778DjPyf0X9CUDec0EAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var stack = /* @__PURE__ */ _7a468({defaultClassName:'_1jz9hj90',variantClassNames:{direction:{row:'_1jz9hj91',column:'_1jz9hj92','row-reverse':'_1jz9hj93','column-reverse':'_1jz9hj94'},gap:{'0':'_1jz9hj95','1':'_1jz9hj96','2':'_1jz9hj97','3':'_1jz9hj98','4':'_1jz9hj99','5':'_1jz9hj9a','6':'_1jz9hj9b','8':'_1jz9hj9c','10':'_1jz9hj9d','12':'_1jz9hj9e','16':'_1jz9hj9f'},align:{start:'_1jz9hj9g',center:'_1jz9hj9h',end:'_1jz9hj9i',stretch:'_1jz9hj9j',baseline:'_1jz9hj9k'},justify:{start:'_1jz9hj9l',center:'_1jz9hj9m',end:'_1jz9hj9n',between:'_1jz9hj9o',around:'_1jz9hj9p',evenly:'_1jz9hj9q'},wrap:{true:'_1jz9hj9r'}},defaultVariants:{direction:'column'},compoundVariants:[]});","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Typography.css';\n\nexport type TypographyVariant = 'display' | 'h1' | 'h2' | 'h3' | 'h4' | 'body-lg' | 'body' | 'body-sm' | 'caption';\n\nconst defaultElement: Record<TypographyVariant, ElementType> = {\n display: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n 'body-lg': 'p',\n body: 'p',\n 'body-sm': 'p',\n caption: 'span',\n};\n\nexport interface TypographyProps extends Omit<HTMLAttributes<HTMLElement>, 'color'> {\n /** 텍스트 스타일 */\n variant?: TypographyVariant;\n /** 렌더링할 요소. 기본값은 variant 에 따라 결정된다 (h1, p, span 등) */\n as?: ElementType;\n /** 글자 색상 */\n color?: 'default' | 'muted' | 'subtle' | 'primary' | 'danger' | 'success' | 'warning' | 'inherit';\n /** variant 의 기본 굵기를 덮어쓴다 */\n weight?: 'regular' | 'medium' | 'semibold' | 'bold';\n /** 정렬 */\n align?: 'start' | 'center' | 'end';\n /** 한 줄로 자르고 말줄임표를 표시한다 */\n truncate?: boolean;\n}\n\nexport const Typography = /* @__PURE__ */ forwardRef<HTMLElement, TypographyProps>(function Typography(\n { variant = 'body', as, color, weight, align, truncate, className, ...rest },\n ref,\n) {\n const Component = as ?? defaultElement[variant];\n return (\n <Component\n ref={ref}\n className={cx(styles.typography({ variant, color, weight, align, truncate }), className)}\n {...rest}\n />\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Typography/Typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA82Vy26DMBBF93yFl83CUZK-ydc4eDDTjm00NiVt1X-vQtTUCakAVVW6YeF7jzmyxjB_Rk_oF-I9E8IqNuhysVhnQpTeRVkqi_SaixfFV1JuIETfyiSRQbkwW2cf2Xy_0bLbqGsEfINz5G5d3mxpdnhLC2iqeK67T-TGk-7qhA5k9WM9iWXcPfcQxAgsQ60KdCYXcjFfrMAm1quR1tf_yvp6pPXqwtbLI-ubkdaTpANY_I34we52pB2ZS9jd_YUdg2lI8VQ5BlJb0Kne_Ug9q_9ez3m2ilK7h5F2wV7C7nHstQiXsFOdXeHJ8wncrcnSSA2lauhoXDfDlG3i8QwVw0xoNpEghfQAVDNaxa8ywvZIEAY4rZwB7mHlABaaooAQepwZ4FrFDp3pcVXKoauAMSYxfo_OhIk44E8TcAsaG5vSzxPo5Dt44GkCf8rajt2dllSExuUiRMXp0bheowAXgZOK71XA6SSvu9y_AJfk21xUqDW49RfzHQAR1gHDLmorjND9BSEXzres6nX28Ql_7_cqbQkAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var typography = /* @__PURE__ */ _7a468({defaultClassName:'kiolio0',variantClassNames:{variant:{display:'kiolio1',h1:'kiolio2',h2:'kiolio3',h3:'kiolio4',h4:'kiolio5','body-lg':'kiolio6',body:'kiolio7','body-sm':'kiolio8',caption:'kiolio9'},color:{'default':'kiolioa',muted:'kioliob',subtle:'kiolioc',primary:'kioliod',danger:'kiolioe',success:'kioliof',warning:'kioliog',inherit:'kiolioh'},weight:{regular:'kiolioi',medium:'kiolioj',semibold:'kioliok',bold:'kioliol'},align:{start:'kioliom',center:'kiolion',end:'kiolioo'},truncate:{true:'kioliop'}},defaultVariants:{variant:'body',color:'default'},compoundVariants:[]});","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { visuallyHidden } from '../../styles/visuallyHidden.css';\nimport { cx } from '../../utils/cx';\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n /** 렌더링할 요소 (기본 span) */\n as?: ElementType;\n}\n\n/**\n * 화면에는 보이지 않고 스크린리더만 읽는 글자. 아이콘만 있는 열 머리글(\"작업\"), 보이는 글자에 붙는 보충 설명 등에 쓴다.\n * `display: none`·`hidden` 과 달리 보조기술이 읽는다. hook 이 없어 서버 컴포넌트로도 렌더링된다.\n */\nexport const VisuallyHidden = /* @__PURE__ */ forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Component = 'span', className, ...rest },\n ref,\n) {\n return <Component ref={ref} className={cx(visuallyHidden, className)} {...rest} />;\n});\n"],"mappings":"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","names":["value","item","Badge","forwardRef","_7a468","jsx","forwardRef","Card","CardHeader","CardBody","CardFooter","forwardRef","_7a468","jsx","jsxs","forwardRef","DescriptionList","termWidth","item","forwardRef","_7a468","jsx","jsxs","forwardRef","Divider","forwardRef","_7a468","header","root","jsx","jsxs","value","forwardRef","Progress","label","root","header","forwardRef","_7a468","jsx","forwardRef","Stack","forwardRef","_7a468","jsx","forwardRef","Typography","forwardRef","jsx","forwardRef","VisuallyHidden"]}
1
+ {"version":3,"sources":["../src/theme/color.ts","../src/theme/presets.ts","../src/i18n/en.ts","../src/components/AgreementGroup/agreements.ts","../src/components/Badge/Badge.tsx","../src/components/Badge/Badge.css.ts","../src/components/Card/Card.tsx","../src/components/Card/Card.css.ts","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.css.ts","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.css.ts","../src/components/Progress/Progress.tsx","../src/components/Progress/Progress.css.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.css.ts","../src/components/Typography/Typography.tsx","../src/components/Typography/Typography.css.ts","../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["// 대표색 하나로 intent 색 세트를 만드는 색 계산 유틸.\n// OKLCH(사람이 느끼는 밝기에 가까운 색 공간)에서 밝기를 조절하고, WCAG 대비(4.5:1)를 만족하도록 글자색을 찾는다.\nimport { darkColors, lightColors, palette } from '@bestow-ui/tokens';\nimport type { ThemeInput } from './createTheme';\n\ntype Rgb = [number, number, number]; // 0~1, sRGB\ninterface Oklch {\n l: number;\n c: number;\n h: number;\n}\n\nexport function parseHex(hex: string): Rgb {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m) throw new Error(`올바른 hex 색이 아니에요: \"${hex}\" (예: \"#7c3aed\")`);\n let h = m[1]!;\n if (h.length === 3) h = h.replace(/./g, (c) => c + c);\n return [0, 2, 4].map((i) => parseInt(h.slice(i, i + 2), 16) / 255) as Rgb;\n}\n\nexport function toHex(rgb: Rgb): string {\n return `#${rgb\n .map((v) =>\n Math.round(Math.min(1, Math.max(0, v)) * 255)\n .toString(16)\n .padStart(2, '0'),\n )\n .join('')}`;\n}\n\nconst toLinear = (c: number) => (c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4);\nconst fromLinear = (c: number) => (c <= 0.0031308 ? 12.92 * c : 1.055 * c ** (1 / 2.4) - 0.055);\n\nfunction rgbToOklch([r, g, b]: Rgb): Oklch {\n const [lr, lg, lb] = [toLinear(r), toLinear(g), toLinear(b)];\n const l_ = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n const m_ = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n const s_ = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;\n const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;\n const bb = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;\n return { l: L, c: Math.hypot(a, bb), h: Math.atan2(bb, a) };\n}\n\nfunction oklchToRgbUnclamped({ l, c, h }: Oklch): Rgb {\n const a = c * Math.cos(h);\n const b = c * Math.sin(h);\n const l_ = (l + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m_ = (l - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s_ = (l - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n fromLinear(4.0767416621 * l_ - 3.3077115913 * m_ + 0.2309699292 * s_),\n fromLinear(-1.2684380046 * l_ + 2.6097574011 * m_ - 0.3413193965 * s_),\n fromLinear(-0.0041960863 * l_ - 0.7034186147 * m_ + 1.707614701 * s_),\n ];\n}\n\nconst inGamut = (rgb: Rgb) => rgb.every((v) => v >= -1e-4 && v <= 1 + 1e-4);\n\n/** sRGB 범위를 벗어나면 채도(c)를 줄여 범위 안으로 맞춘다. */\nfunction oklchToRgb(color: Oklch): Rgb {\n const l = Math.min(1, Math.max(0, color.l));\n let rgb = oklchToRgbUnclamped({ ...color, l });\n if (inGamut(rgb)) return rgb;\n let lo = 0;\n let hi = color.c;\n for (let i = 0; i < 20; i++) {\n const mid = (lo + hi) / 2;\n if (inGamut(oklchToRgbUnclamped({ l, c: mid, h: color.h }))) lo = mid;\n else hi = mid;\n }\n rgb = oklchToRgbUnclamped({ l, c: lo, h: color.h });\n return rgb;\n}\n\nfunction luminance([r, g, b]: Rgb): number {\n return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);\n}\n\n/** WCAG 대비율 (1 ~ 21) */\nexport function contrastRatio(a: string, b: string): number {\n const [la, lb] = [luminance(parseHex(a)), luminance(parseHex(b))];\n return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);\n}\n\n/** fg 를 alpha 만큼 bg 위에 겹친 결과 색 */\nfunction blend(fg: string, alpha: number, bg: string): string {\n const [f, b] = [parseHex(fg), parseHex(bg)];\n return toHex(f.map((v, i) => v * alpha + b[i]! * (1 - alpha)) as Rgb);\n}\n\nconst withL = (base: Oklch, l: number, c = base.c) => toHex(oklchToRgb({ l, c, h: base.h }));\n\n/** 대상 배경들 위에서 대비 4.5 를 넘을 때까지 밝기를 step 만큼 옮긴다. */\nfunction findReadable(base: Oklch, startL: number, step: number, backgrounds: string[]): string {\n let l = startL;\n for (let i = 0; i < 40; i++) {\n const hex = withL(base, l);\n if (backgrounds.every((bg) => contrastRatio(hex, bg) >= 4.5)) return hex;\n l = Math.min(1, Math.max(0, l + step));\n }\n return step < 0 ? palette.black : palette.white;\n}\n\n/**\n * solid 의 hover 색: 밝기를 delta 만큼 옮기되, 그 결과에서 글자색(contrast) 대비가 4.5 아래로 떨어지면 반대 방향으로 옮긴다.\n * (예: 다크 모드에서 파란 버튼을 밝게 하면 흰 글자 대비가 떨어지므로 어둡게 한다)\n */\nfunction hoverFor(base: Oklch, delta: number, contrast: string): string {\n const preferred = withL(base, Math.min(1, Math.max(0, base.l + delta)));\n if (contrastRatio(contrast, preferred) >= 4.5) return preferred;\n return withL(base, Math.min(1, Math.max(0, base.l - delta)));\n}\n\n/**\n * solid 배경과 그 위 글자색(contrast). 흰 글자가 4.5 를 넘으면 흰색, 아니면 짙은 글자.\n * 둘 다 4.5 미만인 중간 밝기 색(초록 #059669, 주황 #ea580c 등)은 solid 의 밝기를 가장 적게 옮겨 4.5 를 맞춘다\n * (같은 거리면 어둡게 + 흰 글자를 먼저 고른다).\n */\nfunction solidWithContrast(color: string): { solid: string; contrast: string } {\n const white = palette.white;\n const dark = palette.gray[900];\n if (contrastRatio(white, color) >= 4.5) return { solid: color, contrast: white };\n if (contrastRatio(dark, color) >= 4.5) return { solid: color, contrast: dark };\n const base = rgbToOklch(parseHex(color));\n for (let delta = 0.005; delta <= 1; delta += 0.005) {\n const darker = withL(base, Math.max(0, base.l - delta));\n if (contrastRatio(white, darker) >= 4.5) return { solid: darker, contrast: white };\n const lighter = withL(base, Math.min(1, base.l + delta));\n if (contrastRatio(dark, lighter) >= 4.5) return { solid: lighter, contrast: dark };\n }\n return { solid: palette.black, contrast: white };\n}\n\nconst rgba = (hex: string, alpha: number) => {\n const [r, g, b] = parseHex(hex).map((v) => Math.round(v * 255));\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';\n\n/**\n * 대표색 하나로 intent(primary 등)의 라이트·다크 색 세트를 만든다. 결과는 createTheme 에 넘긴다.\n * - solid 는 넘긴 색을 그대로 쓴다 (다크모드에서 너무 어두우면 조금 밝힌다). 단 흰 글자·짙은 글자 모두\n * 대비 4.5:1 이 안 나오는 중간 밝기 색이면 4.5 가 나올 만큼만 밝기를 옮긴다.\n * - text 와 contrast(solid 위 글자색)는 WCAG AA 대비 4.5:1 을 만족하도록 계산한다.\n * - intent 가 'primary' 면 포커스 링 색(border.focus)도 함께 바꾼다.\n *\n * @example createTheme(createIntentColors('primary', '#7c3aed'))\n */\nexport function createIntentColors(intent: IntentName, color: string): ThemeInput {\n const input = toHex(parseHex(color));\n const base = rgbToOklch(parseHex(input));\n\n // 라이트\n const lightSubtle = withL(base, 0.97, Math.min(base.c, 0.12) * 0.3);\n const lightSubtleHover = withL(base, 0.93, Math.min(base.c, 0.12) * 0.45);\n const { solid, contrast: lightContrast } = solidWithContrast(input);\n const light = {\n solid,\n solidHover: hoverFor(rgbToOklch(parseHex(solid)), -0.06, lightContrast),\n contrast: lightContrast,\n subtle: lightSubtle,\n subtleHover: lightSubtleHover,\n text: findReadable(base, Math.min(base.l, 0.55), -0.02, [lightColors.bg.default, lightSubtle, lightSubtleHover]),\n };\n\n // 다크\n const darkBg = darkColors.bg.default;\n const { solid: darkSolid, contrast: darkContrast } = solidWithContrast(base.l < 0.5 ? withL(base, 0.55) : input);\n const darkBase = rgbToOklch(parseHex(darkSolid));\n const darkSubtleOnBg = blend(darkSolid, 0.16, darkBg);\n const darkSubtleHoverOnBg = blend(darkSolid, 0.26, darkBg);\n const dark = {\n solid: darkSolid,\n solidHover: hoverFor(darkBase, 0.06, darkContrast),\n contrast: darkContrast,\n subtle: rgba(darkSolid, 0.16),\n subtleHover: rgba(darkSolid, 0.26),\n text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg]),\n };\n\n // primary 는 포커스 링(border.focus)도 브랜드 색을 따라가게 한다. 다크는 어두운 배경에서 잘 보이도록 solid 보다 밝게.\n // 포커스 링은 그래픽이라 배경과 3:1 이상이어야 한다(WCAG 1.4.11). 노랑·하늘색처럼 밝은 색은 라이트에서 미달이므로\n // 그때는 배경 대비 4.5:1 이 보장된 text 색을 쓴다.\n const focusOn = (candidate: string, fallback: string, bg: string) =>\n contrastRatio(candidate, bg) >= 3 ? candidate : fallback;\n const focus =\n intent === 'primary'\n ? {\n light: { border: { focus: focusOn(light.solid, light.text, lightColors.bg.default) } },\n dark: {\n border: { focus: focusOn(withL(darkBase, Math.min(1, darkBase.l + 0.06)), dark.text, darkBg) },\n },\n }\n : undefined;\n\n return {\n light: { color: { [intent]: light, ...focus?.light } },\n dark: { color: { [intent]: dark, ...focus?.dark } },\n } as ThemeInput;\n}\n","import type { ThemeInput } from './createTheme';\n\n/**\n * 입력 칸·체크 컨트롤 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비) — 2.0 에서 기본값이 될 예정.\n * - 입력 칸(border.input): 기본 border.default 는 흰 배경과 1.3:1. hover 는 테두리보다 더 진하게(다크는 더 밝게).\n * - Checkbox·Radio 테두리, 꺼진 Switch, Stepper 예정 단계(border.control): 기본 border.strong 은 라이트 흰 배경과 2.07:1.\n *\n * @example\n * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>\n * createTheme(createIntentColors('primary', '#7c3aed'), strongInputBorders) // 브랜드 테마와 함께\n */\n// 색은 palette 를 import 하지 않고 값으로 적는다 — `palette.gray[600]` 같은 속성 읽기는 번들러가 지우지 못해,\n// 이 값을 쓰지 않는 앱에도 tokens 전체가 딸려 왔다(\"앱 기본\" +460 B). palette 와 같은지는 presets.test.ts 가 확인한다.\nexport const strongInputBorders: ThemeInput = /* @__PURE__ */ Object.freeze({\n // 라이트: gray600 / gray700 — 흰 배경 5.18:1, bg.subtle(gray50) 4.91:1\n // 체크 컨트롤: gray600 — 흰 배경 5.18:1\n light: { color: { border: { input: '#666e76', inputHover: '#495057', control: '#666e76' } } },\n // 다크: gray500 / gray300 — gray600 은 bg.subtle(gray900) 위에서 2.98:1 이라 한 단계 밝게. bg.default 8.57:1, bg.subtle 7.43:1\n // 체크 컨트롤: gray500 — 다크 기본값(border.strong)과 같다(이미 8.57:1)\n dark: { color: { border: { input: '#adb5bd', inputHover: '#dee2e6', control: '#adb5bd' } } },\n});\n","import type { BestowMessages } from './LocaleProvider';\n\nconst WEEKDAYS_LONG = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] as const;\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n] as const;\n\n/**\n * 영어 문구. `<LocaleProvider messages={en}>` 로 쓴다. 따로 import 할 때만 번들에 들어간다.\n * 한국 서비스 전용 부품(사업자등록번호 등)의 문구도 영어로 바뀌지만 서식(하이픈 위치 등)은 그대로다.\n */\nexport const en: BestowMessages = {\n close: 'Close',\n loading: 'Loading',\n notifications: 'Notifications',\n breadcrumb: 'Breadcrumb',\n pagination: 'Pagination',\n paginationPrevious: 'Previous page',\n paginationNext: 'Next page',\n paginationPage: (page) => `Page ${page}`,\n newWindow: '(opens in a new window)',\n noResults: 'No results',\n openList: 'Show options',\n clearSelection: 'Clear selection',\n skipToContent: 'Skip to main content',\n decrement: 'Decrease',\n increment: 'Increase',\n steps: 'Progress',\n stepCompleted: 'completed',\n fileSelect: 'Choose files',\n fileDropHint: 'or drag and drop here',\n fileList: 'Selected files',\n fileRemove: (name) => `Remove ${name}`,\n filesSelected: (count) => `${count} ${count === 1 ? 'file' : 'files'} selected`,\n fileRemoved: (name) => `${name} removed`,\n fileTooLarge: (name, maxSize) => `${name}: files must be ${maxSize} or smaller.`,\n fileTypeNotAllowed: (name) => `${name}: this file type is not allowed.`,\n fileTooMany: (maxFiles) => `You can upload up to ${maxFiles} files.`,\n dateRangeStart: 'Start date',\n dateRangeEnd: 'End date',\n dateRangePresets: 'Quick select',\n errorSummaryTitle: (count) => `There ${count === 1 ? 'is 1 problem' : `are ${count} problems`} with your answers`,\n rangeStart: 'minimum',\n rangeEnd: 'maximum',\n agreeAll: 'Agree to all',\n required: 'Required',\n optional: 'Optional',\n show: 'View',\n hide: 'Hide',\n verificationCode: 'Verification code',\n verificationCodeHint: (length, type) => `Enter the ${length}-${type === 'numeric' ? 'digit' : 'character'} code.`,\n resend: 'Resend',\n verificationExpired: 'The code has expired. Please request a new one.',\n phoneNumber: 'Phone number',\n businessNumber: 'Business registration number',\n businessNumberInvalid: 'This business registration number is not valid. Please check it again.',\n businessNumberIncomplete: 'Enter all 10 digits.',\n amount: 'Amount',\n currencyUnit: 'KRW',\n address: 'Address',\n addressSearch: 'Find address',\n addressSearchDescription: 'Search by road name, building name, or lot number.',\n postalCode: 'Postal code',\n baseAddress: 'Address',\n baseAddressPlaceholder: 'Select \"Find address\" to choose an address',\n detailAddress: 'Address line 2',\n detailAddressPlaceholder: 'Apartment, suite, unit, etc.',\n addressLoading: 'Loading address search',\n addressLoadError: 'Could not load address search. Please try again later.',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n monthTitle: (year, month) => `${MONTHS[month - 1]} ${year}`,\n weekdaysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n weekdaysLong: WEEKDAYS_LONG,\n dayLabel: (date, weekdayLong) =>\n `${date.getDate()}, ${weekdayLong}, ${MONTHS[date.getMonth()]} ${date.getFullYear()}`,\n holiday: 'holiday',\n today: 'today',\n date: 'Date',\n openCalendar: 'Choose date',\n calendar: 'Calendar',\n dateInvalid: 'This date does not exist.',\n dateUnavailable: 'This date is not available.',\n dateIncomplete: 'Enter the date as YYYY-MM-DD.',\n};\n","import type { ReactNode } from 'react';\n\n// 서버 컴포넌트에서도 부를 수 있도록 컴포넌트(hook·Radix) 파일과 분리한 순수 타입·함수\n\nexport interface AgreementItem {\n value: string;\n /** 약관 이름 (예: \"서비스 이용약관 동의\") */\n label: ReactNode;\n /** 필수 동의 여부. 이름 앞에 \"필수\"/\"선택\" 이 붙는다 */\n required?: boolean;\n /** 펼쳐서 보여 줄 약관 내용. 있으면 \"보기\" 버튼이 생긴다 */\n content?: ReactNode;\n}\n\n/** 필수 항목에 모두 동의했는지 */\nexport function hasAllRequiredAgreements(items: AgreementItem[], value: string[]): boolean {\n return items.every((item) => !item.required || value.includes(item.value));\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Badge.css';\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** 시각적 스타일 */\n variant?: 'solid' | 'soft' | 'outline';\n /** 의미 색상 */\n color?: 'primary' | 'neutral' | 'danger' | 'success' | 'warning';\n /** 크기 */\n size?: 'sm' | 'md' | 'lg';\n /** 텍스트 앞에 표시할 아이콘 (장식용 — 의미는 텍스트로 전달한다) */\n startIcon?: ReactNode;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant, color, size, startIcon, className, children, ...rest },\n ref,\n) {\n return (\n <span ref={ref} className={cx(styles.badge({ variant, color, size }), className)} {...rest}>\n {startIcon && <span className={styles.icon}>{startIcon}</span>}\n {children}\n </span>\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WWwW6jMBCG7zyFj7sHVwlpd1vyMNVgD8SqsS3blGRXffcVTk0IJJF92AtInvn_n2-MME_v2_LthTXqmfwtCOHCGQmnigglhULaSDzuC0JAilZR4bFzFWGoPNpxuQVTkU-wPyit0Xk9UGeAId3-HKu1thxtRbbmSJyWghNvQTkDFpW_NFALXPRuYXRepE0vZTBrtPK0gU7I06JzVqEOlLu0Dyjag7_Vfq7QDrnouyAIuIe7glmZ-vEaRMNBeDwzV0TpwYIZlz_ResFA0jC2inSCc4n74qt4iuN-CeOugX20VveKU6altjE5dm1Cys3SOOKZ368kv_K-3-7a7_cdv9s7mPvwi7DXEDZTLnYgeFBjRQf2RMOrFLxn03ioYFp5C84vROXjmL72EheS3UOJx6O_JntLIlPYewsygywqssimmHSyKFmTQRIZB9WizQD7FmRxxZB0rG_FmqpOonI9Y-hcBlZUZHFNMelgUbImY0lkA1glVJtBFhVZZFNMOlmUrMl4IOuEmj7f5caEU8sA56PmfJjdPKnKy2nhxJ9lz7ROj-46FNehz_89tFmHviaH7hJDXXcd2j78MRjv1B2sUB8V2eyLr3_qQ3MiUQgAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var badge = /* @__PURE__ */ _7a468({defaultClassName:'_1295cfn4',variantClassNames:{variant:{solid:'_1295cfn5',soft:'_1295cfn6',outline:'_1295cfn7'},color:{primary:'_1295cfn8',neutral:'_1295cfn9',danger:'_1295cfna',success:'_1295cfnb',warning:'_1295cfnc'},size:{sm:'_1295cfnd',md:'_1295cfne',lg:'_1295cfnf'}},defaultVariants:{variant:'soft',color:'neutral',size:'md'},compoundVariants:[]});\nexport var icon = '_1295cfng';","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Card.css';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n /** 시각적 스타일. outline 은 테두리, elevated 는 그림자(다크 모드는 가장자리 ring 포함), soft 는 옅은 배경 */\n variant?: 'outline' | 'elevated' | 'soft';\n /** 안쪽 여백 (sm 16px, md 24px, lg 32px). 이미지를 가장자리까지 붙이려면 none */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /** 렌더링할 요소 (기본 div). 목록이면 li, 독립된 콘텐츠면 article 등 */\n as?: ElementType;\n}\n\n/** 배경·테두리·radius·padding 을 가진 컨테이너. 자식 사이 간격은 16px. */\nexport const Card = /* @__PURE__ */ forwardRef<HTMLElement, CardProps>(function Card(\n { variant, padding, as: Component = 'div', className, ...rest },\n ref,\n) {\n return <Component ref={ref} className={cx(styles.card({ variant, padding }), className)} {...rest} />;\n});\n\nexport type CardSectionProps = HTMLAttributes<HTMLDivElement>;\n\n/** 제목·설명 영역. Typography 와 함께 쓴다. */\nexport const CardHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardHeader(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.header, className)} {...rest} />;\n});\n\n/** 본문 영역 */\nexport const CardBody = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardBody(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.body, className)} {...rest} />;\n});\n\n/** 버튼 등 동작 영역. 오른쪽 정렬 */\nexport const CardFooter = /* @__PURE__ */ forwardRef<HTMLDivElement, CardSectionProps>(function CardFooter(\n { className, ...rest },\n ref,\n) {\n return <div ref={ref} className={cx(styles.footer, className)} {...rest} />;\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Card/Card.css.ts.vanilla.css?source=LmRudWYxdTAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLWJlc3Rvdy1zcGFjZS00KTsKICBtaW4td2lkdGg6IDA7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYmVzdG93LXJhZGl1cy1sZyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJnLWRlZmF1bHQpOwogIGNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItZmctZGVmYXVsdCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWJlc3Rvdy1mb250LWZhbWlseS1zYW5zKTsKfQouZG51ZjF1MSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItYm9yZGVyLWRlZmF1bHQpOwp9Ci5kbnVmMXUyIHsKICBib3gtc2hhZG93OiB2YXIoLS1iZXN0b3ctc2hhZG93LW1kKTsKfQouZG51ZjF1MyB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJnLXN1YnRsZSk7Cn0KLmRudWYxdTQgewogIHBhZGRpbmc6IDA7Cn0KLmRudWYxdTUgewogIHBhZGRpbmc6IHZhcigtLWJlc3Rvdy1zcGFjZS00KTsKfQouZG51ZjF1NiB7CiAgcGFkZGluZzogdmFyKC0tYmVzdG93LXNwYWNlLTYpOwp9Ci5kbnVmMXU3IHsKICBwYWRkaW5nOiB2YXIoLS1iZXN0b3ctc3BhY2UtOCk7Cn0KLmRudWYxdTggewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLWJlc3Rvdy1zcGFjZS0xKTsKfQouZG51ZjF1OSB7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXNtKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtbm9ybWFsKTsKfQouZG51ZjF1YSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgZ2FwOiB2YXIoLS1iZXN0b3ctc3BhY2UtMik7Cn0';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var body = 'dnuf1u9';\nexport var card = /* @__PURE__ */ _7a468({defaultClassName:'dnuf1u0',variantClassNames:{variant:{outline:'dnuf1u1',elevated:'dnuf1u2',soft:'dnuf1u3'},padding:{none:'dnuf1u4',sm:'dnuf1u5',md:'dnuf1u6',lg:'dnuf1u7'}},defaultVariants:{variant:'outline',padding:'md'},compoundVariants:[]});\nexport var footer = 'dnuf1ua';\nexport var header = 'dnuf1u8';","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './DescriptionList.css';\n\nexport interface DescriptionListItem {\n /** 이름 (dt) */\n term: ReactNode;\n /** 값 (dd) */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** 이름–값 목록 */\n items: DescriptionListItem[];\n /** horizontal(기본): 이름 왼쪽·값 오른쪽. vertical: 이름 위·값 아래(좁은 곳·긴 값) */\n layout?: 'horizontal' | 'vertical';\n /** horizontal 일 때 이름 열의 폭 (기본 30%) — 예: \"8rem\" */\n termWidth?: string;\n /** 항목 사이에 구분선 */\n divided?: boolean;\n}\n\n/**\n * 이름–값 목록(주문 상세의 고객·연락처·금액 등). `<dl>` 안에 항목마다 `<div><dt/><dd/></div>` 로 그려 스크린리더가 쌍으로 읽는다.\n * hook 이 없어 서버 컴포넌트로도 렌더링된다.\n */\nexport const DescriptionList = /* @__PURE__ */ forwardRef<HTMLDListElement, DescriptionListProps>(\n function DescriptionList({ items, layout = 'horizontal', termWidth, divided, className, style, ...rest }, ref) {\n return (\n <dl\n ref={ref}\n className={cx(styles.root, className)}\n style={termWidth ? { ...assignInlineVars({ [styles.termWidth]: termWidth }), ...style } : style}\n {...rest}\n >\n {items.map((item, index) => (\n <div key={index} className={styles.item({ layout, divided })}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </div>\n ))}\n </dl>\n );\n },\n);\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/DescriptionList/DescriptionList.css.ts.vanilla.css?source=Ll8xNGcwb3Q0MSB7CiAgLS1fMTRnMG90NDA6IDMwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1iZXN0b3ctZm9udC1mYW1pbHktc2Fucyk7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXNtKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtbm9ybWFsKTsKfQouXzE0ZzBvdDQyIHsKICBtaW4td2lkdGg6IDA7Cn0KLl8xNGcwb3Q0MyB7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLV8xNGcwb3Q0MCkgbWlubWF4KDAsIDFmcik7CiAgY29sdW1uLWdhcDogdmFyKC0tYmVzdG93LXNwYWNlLTQpOwogIHBhZGRpbmctYmxvY2s6IHZhcigtLWJlc3Rvdy1zcGFjZS0yKTsKfQouXzE0ZzBvdDQ0IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiB2YXIoLS1iZXN0b3ctc3BhY2UtMSk7CiAgcGFkZGluZy1ibG9jazogdmFyKC0tYmVzdG93LXNwYWNlLTIpOwp9Ci5fMTRnMG90NDU6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJlc3Rvdy1jb2xvci1ib3JkZXItZGVmYXVsdCk7Cn0KLl8xNGcwb3Q0NiB7CiAgbWFyZ2luOiAwOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS1iZXN0b3ctZm9udC13ZWlnaHQtbWVkaXVtKTsKICBjb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWZnLW11dGVkKTsKICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKfQouXzE0ZzBvdDQ3IHsKICBtYXJnaW46IDA7CiAgY29sb3I6IHZhcigtLWJlc3Rvdy1jb2xvci1mZy1kZWZhdWx0KTsKICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKfQ';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var description = '_14g0ot47';\nexport var item = /* @__PURE__ */ _7a468({defaultClassName:'_14g0ot42',variantClassNames:{layout:{horizontal:'_14g0ot43',vertical:'_14g0ot44'},divided:{true:'_14g0ot45'}},defaultVariants:{layout:'horizontal'},compoundVariants:[]});\nexport var root = '_14g0ot41';\nexport var term = '_14g0ot46';\nexport var termWidth = 'var(--_14g0ot40)';","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Divider.css';\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n /** 방향. vertical 은 flex 행 안에서 부모 높이를 채운다 */\n orientation?: 'horizontal' | 'vertical';\n /** 시각적 구분만 하고 의미가 없으면 true — 스크린리더에서 숨긴다 */\n decorative?: boolean;\n /**\n * 가운데에 표시할 텍스트 (예: \"또는\"). horizontal 에서만 쓴다.\n * separator 역할의 자식은 스크린리더가 읽지 않으므로, 텍스트가 있으면 선만 숨기고 텍스트는 읽히게 둔다.\n */\n children?: ReactNode;\n}\n\nexport const Divider = /* @__PURE__ */ forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', decorative, className, children, ...rest },\n ref,\n) {\n if (children && orientation === 'horizontal') {\n return (\n <div ref={ref} className={cx(styles.labeled, className)} {...rest}>\n <span className={styles.line} aria-hidden />\n {children}\n <span className={styles.line} aria-hidden />\n </div>\n );\n }\n\n const a11y = decorative\n ? { role: 'none' }\n : { role: 'separator', 'aria-orientation': orientation === 'vertical' ? ('vertical' as const) : undefined };\n return <div ref={ref} className={cx(styles.divider({ orientation }), className)} {...a11y} {...rest} />;\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Divider/Divider.css.ts.vanilla.css?source=Ll8xdDNncTh2MCB7CiAgZmxleC1zaHJpbms6IDA7CiAgYm9yZGVyOiBub25lOwogIG1hcmdpbjogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItYm9yZGVyLWRlZmF1bHQpOwp9Ci5fMXQzZ3E4djEgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMXB4Owp9Ci5fMXQzZ3E4djIgewogIHdpZHRoOiAxcHg7CiAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICBtaW4taGVpZ2h0OiAxZW07Cn0KLl8xdDNncTh2MyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tYmVzdG93LXNwYWNlLTMpOwogIHdpZHRoOiAxMDAlOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1iZXN0b3ctZm9udC1mYW1pbHktc2Fucyk7CiAgZm9udC1zaXplOiB2YXIoLS1iZXN0b3ctZm9udC1zaXplLXhzKTsKICBsaW5lLWhlaWdodDogdmFyKC0tYmVzdG93LWZvbnQtbGluZS1oZWlnaHQtdGlnaHQpOwogIGNvbG9yOiB2YXIoLS1iZXN0b3ctY29sb3ItZmctc3VidGxlKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5fMXQzZ3E4djQgewogIGZsZXg6IDE7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmVzdG93LWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKfQ';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var divider = /* @__PURE__ */ _7a468({defaultClassName:'_1t3gq8v0',variantClassNames:{orientation:{horizontal:'_1t3gq8v1',vertical:'_1t3gq8v2'}},defaultVariants:{orientation:'horizontal'},compoundVariants:[]});\nexport var labeled = '_1t3gq8v3';\nexport var line = '_1t3gq8v4';","import { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Progress.css';\n\nexport interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** 현재 값 (0 ~ max). 생략하거나 null 이면 진행률을 모르는 상태(indeterminate)로 움직이는 막대를 보여 준다 */\n value?: number | null;\n /** 최댓값 */\n max?: number;\n /** 막대 위에 보이는 레이블. progressbar 의 이름이 된다 */\n label?: ReactNode;\n /** 레이블이 없을 때 스크린리더용 이름 */\n 'aria-label'?: string;\n /** 오른쪽에 값 텍스트(기본 \"42%\")를 보여 준다 */\n showValue?: boolean;\n /** 값 텍스트 형식. 화면 표시와 스크린리더(aria-valuetext)에 함께 쓴다 (예: (v, max) => `${v}/${max}개`) */\n formatValue?: (value: number, max: number) => string;\n /** 막대 두께 (sm 4px · md 8px · lg 12px) */\n size?: 'sm' | 'md' | 'lg';\n /** 의미 색상 */\n color?: 'primary' | 'neutral' | 'success' | 'warning' | 'danger';\n}\n\nconst defaultFormat = (value: number, max: number) => `${Math.round((value / max) * 100)}%`;\n\nexport const Progress = /* @__PURE__ */ forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n {\n value,\n max = 100,\n label,\n 'aria-label': ariaLabel,\n showValue,\n formatValue = defaultFormat,\n size,\n color,\n className,\n ...rest\n },\n ref,\n) {\n const labelId = useId();\n const isIndeterminate = value === undefined || value === null;\n const safeMax = max > 0 ? max : 100;\n const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value));\n const valueText = isIndeterminate ? undefined : formatValue(clamped, safeMax);\n\n return (\n <div ref={ref} className={cx(styles.root, className)} {...rest}>\n {(label || (showValue && valueText)) && (\n <div className={styles.header}>\n {label && (\n <span id={labelId} className={styles.label}>\n {label}\n </span>\n )}\n {/* 스크린리더는 progressbar 의 aria-valuetext 로 읽으므로 화면용 텍스트는 숨긴다 */}\n {showValue && valueText && (\n <span className={styles.value} aria-hidden>\n {valueText}\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : ariaLabel}\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-valuenow={isIndeterminate ? undefined : clamped}\n aria-valuetext={valueText}\n className={styles.track({ size })}\n >\n <div\n className={styles.indicator({ color })}\n data-state={isIndeterminate ? 'indeterminate' : clamped >= safeMax ? 'complete' : 'loading'}\n style={isIndeterminate ? undefined : { width: `${(clamped / safeMax) * 100}%` }}\n />\n </div>\n </div>\n );\n});\n","import 'src/styles/animations.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51T3WqDMBS-9ynOjaBsGYlV27qbPsbuRhqjDdVEYjZahu8-plspGjPtXeB8-f4453Dm10LTmrfwTkrdHLcYw5cHUGhV9w8A1VAmzDUD_OoBdB6AUeMRGUadd5gSkllCMk-IHYSR2yGA0VS2hdJ1NjwraniAEuw_A4p3fggtoxUP8Ms-Df_J5CZL8I2MhA7HG3cFq0VmG3sku9VxvKLjB9tc0FsydmFL9xYwWrGAYOzDE0RxcwmnPuwfsUs8dYhrZX56xTkvnVq_uE16h7SKbcdiR8rOpVYfMkeNaoURSmbQZ5yeoRWL7sFWzd1Y88RFeTK2Q_-bfFIdIKRpLi6IMqZ0LpRETEnDpUEDyhVzPye5gthiy5WSLtuhvq6lexMlN2z3DVsBqiZDBQAA';\nimport 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Progress/Progress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA41Vy27bMBC8-yuIAgXiAw05cZpUQYECvfQDeiuKYCWu5G0oUl0u_WiRfy9IxY2lOI1hwIY5q5nZ5ZBa3C9l8_CrKAr1Z6aUodBb2Jeqsbi7m6n8qw0x1kLelar2NnYuIS30pdoAX2hdYRC_1aGHGvXlPKFbMrIu1bIo3mca70Q30JHdTx46QnQAF-Z3s8fZ4uBqedoVWGqdJsEulKqCgJYcJuBnDELNXtfeCTop1eCpQtki_tf21fyfz0C_8ZTLtK5DlwuToF4jtWs5VXoEa0nf47Yuc1u5cvsqx4DoDg3FQbT21vOkNK_pptUGG4h2InSVhTrglpwml20FAZZSQRT_JmkXBc3zZDbABE60ix0y1aUSqKIFTgthJLzKwr0PNOSG0YLQJm-S3yA31m9LtSZjhm2Z5KXybJA1g6EYJuaGRd1Ea7OzCuqHln10Rr_eS3XcS-V3OqzBJAvkAooq8mfZ716ZQ4iVWBzP9jq3eMjAqt-N0A8j9HaC3ozQ5eUEvh3Dp4dCbo1MkhBhcIdJ50mO2zCRIYHaee7AzhVCQO2jjEW_GxBI8RD89I6cQUHuyIHgux_Z0NMmrQY74KiDQfN-2XJf3RSglotVGOjJJQVFriFHgiOpj5nurI3rmTrgvRbcTbIN55M4jMJgT5BU55OEWNcYwgmS-nySLbAj154gMeeTGHAt8jPH53RHgLroGRvkoBlNrNHozh8OX_o_zwKTjI2z4_xwjT6OCt_MxYvjOwrHgVQp30NNsi9VsbgeZJ69N56T5dxgKBXU6baYWF49qfko6SYr84EN3pJRX8BtIHzDnbz0__TUsYIGk14Vx-ZeTv4rtWubjuCT178Elo90LAcAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var header = '_1tvkq001';\nexport var indicator = /* @__PURE__ */ _7a468({defaultClassName:'_1tvkq008',variantClassNames:{color:{primary:'_1tvkq009',neutral:'_1tvkq00a',success:'_1tvkq00b',warning:'_1tvkq00c',danger:'_1tvkq00d'}},defaultVariants:{color:'primary'},compoundVariants:[]});\nexport var label = '_1tvkq002';\nexport var root = '_1tvkq000';\nexport var track = /* @__PURE__ */ _7a468({defaultClassName:'_1tvkq004',variantClassNames:{size:{sm:'_1tvkq005',md:'_1tvkq006',lg:'_1tvkq007'}},defaultVariants:{size:'md'},compoundVariants:[]});\nexport var value = '_1tvkq003';","import type { space } from '@bestow-ui/tokens';\nimport { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Stack.css';\n\nexport interface StackProps extends HTMLAttributes<HTMLElement> {\n /** 렌더링할 요소 */\n as?: ElementType;\n /** 배치 방향 */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** 자식 사이 간격 (space 토큰 키) */\n gap?: keyof typeof space;\n /** 교차축 정렬 (align-items) */\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** 주축 정렬 (justify-content) */\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** 줄바꿈 허용 */\n wrap?: boolean;\n}\n\nexport const Stack = /* @__PURE__ */ forwardRef<HTMLElement, StackProps>(function Stack(\n { as: Component = 'div', direction, gap, align, justify, wrap, className, ...rest },\n ref,\n) {\n return (\n <Component ref={ref} className={cx(styles.stack({ direction, gap, align, justify, wrap }), className)} {...rest} />\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Stack/Stack.css.ts.vanilla.css?source=#H4sIAAAAAAAAA33TzW7DIAwH8HueguN2oOr3mvRhJkLchIxABm6zbOq7T001Tc6HL5x-_oMts3rf1N9pVadr8ZMIUZjYWtVn4mLh65wI0RgnO1NglYn1Obknqz-_GfyDycIE0Gi8y0TwHVHbWaW9vTaOwN1SnAxwgxCB6D0TO1twGApK1WbipsKLlDlE9J2MrdIg168EH1m8ofiNxVuKTyzeUZyyeE-xYvGB4pzFR4o1i08UF_zoRoMGXo-Gd-H16NnloJU1pZMGoYnPnZYRVUAiq6nU4BACUWYhD1xBXD11EQOgrgj7mLJcRbDG0cW1g6uvEc2ll9o7BIeLrTTzeqYdx-SOW_Lz9jn3HLADoJ-55QpU8NfRBZ-chxs42xMf_r9_Fx778DjPyf0X9CUDec0EAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var stack = /* @__PURE__ */ _7a468({defaultClassName:'_1jz9hj90',variantClassNames:{direction:{row:'_1jz9hj91',column:'_1jz9hj92','row-reverse':'_1jz9hj93','column-reverse':'_1jz9hj94'},gap:{'0':'_1jz9hj95','1':'_1jz9hj96','2':'_1jz9hj97','3':'_1jz9hj98','4':'_1jz9hj99','5':'_1jz9hj9a','6':'_1jz9hj9b','8':'_1jz9hj9c','10':'_1jz9hj9d','12':'_1jz9hj9e','16':'_1jz9hj9f'},align:{start:'_1jz9hj9g',center:'_1jz9hj9h',end:'_1jz9hj9i',stretch:'_1jz9hj9j',baseline:'_1jz9hj9k'},justify:{start:'_1jz9hj9l',center:'_1jz9hj9m',end:'_1jz9hj9n',between:'_1jz9hj9o',around:'_1jz9hj9p',evenly:'_1jz9hj9q'},wrap:{true:'_1jz9hj9r'}},defaultVariants:{direction:'column'},compoundVariants:[]});","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Typography.css';\n\nexport type TypographyVariant = 'display' | 'h1' | 'h2' | 'h3' | 'h4' | 'body-lg' | 'body' | 'body-sm' | 'caption';\n\nconst defaultElement: Record<TypographyVariant, ElementType> = {\n display: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n 'body-lg': 'p',\n body: 'p',\n 'body-sm': 'p',\n caption: 'span',\n};\n\nexport interface TypographyProps extends Omit<HTMLAttributes<HTMLElement>, 'color'> {\n /** 텍스트 스타일 */\n variant?: TypographyVariant;\n /** 렌더링할 요소. 기본값은 variant 에 따라 결정된다 (h1, p, span 등) */\n as?: ElementType;\n /** 글자 색상 */\n color?: 'default' | 'muted' | 'subtle' | 'primary' | 'danger' | 'success' | 'warning' | 'inherit';\n /** variant 의 기본 굵기를 덮어쓴다 */\n weight?: 'regular' | 'medium' | 'semibold' | 'bold';\n /** 정렬 */\n align?: 'start' | 'center' | 'end';\n /** 한 줄로 자르고 말줄임표를 표시한다 */\n truncate?: boolean;\n}\n\nexport const Typography = /* @__PURE__ */ forwardRef<HTMLElement, TypographyProps>(function Typography(\n { variant = 'body', as, color, weight, align, truncate, className, ...rest },\n ref,\n) {\n const Component = as ?? defaultElement[variant];\n return (\n <Component\n ref={ref}\n className={cx(styles.typography({ variant, color, weight, align, truncate }), className)}\n {...rest}\n />\n );\n});\n","import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Typography/Typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA82Vy26DMBBF93yFl83CUZK-ydc4eDDTjm00NiVt1X-vQtTUCakAVVW6YeF7jzmyxjB_Rk_oF-I9E8IqNuhysVhnQpTeRVkqi_SaixfFV1JuIETfyiSRQbkwW2cf2Xy_0bLbqGsEfINz5G5d3mxpdnhLC2iqeK67T-TGk-7qhA5k9WM9iWXcPfcQxAgsQ60KdCYXcjFfrMAm1quR1tf_yvp6pPXqwtbLI-ubkdaTpANY_I34we52pB2ZS9jd_YUdg2lI8VQ5BlJb0Kne_Ug9q_9ez3m2ilK7h5F2wV7C7nHstQiXsFOdXeHJ8wncrcnSSA2lauhoXDfDlG3i8QwVw0xoNpEghfQAVDNaxa8ywvZIEAY4rZwB7mHlABaaooAQepwZ4FrFDp3pcVXKoauAMSYxfo_OhIk44E8TcAsaG5vSzxPo5Dt44GkCf8rajt2dllSExuUiRMXp0bheowAXgZOK71XA6SSvu9y_AJfk21xUqDW49RfzHQAR1gHDLmorjND9BSEXzres6nX28Ql_7_cqbQkAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var typography = /* @__PURE__ */ _7a468({defaultClassName:'kiolio0',variantClassNames:{variant:{display:'kiolio1',h1:'kiolio2',h2:'kiolio3',h3:'kiolio4',h4:'kiolio5','body-lg':'kiolio6',body:'kiolio7','body-sm':'kiolio8',caption:'kiolio9'},color:{'default':'kiolioa',muted:'kioliob',subtle:'kiolioc',primary:'kioliod',danger:'kiolioe',success:'kioliof',warning:'kioliog',inherit:'kiolioh'},weight:{regular:'kiolioi',medium:'kiolioj',semibold:'kioliok',bold:'kioliol'},align:{start:'kioliom',center:'kiolion',end:'kiolioo'},truncate:{true:'kioliop'}},defaultVariants:{variant:'body',color:'default'},compoundVariants:[]});","import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { visuallyHidden } from '../../styles/visuallyHidden.css';\nimport { cx } from '../../utils/cx';\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n /** 렌더링할 요소 (기본 span) */\n as?: ElementType;\n}\n\n/**\n * 화면에는 보이지 않고 스크린리더만 읽는 글자. 아이콘만 있는 열 머리글(\"작업\"), 보이는 글자에 붙는 보충 설명 등에 쓴다.\n * `display: none`·`hidden` 과 달리 보조기술이 읽는다. hook 이 없어 서버 컴포넌트로도 렌더링된다.\n */\nexport const VisuallyHidden = /* @__PURE__ */ forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Component = 'span', className, ...rest },\n ref,\n) {\n return <Component ref={ref} className={cx(visuallyHidden, className)} {...rest} />;\n});\n"],"mappings":"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","names":["value","item","Badge","forwardRef","_7a468","jsx","forwardRef","Card","CardHeader","CardBody","CardFooter","forwardRef","_7a468","jsx","jsxs","forwardRef","DescriptionList","termWidth","item","forwardRef","_7a468","jsx","jsxs","forwardRef","Divider","forwardRef","_7a468","header","root","jsx","jsxs","value","forwardRef","Progress","label","root","header","forwardRef","_7a468","jsx","forwardRef","Stack","forwardRef","_7a468","jsx","forwardRef","Typography","forwardRef","jsx","forwardRef","VisuallyHidden"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bestow-ui/react",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "한국 서비스를 위한 접근성 검증 React 디자인 시스템 — 한국 서비스 키트(약관·인증번호·전화·사업자번호·금액·주소·날짜), KWCAG 2.2 대응, 다크·브랜드 테마, 서버 컴포넌트 지원",
5
5
  "keywords": [
6
6
  "react",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/theme/contract.css.ts","../src/theme/createTheme.ts","../src/components/AddressInput/addressProviders.ts","../src/utils/koreanFormat.ts","../src/utils/date.ts","../src/components/DateRangePicker/presets.ts","../src/utils/focusField.ts","../src/components/Skeleton/Skeleton.tsx","../src/utils/cx.ts","../src/components/Skeleton/Skeleton.css.ts","../src/styles/visuallyHidden.css.ts"],"sourcesContent":["import 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nexport var themeClass = {light:'tkagtb0',dark:'tkagtb1'};\nexport var vars = {space:{'0':'var(--bestow-space-0)','1':'var(--bestow-space-1)','2':'var(--bestow-space-2)','3':'var(--bestow-space-3)','4':'var(--bestow-space-4)','5':'var(--bestow-space-5)','6':'var(--bestow-space-6)','8':'var(--bestow-space-8)','10':'var(--bestow-space-10)','12':'var(--bestow-space-12)','16':'var(--bestow-space-16)'},radius:{none:'var(--bestow-radius-none)',sm:'var(--bestow-radius-sm)',md:'var(--bestow-radius-md)',lg:'var(--bestow-radius-lg)',xl:'var(--bestow-radius-xl)',full:'var(--bestow-radius-full)'},font:{family:{sans:'var(--bestow-font-family-sans)',mono:'var(--bestow-font-family-mono)'},size:{xs:'var(--bestow-font-size-xs)',sm:'var(--bestow-font-size-sm)',md:'var(--bestow-font-size-md)',lg:'var(--bestow-font-size-lg)',xl:'var(--bestow-font-size-xl)','2xl':'var(--bestow-font-size-2xl)','3xl':'var(--bestow-font-size-3xl)','4xl':'var(--bestow-font-size-4xl)'},weight:{regular:'var(--bestow-font-weight-regular)',medium:'var(--bestow-font-weight-medium)',semibold:'var(--bestow-font-weight-semibold)',bold:'var(--bestow-font-weight-bold)'},lineHeight:{tight:'var(--bestow-font-line-height-tight)',normal:'var(--bestow-font-line-height-normal)',relaxed:'var(--bestow-font-line-height-relaxed)'}},duration:{fast:'var(--bestow-duration-fast)',normal:'var(--bestow-duration-normal)',slow:'var(--bestow-duration-slow)'},zIndex:{overlay:'var(--bestow-z-index-overlay)',modal:'var(--bestow-z-index-modal)',dropdown:'var(--bestow-z-index-dropdown)',toast:'var(--bestow-z-index-toast)',tooltip:'var(--bestow-z-index-tooltip)'},color:{bg:{'default':'var(--bestow-color-bg-default)',subtle:'var(--bestow-color-bg-subtle)',muted:'var(--bestow-color-bg-muted)',inverse:'var(--bestow-color-bg-inverse)',overlay:'var(--bestow-color-bg-overlay)'},fg:{'default':'var(--bestow-color-fg-default)',muted:'var(--bestow-color-fg-muted)',subtle:'var(--bestow-color-fg-subtle)',inverse:'var(--bestow-color-fg-inverse)'},border:{'default':'var(--bestow-color-border-default)',strong:'var(--bestow-color-border-strong)',focus:'var(--bestow-color-border-focus)',input:'var(--bestow-color-border-input)',inputHover:'var(--bestow-color-border-input-hover)'},primary:{solid:'var(--bestow-color-primary-solid)',solidHover:'var(--bestow-color-primary-solid-hover)',contrast:'var(--bestow-color-primary-contrast)',subtle:'var(--bestow-color-primary-subtle)',subtleHover:'var(--bestow-color-primary-subtle-hover)',text:'var(--bestow-color-primary-text)'},neutral:{solid:'var(--bestow-color-neutral-solid)',solidHover:'var(--bestow-color-neutral-solid-hover)',contrast:'var(--bestow-color-neutral-contrast)',subtle:'var(--bestow-color-neutral-subtle)',subtleHover:'var(--bestow-color-neutral-subtle-hover)',text:'var(--bestow-color-neutral-text)'},danger:{solid:'var(--bestow-color-danger-solid)',solidHover:'var(--bestow-color-danger-solid-hover)',contrast:'var(--bestow-color-danger-contrast)',subtle:'var(--bestow-color-danger-subtle)',subtleHover:'var(--bestow-color-danger-subtle-hover)',text:'var(--bestow-color-danger-text)'},success:{solid:'var(--bestow-color-success-solid)',solidHover:'var(--bestow-color-success-solid-hover)',contrast:'var(--bestow-color-success-contrast)',subtle:'var(--bestow-color-success-subtle)',subtleHover:'var(--bestow-color-success-subtle-hover)',text:'var(--bestow-color-success-text)'},warning:{solid:'var(--bestow-color-warning-solid)',solidHover:'var(--bestow-color-warning-solid-hover)',contrast:'var(--bestow-color-warning-contrast)',subtle:'var(--bestow-color-warning-subtle)',subtleHover:'var(--bestow-color-warning-subtle-hover)',text:'var(--bestow-color-warning-text)'}},shadow:{sm:'var(--bestow-shadow-sm)',md:'var(--bestow-shadow-md)',lg:'var(--bestow-shadow-lg)'}};","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { vars, type ThemeName, type ThemeTokens } from './contract.css';\n\nexport type DeepPartial<T> = { [K in keyof T]?: T[K] extends string ? string : DeepPartial<T[K]> };\n\nexport type ThemeOverrides = DeepPartial<ThemeTokens>;\n\n/** createTheme 에 넘기는 입력. common 은 라이트·다크 공통, light/dark 는 모드별 값 (common 보다 우선). */\nexport interface ThemeInput {\n common?: ThemeOverrides;\n light?: ThemeOverrides;\n dark?: ThemeOverrides;\n}\n\n/** createTheme 의 결과. ThemeProvider 의 overrides 로 넘긴다. */\nexport interface BestowTheme {\n readonly light: ThemeOverrides;\n readonly dark: ThemeOverrides;\n}\n\ntype Tree = { [key: string]: string | Tree };\n\nfunction deepMerge(target: Tree, source: Tree | undefined): Tree {\n if (!source) return target;\n const out: Tree = { ...target };\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n const prev = out[key];\n out[key] = typeof value === 'object' && typeof prev === 'object' ? deepMerge(prev, value) : value;\n }\n return out;\n}\n\n/**\n * 브랜드 테마를 만든다. 여러 입력을 넘기면 순서대로 깊게 병합한다 (뒤가 우선).\n *\n * @example\n * const brand = createTheme(\n * createIntentColors('primary', '#7c3aed'),\n * { common: { radius: { md: '6px' }, font: { family: { sans: 'Inter, sans-serif' } } } },\n * );\n * <ThemeProvider theme=\"dark\" overrides={brand}>…</ThemeProvider>\n */\nexport function createTheme(...inputs: ThemeInput[]): BestowTheme {\n let light: Tree = {};\n let dark: Tree = {};\n for (const input of inputs) {\n light = deepMerge(deepMerge(light, input.common as Tree), input.light as Tree);\n dark = deepMerge(deepMerge(dark, input.common as Tree), input.dark as Tree);\n }\n return Object.freeze({ light, dark }) as BestowTheme;\n}\n\n/** 두 테마를 병합한다 (b 가 우선). 중첩 ThemeProvider 가 바깥 테마를 이어받을 때 쓴다. */\nexport function mergeThemes(a: BestowTheme | undefined, b: BestowTheme | undefined): BestowTheme | undefined {\n if (!a) return b;\n if (!b) return a;\n return createTheme(a, b);\n}\n\n/** 부분 토큰을 { 'var(--bestow-…)': 값 } 으로 펼친다. 알 수 없는 키는 무시한다. */\nfunction flatten(partial: Tree, contract: Tree, out: Record<string, string>) {\n for (const [key, value] of Object.entries(partial)) {\n const target = contract[key];\n if (target === undefined) continue;\n if (typeof target === 'string' && typeof value === 'string') out[target] = value;\n else if (typeof target === 'object' && typeof value === 'object') flatten(value, target, out);\n }\n return out;\n}\n\n/** 현재 모드의 오버라이드를 인라인 style 로 바꾼다. */\nexport function themeToStyle(theme: BestowTheme | undefined, mode: ThemeName): Record<string, string> | undefined {\n if (!theme) return undefined;\n const map = flatten(theme[mode] as Tree, vars as unknown as Tree, {});\n return Object.keys(map).length ? assignInlineVars(map) : undefined;\n}\n","/** 주소 검색 결과 */\nexport interface AddressSearchResult {\n /** 우편번호 (5자리 국가기초구역번호) */\n zonecode: string;\n /** 기본 주소 (도로명 또는 지번) */\n address: string;\n /** 참고 항목 (도로명 주소일 때 법정동·건물명, 예: \" (역삼동, 래미안아파트)\") */\n extraAddress?: string;\n}\n\n/**\n * 주소 검색 공급자. container 안에 검색 화면을 그리고, 사용자가 고르면 onSelect 를 부른다.\n * 정리 함수를 돌려주면 검색 창이 닫힐 때 부른다. 다른 주소 서비스(행정안전부 도로명주소 API 등)로 바꿔 끼울 수 있다.\n */\nexport type AddressProvider = (\n container: HTMLElement,\n onSelect: (result: AddressSearchResult) => void,\n) => void | (() => void) | Promise<void | (() => void)>;\n\n// 카카오 우편번호 서비스 (https://postcode.map.kakao.com/guide)\nconst KAKAO_POSTCODE_SRC = 'https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js';\n\ninterface KakaoPostcodeData {\n zonecode: string;\n userSelectedType: 'R' | 'J';\n roadAddress: string;\n jibunAddress: string;\n autoJibunAddress?: string;\n bname: string;\n buildingName: string;\n apartment: 'Y' | 'N';\n}\n\ntype PostcodeConstructor = new (options: {\n oncomplete: (data: KakaoPostcodeData) => void;\n width?: string | number;\n height?: string | number;\n}) => { embed: (element: HTMLElement) => void };\n\ninterface PostcodeWindow {\n kakao?: { Postcode?: PostcodeConstructor };\n daum?: { Postcode?: PostcodeConstructor };\n}\n\nlet loading: Promise<PostcodeConstructor> | null = null;\n\nfunction loadKakaoPostcode(): Promise<PostcodeConstructor> {\n const w = window as unknown as PostcodeWindow;\n const existing = w.kakao?.Postcode ?? w.daum?.Postcode;\n if (existing) return Promise.resolve(existing);\n loading ??= new Promise<PostcodeConstructor>((resolve, reject) => {\n const script = document.createElement('script');\n script.src = KAKAO_POSTCODE_SRC;\n script.async = true;\n script.onload = () => {\n const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;\n if (ctor) resolve(ctor);\n else reject(new Error('우편번호 서비스를 찾지 못했어요'));\n };\n script.onerror = () => {\n loading = null; // 다음에 다시 시도할 수 있게\n reject(new Error('우편번호 서비스를 불러오지 못했어요'));\n };\n document.head.appendChild(script);\n });\n return loading;\n}\n\n/** 카카오 가이드의 방식으로 도로명 주소의 참고 항목(법정동, 공동주택 건물명)을 만든다 */\nexport function composeExtraAddress(\n data: Pick<KakaoPostcodeData, 'userSelectedType' | 'bname' | 'buildingName' | 'apartment'>,\n) {\n if (data.userSelectedType !== 'R') return '';\n const parts: string[] = [];\n // 법정동명은 \"동·로·가\" 로 끝날 때만 (법정리는 제외)\n if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);\n if (data.buildingName && data.apartment === 'Y') parts.push(data.buildingName);\n return parts.length ? ` (${parts.join(', ')})` : '';\n}\n\n/**\n * 기본 공급자: 카카오(다음) 우편번호 서비스. 처음 쓸 때 스크립트를 불러오므로 코어 번들 크기에 영향이 없다.\n * 사용 조건은 서비스 가이드를 따른다.\n */\nexport const kakaoPostcodeProvider: AddressProvider = async (container, onSelect) => {\n const Postcode = await loadKakaoPostcode();\n new Postcode({\n width: '100%',\n height: '100%',\n oncomplete: (data) => {\n const address =\n data.userSelectedType === 'R' ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || '';\n onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });\n },\n }).embed(container);\n};\n","// 한국 서비스에서 자주 쓰는 서식·검증 함수. 컴포넌트와 함께 공개 API 로 export 한다.\n\nconst onlyDigits = (input: string) => input.replace(/\\D/g, '');\n\n/** 전화번호 최대 자릿수: 02 는 10, 15xx·16xx·18xx 대표번호는 8, 나머지(010, 031, 070 …)는 11 */\nexport function phoneNumberMaxDigits(digits: string): number {\n if (digits.startsWith('02')) return 10;\n if (/^1[568]/.test(digits)) return 8;\n return 11;\n}\n\n/**\n * 숫자만 있는 전화번호에 하이픈을 넣는다. 입력 중인 값도 자연스럽게 나눈다.\n * @example formatPhoneNumber('01012345678') // '010-1234-5678'\n * @example formatPhoneNumber('021234567') // '02-123-4567'\n * @example formatPhoneNumber('15881234') // '1588-1234'\n */\nexport function formatPhoneNumber(input: string): string {\n const d = onlyDigits(input).slice(0, phoneNumberMaxDigits(onlyDigits(input)));\n if (d.startsWith('02')) {\n if (d.length <= 2) return d;\n if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;\n if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;\n return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;\n }\n if (/^1[568]/.test(d)) {\n return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;\n }\n if (d.length <= 3) return d;\n if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;\n if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;\n return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;\n}\n\n/**\n * 사업자등록번호(10자리)에 하이픈을 넣는다.\n * @example formatBusinessNumber('1234567890') // '123-45-67890'\n */\nexport function formatBusinessNumber(input: string): string {\n const d = onlyDigits(input).slice(0, 10);\n if (d.length <= 3) return d;\n if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;\n return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;\n}\n\n/**\n * 사업자등록번호 검증 공식(가중치 1,3,7,1,3,7,1,3,5)으로 확인한다. 실제로 등록된 번호인지는 국세청 조회가 필요하다.\n * @example isValidBusinessNumber('124-81-00998') // true\n */\nexport function isValidBusinessNumber(input: string): boolean {\n const d = onlyDigits(input);\n if (d.length !== 10) return false;\n const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];\n const digits = [...d].map(Number);\n let sum = weights.reduce((acc, w, i) => acc + w * digits[i]!, 0);\n sum += Math.floor((digits[8]! * 5) / 10);\n return (10 - (sum % 10)) % 10 === digits[9];\n}\n\n/**\n * 금액을 만·억·조 단위로 읽기 쉽게 쓴다.\n * @example formatKoreanAmount(125000) // '12만 5,000원'\n * @example formatKoreanAmount(150000000) // '1억 5,000만원'\n * @example formatKoreanAmount(0) // '0원'\n */\nexport function formatKoreanAmount(amount: number, unit = '원'): string {\n const n = Math.floor(Math.abs(amount));\n if (n === 0) return `0${unit}`;\n const units = [\n { value: 1e12, label: '조' },\n { value: 1e8, label: '억' },\n { value: 1e4, label: '만' },\n { value: 1, label: '' },\n ];\n let rest = n;\n const parts: string[] = [];\n for (const u of units) {\n const q = Math.floor(rest / u.value);\n rest %= u.value;\n if (q > 0) parts.push(`${q.toLocaleString('ko-KR')}${u.label}`);\n }\n return `${amount < 0 ? '-' : ''}${parts.join(' ')}${unit}`;\n}\n","// 날짜 계산 유틸. 값은 시간대 문제가 없도록 'YYYY-MM-DD' 문자열로 다루고, 계산할 때만 로컬 Date 로 바꾼다.\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n/** Date → 'YYYY-MM-DD' (로컬 기준) */\nexport function toISODate(date: Date): string {\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n}\n\n/** 'YYYY-MM-DD' → Date (로컬 자정). 형식이 틀리거나 없는 날짜(2월 30일 등)면 null */\nexport function parseISODate(value: string | null | undefined): Date | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value ?? '');\n if (!m) return null;\n const [y, mo, d] = [Number(m[1]), Number(m[2]), Number(m[3])];\n const date = new Date(y, mo - 1, d);\n return date.getFullYear() === y && date.getMonth() === mo - 1 && date.getDate() === d ? date : null;\n}\n\nexport function addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\n/** 달을 옮긴다. 옮긴 달에 같은 날이 없으면 그 달의 마지막 날 (1월 31일 + 1달 → 2월 28/29일) */\nexport function addMonths(date: Date, months: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1);\n const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();\n return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nexport function isSameDay(a: Date | null, b: Date | null): boolean {\n return !!a && !!b && toISODate(a) === toISODate(b);\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\n/** 날짜만 비교 (-1, 0, 1) */\nexport function compareDays(a: Date, b: Date): number {\n const x = toISODate(a);\n const y = toISODate(b);\n return x < y ? -1 : x > y ? 1 : 0;\n}\n\n/** 일요일부터 시작하는 달력의 주 목록 (앞뒤 달 날짜 포함, 항상 6주) */\nexport function getCalendarWeeks(year: number, month: number): Date[][] {\n const first = new Date(year, month, 1);\n const start = addDays(first, -first.getDay());\n return Array.from({ length: 6 }, (_, week) => Array.from({ length: 7 }, (_, day) => addDays(start, week * 7 + day)));\n}\n\nexport const KOREAN_WEEKDAYS = ['일', '월', '화', '수', '목', '금', '토'] as const;\n\n/**\n * 한국어 날짜. 스크린리더용 날짜 이름 등에 쓴다.\n * @example formatKoreanDate(new Date(2026, 9, 15)) // '2026년 10월 15일 목요일'\n */\nexport function formatKoreanDate(date: Date, withWeekday = true): string {\n const base = `${date.getFullYear()}년 ${date.getMonth() + 1}월 ${date.getDate()}일`;\n return withWeekday ? `${base} ${KOREAN_WEEKDAYS[date.getDay()]}요일` : base;\n}\n","import { addDays, addMonths, parseISODate, toISODate } from '../../utils/date';\n\nexport interface DateRange {\n /** 시작일 'YYYY-MM-DD' (없으면 '') */\n start: string;\n /** 종료일 'YYYY-MM-DD' (없으면 '') */\n end: string;\n}\n\n/** 빠른 선택 — 오늘에서 거슬러 올라간 기간. `days: 0` 은 오늘 하루 */\nexport interface DateRangePreset {\n label: string;\n days?: number;\n months?: number;\n}\n\n/** 조회 화면에서 흔한 빠른 선택(오늘·1주일·1개월·3개월). 그대로 넘기거나 골라 쓴다 */\nexport const dateRangePresets: DateRangePreset[] = [\n { label: '오늘', days: 0 },\n { label: '1주일', days: 7 },\n { label: '1개월', months: 1 },\n { label: '3개월', months: 3 },\n];\n\n/** 빠른 선택이 가리키는 기간 (오늘 'YYYY-MM-DD' 기준) */\nexport function presetRange(preset: DateRangePreset, today: string): DateRange {\n const end = parseISODate(today);\n if (!end) return { start: '', end: '' };\n const start = preset.months !== undefined ? addMonths(end, -preset.months) : addDays(end, -(preset.days ?? 0));\n return { start: toISODate(start), end: today };\n}\n","const FOCUSABLE =\n 'input:not([type=\"hidden\"]):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex=\"-1\"])';\n\n/** 화면에 보이고 보조기술에서 숨기지 않은, Tab 으로 갈 수 있는 요소 */\nfunction isUsable(element: Element): element is HTMLElement {\n return (\n element instanceof HTMLElement &&\n element.matches(FOCUSABLE) &&\n element.tabIndex >= 0 &&\n !element.closest('[aria-hidden=\"true\"], [inert], [hidden]')\n );\n}\n\nfunction firstUsableIn(container: Element | null): HTMLElement | null {\n if (!container) return null;\n // 라디오·세그먼트처럼 하나를 고르는 묶음은 지금 선택된 항목으로 간다\n const checked = Array.from(container.querySelectorAll(':checked, [aria-checked=\"true\"]')).find(isUsable);\n return checked ?? Array.from(container.querySelectorAll(FOCUSABLE)).find(isUsable) ?? null;\n}\n\n/**\n * 폼 칸으로 포커스를 옮긴다(오류 요약의 링크, 제출 실패 뒤 등). `target` 은 칸의 id 나 요소.\n * id 가 포커스할 수 없는 요소를 가리켜도 알맞은 곳을 찾는다 — RadioGroup·AgreementGroup 처럼 묶음이면 선택된(없으면 첫) 항목,\n * FileUpload 처럼 숨긴 input 이면 같은 묶음(role=\"group\")의 버튼. 옮겼으면 true.\n */\nexport function focusField(target: string | HTMLElement | null | undefined): boolean {\n const element = typeof target === 'string' ? document.getElementById(target) : (target ?? null);\n if (!element) return false;\n const destination =\n (isUsable(element) ? element : null) ??\n firstUsableIn(element) ??\n firstUsableIn(element.closest('[role=\"group\"], [role=\"radiogroup\"], fieldset'));\n if (!destination) return false;\n destination.focus();\n return document.activeElement === destination;\n}\n","import { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { cx } from '../../utils/cx';\nimport * as styles from './Skeleton.css';\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n /** 모양. text 는 글자 높이(1em), circle 은 width 를 지름으로 쓴다 */\n variant?: 'text' | 'rect' | 'circle';\n /** 너비. 숫자는 px (기본: text·rect 100%, circle 40px) */\n width?: number | string;\n /** 높이. 숫자는 px (기본: text 1em, rect 100px, circle 은 width 와 같음) */\n height?: number | string;\n /** text 에서 여러 줄을 그린다. 마지막 줄은 60% 너비 */\n lines?: number;\n}\n\nconst toCss = (value: number | string) => (typeof value === 'number' ? `${value}px` : value);\n\n/**\n * 콘텐츠를 불러오는 동안 자리를 표시한다. 장식용이라 스크린리더에서 숨긴다 —\n * 로딩 중인 영역(감싸는 요소)에 `aria-busy=\"true\"` 를 붙여 상태를 알린다.\n */\nexport const Skeleton = /* @__PURE__ */ forwardRef<HTMLSpanElement, SkeletonProps>(function Skeleton(\n { variant = 'text', width, height, lines = 1, className, style, ...rest },\n ref,\n) {\n const w = toCss(width ?? (variant === 'circle' ? 40 : '100%'));\n const h = toCss(height ?? (variant === 'circle' ? w : variant === 'rect' ? 100 : '1em'));\n\n if (variant === 'text' && lines > 1) {\n return (\n <span\n ref={ref}\n aria-hidden\n className={cx(styles.lines, className)}\n style={{ ...assignInlineVars({ [styles.width]: w }), ...style }}\n {...rest}\n >\n {Array.from({ length: lines }, (_, i) => (\n <span\n key={i}\n className={styles.skeleton({ variant })}\n style={assignInlineVars({ [styles.width]: i === lines - 1 ? '60%' : '100%', [styles.height]: h })}\n />\n ))}\n </span>\n );\n }\n\n return (\n <span\n ref={ref}\n aria-hidden\n className={cx(styles.skeleton({ variant }), className)}\n style={{ ...assignInlineVars({ [styles.width]: w, [styles.height]: h }), ...style }}\n {...rest}\n />\n );\n});\n","export function cx(...classNames: Array<string | false | null | undefined>): string {\n return classNames.filter(Boolean).join(' ');\n}\n","import 'src/styles/animations.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51T3WqDMBS-9ynOjaBsGYlV27qbPsbuRhqjDdVEYjZahu8-plspGjPtXeB8-f4453Dm10LTmrfwTkrdHLcYw5cHUGhV9w8A1VAmzDUD_OoBdB6AUeMRGUadd5gSkllCMk-IHYSR2yGA0VS2hdJ1NjwraniAEuw_A4p3fggtoxUP8Ms-Df_J5CZL8I2MhA7HG3cFq0VmG3sku9VxvKLjB9tc0FsydmFL9xYwWrGAYOzDE0RxcwmnPuwfsUs8dYhrZX56xTkvnVq_uE16h7SKbcdiR8rOpVYfMkeNaoURSmbQZ5yeoRWL7sFWzd1Y88RFeTK2Q_-bfFIdIKRpLi6IMqZ0LpRETEnDpUEDyhVzPye5gthiy5WSLtuhvq6lexMlN2z3DVsBqiZDBQAA';\nimport 'src/theme/contract.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2XTW_jNhCG7_kVA-fSAJIhUh-2tKcuii3QIotiA_ROSaQjrCQapLRxttj_XlCSZVseKkb30BwUODaseTnkvPwwn0RJ2cA_dwCum3LdyBdX71nGXS8B78P1Y5JAsD8gAZrAFg34CRCKRoIESIRGwgSoh0aiBCg-gG0CPt4P8RII8HSEJhDg4yZRAtG0K8XyotVuLWs-9WcI6eraoSFU5dceDaFyh7g0xA4l4tMQE21ZJhDHcTyJC1k3rmBVUb66mtU6gdVfije8zpnK4W-mCpaWfOXA6akDLtvvS-7qV93wyoGPZVF_fWTZU_f9k6wbB_qY2xYOrH41anj6DX6XzXORwWcuVw6sPstGwhOrNfz5ZeWA6d3VXBXCOsBK1jKB1R-8-ahYUWt4lLVJ1RZdqJsPB54-mcfuF75rS6YceOR1KR0YFdfpdfGduwedgLfehIpXFoWZMm-9nZOYqSP2cDd9a0JnMnSzuJ5T0F4yo_B7xexIA6Ohto5eeLF7blzVe2i2hWcVVTwv2iqBcEajeVWksswTiGZUvWKDKcqi5u5zL2vMe-_SvLCWqmK9WfNCxUt24Gbu1ptLad4q1hSydgXTpk_qVRoXHDujnlWiS_liTp-p4Ltb1Dk_uPIbVyV7TYD4Ew-OikrmXUE-weO5kvtcvtRGQnFJI_tKplN6isuyKfYJkOmEZrKUyk13bs4Fa8smgXvR_eEq3aZNyY1oK2LBcFHVNsb3e0GEL0JcU9TfuNImEyU0pDGuGs1Tu5T94jkwvNZB-IC0EOdlWPOK0wiDOPTCDa4ZS42iiG8iXHQqw-6aVDlXZwPLOaccyzcodaNkvUvgnuVpmOZ2oZBZqxO499NICCzhXhUVU6-ulmVhyqVhGPD0LaH7bGxP4J7kAc23M_JM1o3qVp69_DH10U7ORXCDchxFnvJI8Bl9ww_N3Ghr3jaKlaMLfuCzANsFF8Kxf-s6OspvcWFMPe4f2964VI6j4DHP-FzmwQVrcTmrd2ZxDSbkGY0otmbOdWPvaUwyktnVt1hwTDw6wAUV9C3hOARhds2MfKjfOlLdZhnXejSAhFvPxzbXhfC0F6Io9IMZ-S0WjKlHDzyRi7ms072QiYxj59VRf9wLtuJemKqLeje6IMKYe9iJcCE89R9vNh62ao7yMxes-2ZMPbogRIoeS5fKs6Ug_Axz4agfXIhp4HmXJ4d-Zrn5MLc-IPsD0P3h6sfFix6wRuYe6Jn7fXdbv261RVuZ66HXt_CxZoQ-fLj7cbduvrJdk3oLji04tuDYgmMLji04tuDYgmMLji04tuDYgmMLjv0fOEYWHFtwbMGxBccWHFtwrMcFEpEtwX4dz3FsDqKOsGO9Gl7g2BzYWXEsehvHrHnPcMxKRuc4ZqUicRtVTnHMyoD_FcciL_bQSt8jjnUzGcYOEEIcoEHU3UkibDpxPkMT0NkEx-uZnwYC83MKbG-yz6VPb6LVLZfUKbB1ZdIwdOD0dn3nm0M4PAMJ5jIMTlkrem9Q19foxw5E2_7ftphQyMOa40vpEvpExkKG-fMeoa8r0g8cIPHGgTiwe4RDINYeN2kChduIC4bN909CoUhTQTGXfgYK-6UQhA6QcGsOF7tNOCWiCXCfJtgostwPLhfJTdgYzlCjN7SzHiPOHFrimXuynM9MusR2-jR-_PgXHH1O55cpAAA';\nimport 'src/components/Skeleton/Skeleton.css.ts.vanilla.css?source=Ll8xczhkYXRkMiB7CiAgZGlzcGxheTogYmxvY2s7CiAgZmxleC1zaHJpbms6IDA7CiAgd2lkdGg6IHZhcigtLV8xczhkYXRkMCk7CiAgaGVpZ2h0OiB2YXIoLS1fMXM4ZGF0ZDEpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJlc3Rvdy1jb2xvci1uZXV0cmFsLXN1YnRsZSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCAyNSUsIHZhcigtLWJlc3Rvdy1jb2xvci1uZXV0cmFsLXN1YnRsZS1ob3ZlcikgNTAlLCB0cmFuc3BhcmVudCA3NSUpOwogIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogIGFuaW1hdGlvbjogXzFncnBiNzA3IDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KLl8xczhkYXRkMyB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYmVzdG93LXJhZGl1cy1zbSk7Cn0KLl8xczhkYXRkNCB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYmVzdG93LXJhZGl1cy1tZCk7Cn0KLl8xczhkYXRkNSB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYmVzdG93LXJhZGl1cy1mdWxsKTsKfQouXzFzOGRhdGQ2IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiB2YXIoLS1iZXN0b3ctc3BhY2UtMik7CiAgd2lkdGg6IHZhcigtLV8xczhkYXRkMCk7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuXzFzOGRhdGQyIHsKICAgIGFuaW1hdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgfQp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var height = 'var(--_1s8datd1)';\nexport var lines = '_1s8datd6';\nexport var skeleton = /* @__PURE__ */ _7a468({defaultClassName:'_1s8datd2',variantClassNames:{variant:{text:'_1s8datd3',rect:'_1s8datd4',circle:'_1s8datd5'}},defaultVariants:{variant:'text'},compoundVariants:[]});\nexport var width = 'var(--_1s8datd0)';","import 'src/styles/visuallyHidden.css.ts.vanilla.css?source=Ll8xa2R0YncxMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9';\nexport var visuallyHidden = '_1kdtbw10';"],"mappings":"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","names":["_","assignInlineVars","Skeleton","width","height","lines","assignInlineVars"]}