@bestow-ui/react 0.8.3 → 0.10.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.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  // src/theme/contract.css.ts
4
4
  var themeClass = { light: "tkagtb0", dark: "tkagtb1" };
5
- 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)" } }, shadow: { sm: "var(--bestow-shadow-sm)", md: "var(--bestow-shadow-md)", lg: "var(--bestow-shadow-lg)" }, duration: { fast: "var(--bestow-duration-fast)", normal: "var(--bestow-duration-normal)", slow: "var(--bestow-duration-slow)" }, zIndex: { dropdown: "var(--bestow-z-index-dropdown)", overlay: "var(--bestow-z-index-overlay)", modal: "var(--bestow-z-index-modal)", 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)" }, 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)" } } };
5
+ 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: { dropdown: "var(--bestow-z-index-dropdown)", overlay: "var(--bestow-z-index-overlay)", modal: "var(--bestow-z-index-modal)", 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)" }, 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)" } };
6
6
 
7
7
  // src/theme/color.ts
8
8
  import { darkColors, lightColors, palette } from "@bestow-ui/tokens";
@@ -78,6 +78,11 @@ function findReadable(base, startL, step, backgrounds) {
78
78
  }
79
79
  return step < 0 ? palette.black : palette.white;
80
80
  }
81
+ function hoverFor(base, delta, contrast) {
82
+ const preferred = withL(base, Math.min(1, Math.max(0, base.l + delta)));
83
+ if (contrastRatio(contrast, preferred) >= 4.5) return preferred;
84
+ return withL(base, Math.min(1, Math.max(0, base.l - delta)));
85
+ }
81
86
  function pickContrast(solid) {
82
87
  const white = palette.white;
83
88
  const dark = palette.gray[900];
@@ -93,10 +98,11 @@ function createIntentColors(intent, color) {
93
98
  const base = rgbToOklch(parseHex(solid));
94
99
  const lightSubtle = withL(base, 0.97, Math.min(base.c, 0.12) * 0.3);
95
100
  const lightSubtleHover = withL(base, 0.93, Math.min(base.c, 0.12) * 0.45);
101
+ const lightContrast = pickContrast(solid);
96
102
  const light = {
97
103
  solid,
98
- solidHover: withL(base, Math.max(0, base.l - 0.06)),
99
- contrast: pickContrast(solid),
104
+ solidHover: hoverFor(base, -0.06, lightContrast),
105
+ contrast: lightContrast,
100
106
  subtle: lightSubtle,
101
107
  subtleHover: lightSubtleHover,
102
108
  text: findReadable(base, Math.min(base.l, 0.55), -0.02, [lightColors.bg.default, lightSubtle, lightSubtleHover])
@@ -106,15 +112,19 @@ function createIntentColors(intent, color) {
106
112
  const darkBase = rgbToOklch(parseHex(darkSolid));
107
113
  const darkSubtleOnBg = blend(darkSolid, 0.16, darkBg);
108
114
  const darkSubtleHoverOnBg = blend(darkSolid, 0.26, darkBg);
115
+ const darkContrast = pickContrast(darkSolid);
109
116
  const dark = {
110
117
  solid: darkSolid,
111
- solidHover: withL(darkBase, Math.min(1, darkBase.l + 0.06)),
112
- contrast: pickContrast(darkSolid),
118
+ solidHover: hoverFor(darkBase, 0.06, darkContrast),
119
+ contrast: darkContrast,
113
120
  subtle: rgba(darkSolid, 0.16),
114
121
  subtleHover: rgba(darkSolid, 0.26),
115
122
  text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg])
116
123
  };
117
- const focus = intent === "primary" ? { light: { border: { focus: light.solid } }, dark: { border: { focus: dark.solidHover } } } : void 0;
124
+ const focus = intent === "primary" ? {
125
+ light: { border: { focus: light.solid } },
126
+ dark: { border: { focus: withL(darkBase, Math.min(1, darkBase.l + 0.06)) } }
127
+ } : void 0;
118
128
  return {
119
129
  light: { color: { [intent]: light, ...focus?.light } },
120
130
  dark: { color: { [intent]: dark, ...focus?.dark } }
@@ -126,10 +136,10 @@ import { assignInlineVars } from "@vanilla-extract/dynamic";
126
136
  function deepMerge(target, source) {
127
137
  if (!source) return target;
128
138
  const out = { ...target };
129
- for (const [key, value2] of Object.entries(source)) {
130
- if (value2 === void 0) continue;
139
+ for (const [key, value4] of Object.entries(source)) {
140
+ if (value4 === void 0) continue;
131
141
  const prev = out[key];
132
- out[key] = typeof value2 === "object" && typeof prev === "object" ? deepMerge(prev, value2) : value2;
142
+ out[key] = typeof value4 === "object" && typeof prev === "object" ? deepMerge(prev, value4) : value4;
133
143
  }
134
144
  return out;
135
145
  }
@@ -148,11 +158,11 @@ function mergeThemes(a, b) {
148
158
  return createTheme(a, b);
149
159
  }
150
160
  function flatten(partial, contract, out) {
151
- for (const [key, value2] of Object.entries(partial)) {
161
+ for (const [key, value4] of Object.entries(partial)) {
152
162
  const target = contract[key];
153
163
  if (target === void 0) continue;
154
- if (typeof target === "string" && typeof value2 === "string") out[target] = value2;
155
- else if (typeof target === "object" && typeof value2 === "object") flatten(value2, target, out);
164
+ if (typeof target === "string" && typeof value4 === "string") out[target] = value4;
165
+ else if (typeof target === "object" && typeof value4 === "object") flatten(value4, target, out);
156
166
  }
157
167
  return out;
158
168
  }
@@ -181,17 +191,17 @@ var ThemeProvider = /* @__PURE__ */ forwardRef(function ThemeProvider2({ theme:
181
191
  const parent = useContext(ThemeContext);
182
192
  const theme = themeProp ?? parent.theme;
183
193
  const merged = useMemo(() => mergeThemes(parent.overrides, overrides), [parent.overrides, overrides]);
184
- const value2 = useMemo(
194
+ const value4 = useMemo(
185
195
  () => ({ theme, overrides: merged, style: themeToStyle(merged, theme) }),
186
196
  [theme, merged]
187
197
  );
188
- return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: value2, children: /* @__PURE__ */ jsx(
198
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: value4, children: /* @__PURE__ */ jsx(
189
199
  "div",
190
200
  {
191
201
  ref,
192
202
  "data-theme": theme,
193
203
  className: cx(themeClass[theme], root, className),
194
- style: value2.style ? { ...value2.style, ...style } : style,
204
+ style: value4.style ? { ...value4.style, ...style } : style,
195
205
  ...rest,
196
206
  children
197
207
  }
@@ -230,94 +240,207 @@ var Accordion = /* @__PURE__ */ forwardRef2(function Accordion2({ className, ...
230
240
  const rootProps = "value" in props ? { ...typedProps, value: props.value ?? (props.type === "multiple" ? [] : "") } : typedProps;
231
241
  return /* @__PURE__ */ jsx2(RadixAccordion.Root, { ref, className: cx(root2, className), ...rootProps });
232
242
  });
233
- var AccordionItem = /* @__PURE__ */ forwardRef2(function AccordionItem2({ title: title4, headingLevel = 3, className, children, ...rest }, ref) {
243
+ var AccordionItem = /* @__PURE__ */ forwardRef2(function AccordionItem2({ title: title6, headingLevel = 3, className, children, ...rest }, ref) {
234
244
  const Heading = `h${headingLevel}`;
235
245
  return /* @__PURE__ */ jsxs(RadixAccordion.Item, { ref, className: cx(item, className), ...rest, children: [
236
246
  /* @__PURE__ */ jsx2(RadixAccordion.Header, { asChild: true, children: /* @__PURE__ */ jsx2(Heading, { className: header, children: /* @__PURE__ */ jsxs(RadixAccordion.Trigger, { className: trigger, children: [
237
- title4,
247
+ title6,
238
248
  /* @__PURE__ */ jsx2(ChevronDownIcon, { size: 18, className: chevron })
239
249
  ] }) }) }),
240
250
  /* @__PURE__ */ jsx2(RadixAccordion.Content, { className: content, children: /* @__PURE__ */ jsx2("div", { className: contentInner, children }) })
241
251
  ] });
242
252
  });
243
253
 
254
+ // src/components/Alert/Alert.tsx
255
+ import { forwardRef as forwardRef3 } from "react";
256
+ import { CircleAlertIcon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, XIcon } from "@bestow-ui/icons";
257
+
258
+ // src/components/Alert/Alert.css.ts
259
+ import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
260
+ var action = "bsmpc0j";
261
+ var alert = /* @__PURE__ */ _7a468({ defaultClassName: "bsmpc06", variantClassNames: { variant: { soft: "bsmpc07", outline: "bsmpc08", solid: "bsmpc09" }, color: { primary: "bsmpc0a", neutral: "bsmpc0b", danger: "bsmpc0c", success: "bsmpc0d", warning: "bsmpc0e" } }, defaultVariants: { variant: "soft", color: "primary" }, compoundVariants: [] });
262
+ var closeButton = "bsmpc0k";
263
+ var content2 = "bsmpc0g";
264
+ var description = "bsmpc0i";
265
+ var icon = "bsmpc0f";
266
+ var title = "bsmpc0h";
267
+
268
+ // src/components/Alert/Alert.tsx
269
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
270
+ var defaultIcons = {
271
+ primary: InfoIcon,
272
+ neutral: InfoIcon,
273
+ success: CircleCheckIcon,
274
+ warning: TriangleAlertIcon,
275
+ danger: CircleAlertIcon
276
+ };
277
+ var Alert = /* @__PURE__ */ forwardRef3(function Alert2({ variant, color = "primary", title: title6, icon: icon6, action: action3, onClose, closeLabel = "\uB2EB\uAE30", className, children, ...rest }, ref) {
278
+ const DefaultIcon = defaultIcons[color];
279
+ const iconNode = icon6 === void 0 ? /* @__PURE__ */ jsx3(DefaultIcon, { size: 18 }) : icon6;
280
+ return /* @__PURE__ */ jsxs2("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
281
+ iconNode !== false && iconNode !== null && /* @__PURE__ */ jsx3("span", { className: icon, "aria-hidden": true, children: iconNode }),
282
+ /* @__PURE__ */ jsxs2("div", { className: content2, children: [
283
+ title6 && /* @__PURE__ */ jsx3("div", { className: title, children: title6 }),
284
+ children && /* @__PURE__ */ jsx3("div", { className: description, children })
285
+ ] }),
286
+ action3 && /* @__PURE__ */ jsx3("div", { className: action, children: action3 }),
287
+ onClose && /* @__PURE__ */ jsx3("button", { type: "button", className: closeButton, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ jsx3(XIcon, { size: 16 }) })
288
+ ] });
289
+ });
290
+
244
291
  // src/components/Avatar/Avatar.tsx
245
292
  import * as RadixAvatar from "@radix-ui/react-avatar";
246
293
  import { UserIcon } from "@bestow-ui/icons";
247
- import { forwardRef as forwardRef3 } from "react";
294
+ import { forwardRef as forwardRef4 } from "react";
248
295
 
249
296
  // src/components/Avatar/Avatar.css.ts
250
- import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
297
+ import { createRuntimeFn as _7a4682 } from "@vanilla-extract/recipes/createRuntimeFn";
251
298
  var fallback = "_1fd2kp27";
252
299
  var image = "_1fd2kp26";
253
- var root3 = _7a468({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
300
+ var root3 = /* @__PURE__ */ _7a4682({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
254
301
 
255
302
  // src/components/Avatar/Avatar.tsx
256
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
303
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
257
304
  function getInitials(name) {
258
305
  const [a = "", b = ""] = name.trim().split(/\s+/);
259
306
  const first = (word) => Array.from(word)[0] ?? "";
260
307
  return (first(a) + first(b)).toUpperCase();
261
308
  }
262
- var Avatar = /* @__PURE__ */ forwardRef3(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
263
- const label4 = alt ?? name;
264
- const a11y = label4 ? { role: "img", "aria-label": label4 } : { "aria-hidden": true };
309
+ var Avatar = /* @__PURE__ */ forwardRef4(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
310
+ const label6 = alt ?? name;
311
+ const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
265
312
  const initials = name ? getInitials(name) : "";
266
- return /* @__PURE__ */ jsxs2(RadixAvatar.Root, { ref, className: cx(root3({ size, shape }), className), ...a11y, ...rest, children: [
267
- src && /* @__PURE__ */ jsx3(RadixAvatar.Image, { src, alt: "", className: image }),
268
- /* @__PURE__ */ jsx3(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ jsx3(UserIcon, { size: "60%" })) })
313
+ return /* @__PURE__ */ jsxs3(RadixAvatar.Root, { ref, className: cx(root3({ size, shape }), className), ...a11y, ...rest, children: [
314
+ src && /* @__PURE__ */ jsx4(RadixAvatar.Image, { src, alt: "", className: image }),
315
+ /* @__PURE__ */ jsx4(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ jsx4(UserIcon, { size: "60%" })) })
269
316
  ] });
270
317
  });
271
318
 
272
319
  // src/components/Badge/Badge.tsx
273
- import { forwardRef as forwardRef4 } from "react";
320
+ import { forwardRef as forwardRef5 } from "react";
274
321
 
275
322
  // src/components/Badge/Badge.css.ts
276
- import { createRuntimeFn as _7a4682 } from "@vanilla-extract/recipes/createRuntimeFn";
277
- var badge = _7a4682({ defaultClassName: "_1295cfn4", variantClassNames: { variant: { solid: "_1295cfn5", soft: "_1295cfn6", outline: "_1295cfn7" }, color: { primary: "_1295cfn8", neutral: "_1295cfn9", danger: "_1295cfna", success: "_1295cfnb" }, size: { sm: "_1295cfnc", md: "_1295cfnd", lg: "_1295cfne" } }, defaultVariants: { variant: "soft", color: "neutral", size: "md" }, compoundVariants: [] });
278
- var icon = "_1295cfnf";
323
+ import { createRuntimeFn as _7a4683 } from "@vanilla-extract/recipes/createRuntimeFn";
324
+ var badge = /* @__PURE__ */ _7a4683({ 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: [] });
325
+ var icon2 = "_1295cfng";
279
326
 
280
327
  // src/components/Badge/Badge.tsx
281
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
282
- var Badge = /* @__PURE__ */ forwardRef4(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
283
- return /* @__PURE__ */ jsxs3("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
284
- startIcon && /* @__PURE__ */ jsx4("span", { className: icon, children: startIcon }),
328
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
329
+ var Badge = /* @__PURE__ */ forwardRef5(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
330
+ return /* @__PURE__ */ jsxs4("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
331
+ startIcon && /* @__PURE__ */ jsx5("span", { className: icon2, children: startIcon }),
285
332
  children
286
333
  ] });
287
334
  });
288
335
 
289
- // src/components/Button/Button.tsx
290
- import { forwardRef as forwardRef6 } from "react";
336
+ // src/components/Breadcrumb/Breadcrumb.tsx
337
+ import { forwardRef as forwardRef7 } from "react";
338
+ import { ChevronRightIcon } from "@bestow-ui/icons";
291
339
 
292
- // src/components/Spinner/Spinner.tsx
293
- import { LoaderIcon } from "@bestow-ui/icons";
294
- import { forwardRef as forwardRef5 } from "react";
340
+ // src/components/Link/Link.tsx
341
+ import { Slot } from "@radix-ui/react-slot";
342
+ import { forwardRef as forwardRef6 } from "react";
343
+ import { ExternalLinkIcon } from "@bestow-ui/icons";
295
344
 
296
345
  // src/styles/visuallyHidden.css.ts
297
346
  var visuallyHidden = "_1kdtbw10";
298
347
 
348
+ // src/components/Link/Link.css.ts
349
+ import { createRuntimeFn as _7a4684 } from "@vanilla-extract/recipes/createRuntimeFn";
350
+ var externalIcon = "_1t4hlp6";
351
+ var link = /* @__PURE__ */ _7a4684({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
352
+
353
+ // src/components/Link/Link.tsx
354
+ import { Fragment, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
355
+ var Link = /* @__PURE__ */ forwardRef6(function Link2({
356
+ as: Component = "a",
357
+ asChild,
358
+ color,
359
+ underline,
360
+ external,
361
+ externalLabel = "(\uC0C8 \uCC3D)",
362
+ target,
363
+ rel,
364
+ className,
365
+ children,
366
+ ...rest
367
+ }, ref) {
368
+ const linkClassName = cx(link({ color, underline }), className);
369
+ if (asChild) {
370
+ return (
371
+ // Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
372
+ /* @__PURE__ */ jsx6(Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children })
373
+ );
374
+ }
375
+ return /* @__PURE__ */ jsxs5(
376
+ Component,
377
+ {
378
+ ref,
379
+ className: linkClassName,
380
+ target: external ? target ?? "_blank" : target,
381
+ rel: external ? rel ?? "noopener noreferrer" : rel,
382
+ ...rest,
383
+ children: [
384
+ children,
385
+ external && /* @__PURE__ */ jsxs5(Fragment, { children: [
386
+ " ",
387
+ /* @__PURE__ */ jsx6(ExternalLinkIcon, { className: externalIcon }),
388
+ /* @__PURE__ */ jsx6("span", { className: visuallyHidden, children: externalLabel })
389
+ ] })
390
+ ]
391
+ }
392
+ );
393
+ });
394
+
395
+ // src/components/Breadcrumb/Breadcrumb.css.ts
396
+ var current = "_18t8ztt3";
397
+ var item2 = "_18t8ztt1";
398
+ var link2 = "_18t8ztt2";
399
+ var list = "_18t8ztt0";
400
+ var separator = "_18t8ztt4";
401
+
402
+ // src/components/Breadcrumb/Breadcrumb.tsx
403
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
404
+ var Breadcrumb = /* @__PURE__ */ forwardRef7(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabel = "\uC774\uB3D9 \uACBD\uB85C", className, ...rest }, ref) {
405
+ const sep = separator3 ?? /* @__PURE__ */ jsx7(ChevronRightIcon, { size: 14 });
406
+ return /* @__PURE__ */ jsx7("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx7("ol", { className: list, children: items2.map((item6, index) => {
407
+ const isCurrent = index === items2.length - 1;
408
+ return /* @__PURE__ */ jsxs6("li", { className: item2, children: [
409
+ index > 0 && /* @__PURE__ */ jsx7("span", { className: separator, "aria-hidden": true, children: sep }),
410
+ isCurrent || item6.href === void 0 ? /* @__PURE__ */ jsx7("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item6.label }) : /* @__PURE__ */ jsx7(Link, { as: linkAs, href: item6.href, color: "neutral", underline: "hover", className: link2, children: item6.label })
411
+ ] }, index);
412
+ }) }) });
413
+ });
414
+
415
+ // src/components/Button/Button.tsx
416
+ import { forwardRef as forwardRef9 } from "react";
417
+
418
+ // src/components/Spinner/Spinner.tsx
419
+ import { LoaderIcon } from "@bestow-ui/icons";
420
+ import { forwardRef as forwardRef8 } from "react";
421
+
299
422
  // src/components/Spinner/Spinner.css.ts
300
- import { createRuntimeFn as _7a4683 } from "@vanilla-extract/recipes/createRuntimeFn";
301
- var spinner = _7a4683({ defaultClassName: "_4b5tg40", variantClassNames: { color: { current: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "current", size: "md" }, compoundVariants: [] });
423
+ import { createRuntimeFn as _7a4685 } from "@vanilla-extract/recipes/createRuntimeFn";
424
+ var spinner = /* @__PURE__ */ _7a4685({ defaultClassName: "_4b5tg40", variantClassNames: { color: { current: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "current", size: "md" }, compoundVariants: [] });
302
425
 
303
426
  // src/components/Spinner/Spinner.tsx
304
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
305
- var Spinner = /* @__PURE__ */ forwardRef5(function Spinner2({ size, color, label: label4 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
306
- const a11y = label4 ? { role: "status" } : { "aria-hidden": true };
307
- return /* @__PURE__ */ jsxs4("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
308
- /* @__PURE__ */ jsx5(LoaderIcon, { size: "100%" }),
309
- label4 && /* @__PURE__ */ jsx5("span", { className: visuallyHidden, children: label4 })
427
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
428
+ var Spinner = /* @__PURE__ */ forwardRef8(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
429
+ const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
430
+ return /* @__PURE__ */ jsxs7("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
431
+ /* @__PURE__ */ jsx8(LoaderIcon, { size: "100%" }),
432
+ label6 && /* @__PURE__ */ jsx8("span", { className: visuallyHidden, children: label6 })
310
433
  ] });
311
434
  });
312
435
 
313
436
  // src/components/Button/Button.css.ts
314
- import { createRuntimeFn as _7a4684 } from "@vanilla-extract/recipes/createRuntimeFn";
315
- var button = _7a4684({ defaultClassName: "xcekda6", variantClassNames: { variant: { solid: "xcekda7", soft: "xcekda8", outline: "xcekda9", ghost: "xcekdaa" }, color: { primary: "xcekdab", neutral: "xcekdac", danger: "xcekdad" }, size: { sm: "xcekdae", md: "xcekdaf", lg: "xcekdag" }, fullWidth: { true: "xcekdah" } }, defaultVariants: { variant: "solid", color: "primary", size: "md" }, compoundVariants: [] });
316
- var icon2 = "xcekdai";
437
+ import { createRuntimeFn as _7a4686 } from "@vanilla-extract/recipes/createRuntimeFn";
438
+ var button = /* @__PURE__ */ _7a4686({ defaultClassName: "xcekda6", variantClassNames: { variant: { solid: "xcekda7", soft: "xcekda8", outline: "xcekda9", ghost: "xcekdaa" }, color: { primary: "xcekdab", neutral: "xcekdac", danger: "xcekdad" }, size: { sm: "xcekdae", md: "xcekdaf", lg: "xcekdag" }, fullWidth: { true: "xcekdah" } }, defaultVariants: { variant: "solid", color: "primary", size: "md" }, compoundVariants: [] });
439
+ var icon3 = "xcekdai";
317
440
 
318
441
  // src/components/Button/Button.tsx
319
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
320
- var Button = /* @__PURE__ */ forwardRef6(function Button2({
442
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
443
+ var Button = /* @__PURE__ */ forwardRef9(function Button2({
321
444
  variant,
322
445
  color,
323
446
  size,
@@ -338,8 +461,8 @@ var Button = /* @__PURE__ */ forwardRef6(function Button2({
338
461
  }
339
462
  onClick?.(event);
340
463
  };
341
- const leading = loading ? /* @__PURE__ */ jsx6(Spinner, { size: "sm", label: "" }) : startIcon;
342
- return /* @__PURE__ */ jsxs5(
464
+ const leading = loading ? /* @__PURE__ */ jsx9(Spinner, { size: "sm", label: "" }) : startIcon;
465
+ return /* @__PURE__ */ jsxs8(
343
466
  "button",
344
467
  {
345
468
  ref,
@@ -350,70 +473,70 @@ var Button = /* @__PURE__ */ forwardRef6(function Button2({
350
473
  onClick: handleClick,
351
474
  ...rest,
352
475
  children: [
353
- leading && /* @__PURE__ */ jsx6("span", { className: icon2, children: leading }),
476
+ leading && /* @__PURE__ */ jsx9("span", { className: icon3, children: leading }),
354
477
  children,
355
- endIcon && /* @__PURE__ */ jsx6("span", { className: icon2, children: endIcon })
478
+ endIcon && /* @__PURE__ */ jsx9("span", { className: icon3, children: endIcon })
356
479
  ]
357
480
  }
358
481
  );
359
482
  });
360
483
 
361
484
  // src/components/Card/Card.tsx
362
- import { forwardRef as forwardRef7 } from "react";
485
+ import { forwardRef as forwardRef10 } from "react";
363
486
 
364
487
  // src/components/Card/Card.css.ts
365
- import { createRuntimeFn as _7a4685 } from "@vanilla-extract/recipes/createRuntimeFn";
488
+ import { createRuntimeFn as _7a4687 } from "@vanilla-extract/recipes/createRuntimeFn";
366
489
  var body = "dnuf1u9";
367
- var card = _7a4685({ 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: [] });
490
+ var card = /* @__PURE__ */ _7a4687({ 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: [] });
368
491
  var footer = "dnuf1ua";
369
492
  var header2 = "dnuf1u8";
370
493
 
371
494
  // src/components/Card/Card.tsx
372
- import { jsx as jsx7 } from "react/jsx-runtime";
373
- var Card = /* @__PURE__ */ forwardRef7(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
374
- return /* @__PURE__ */ jsx7(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
495
+ import { jsx as jsx10 } from "react/jsx-runtime";
496
+ var Card = /* @__PURE__ */ forwardRef10(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
497
+ return /* @__PURE__ */ jsx10(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
375
498
  });
376
- var CardHeader = /* @__PURE__ */ forwardRef7(function CardHeader2({ className, ...rest }, ref) {
377
- return /* @__PURE__ */ jsx7("div", { ref, className: cx(header2, className), ...rest });
499
+ var CardHeader = /* @__PURE__ */ forwardRef10(function CardHeader2({ className, ...rest }, ref) {
500
+ return /* @__PURE__ */ jsx10("div", { ref, className: cx(header2, className), ...rest });
378
501
  });
379
- var CardBody = /* @__PURE__ */ forwardRef7(function CardBody2({ className, ...rest }, ref) {
380
- return /* @__PURE__ */ jsx7("div", { ref, className: cx(body, className), ...rest });
502
+ var CardBody = /* @__PURE__ */ forwardRef10(function CardBody2({ className, ...rest }, ref) {
503
+ return /* @__PURE__ */ jsx10("div", { ref, className: cx(body, className), ...rest });
381
504
  });
382
- var CardFooter = /* @__PURE__ */ forwardRef7(function CardFooter2({ className, ...rest }, ref) {
383
- return /* @__PURE__ */ jsx7("div", { ref, className: cx(footer, className), ...rest });
505
+ var CardFooter = /* @__PURE__ */ forwardRef10(function CardFooter2({ className, ...rest }, ref) {
506
+ return /* @__PURE__ */ jsx10("div", { ref, className: cx(footer, className), ...rest });
384
507
  });
385
508
 
386
509
  // src/components/Checkbox/Checkbox.tsx
387
- import { forwardRef as forwardRef8, useEffect, useRef } from "react";
510
+ import { forwardRef as forwardRef11, useEffect, useRef } from "react";
388
511
 
389
512
  // src/utils/mergeRefs.ts
390
513
  function mergeRefs(...refs) {
391
- return (value2) => {
514
+ return (value4) => {
392
515
  for (const ref of refs) {
393
- if (typeof ref === "function") ref(value2);
394
- else if (ref) ref.current = value2;
516
+ if (typeof ref === "function") ref(value4);
517
+ else if (ref) ref.current = value4;
395
518
  }
396
519
  };
397
520
  }
398
521
 
399
522
  // src/components/Checkbox/Checkbox.css.ts
400
- import { createRuntimeFn as _7a4686 } from "@vanilla-extract/recipes/createRuntimeFn";
523
+ import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
401
524
  var checkIcon = "_1y7mzsn8 _1y7mzsn7";
402
- var control = _7a4686({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
525
+ var control = /* @__PURE__ */ _7a4688({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
403
526
  var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
404
527
  var input = "_1y7mzsn6";
405
- var root4 = _7a4686({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
528
+ var root4 = /* @__PURE__ */ _7a4688({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
406
529
 
407
530
  // src/components/Checkbox/Checkbox.tsx
408
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
409
- var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label4, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
531
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
532
+ var Checkbox = /* @__PURE__ */ forwardRef11(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
410
533
  const innerRef = useRef(null);
411
534
  useEffect(() => {
412
535
  if (innerRef.current) innerRef.current.indeterminate = indeterminate;
413
536
  }, [indeterminate]);
414
- return /* @__PURE__ */ jsxs6("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
415
- /* @__PURE__ */ jsxs6("span", { className: control({ size }), children: [
416
- /* @__PURE__ */ jsx8(
537
+ return /* @__PURE__ */ jsxs9("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
538
+ /* @__PURE__ */ jsxs9("span", { className: control({ size }), children: [
539
+ /* @__PURE__ */ jsx11(
417
540
  "input",
418
541
  {
419
542
  ref: mergeRefs(innerRef, ref),
@@ -424,7 +547,7 @@ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label4, s
424
547
  ...rest
425
548
  }
426
549
  ),
427
- /* @__PURE__ */ jsx8("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx8(
550
+ /* @__PURE__ */ jsx11("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx11(
428
551
  "path",
429
552
  {
430
553
  d: "M5 10.5l3.2 3L15 7",
@@ -434,57 +557,417 @@ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label4, s
434
557
  strokeLinejoin: "round"
435
558
  }
436
559
  ) }),
437
- /* @__PURE__ */ jsx8("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx8("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
560
+ /* @__PURE__ */ jsx11("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx11("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
438
561
  ] }),
439
- label4
562
+ label6
563
+ ] });
564
+ });
565
+
566
+ // src/components/Combobox/Combobox.tsx
567
+ import * as Popover from "@radix-ui/react-popover";
568
+ import {
569
+ forwardRef as forwardRef12,
570
+ useEffect as useEffect2,
571
+ useId,
572
+ useMemo as useMemo2,
573
+ useRef as useRef2,
574
+ useState
575
+ } from "react";
576
+ import { CheckIcon, ChevronDownIcon as ChevronDownIcon2 } from "@bestow-ui/icons";
577
+
578
+ // src/components/Input/Input.css.ts
579
+ import { createRuntimeFn as _7a4689 } from "@vanilla-extract/recipes/createRuntimeFn";
580
+ var adornment = "_19p5zvh6";
581
+ var field = "_19p5zvh7";
582
+ var fieldFullWidth = "_19p5zvh8";
583
+ var helperText = /* @__PURE__ */ _7a4689({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
584
+ var input2 = "_19p5zvh5";
585
+ var label = "_19p5zvh9";
586
+ var requiredMark = "_19p5zvha";
587
+ var root5 = /* @__PURE__ */ _7a4689({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
588
+
589
+ // src/components/Select/Select.css.ts
590
+ var content3 = "_1kx81e83";
591
+ var icon4 = "_1kx81e82";
592
+ var item3 = "_1kx81e85";
593
+ var itemIndicator = "_1kx81e86";
594
+ var trigger2 = "_1kx81e80";
595
+ var value = "_1kx81e81";
596
+ var viewport = "_1kx81e84";
597
+
598
+ // src/components/Combobox/Combobox.css.ts
599
+ var content4 = "c2pbq71";
600
+ var empty = "c2pbq72";
601
+ var toggle = "c2pbq70";
602
+
603
+ // src/components/Combobox/Combobox.tsx
604
+ import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
605
+ var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
606
+ var Combobox = /* @__PURE__ */ forwardRef12(function Combobox2(props, ref) {
607
+ const {
608
+ options,
609
+ value: value4,
610
+ defaultValue,
611
+ onValueChange,
612
+ filter = defaultFilter,
613
+ emptyMessage = "\uACB0\uACFC\uAC00 \uC5C6\uC5B4\uC694",
614
+ placeholder,
615
+ label: label6,
616
+ helperText: helperText3,
617
+ error,
618
+ size,
619
+ fullWidth,
620
+ disabled,
621
+ required,
622
+ name,
623
+ id,
624
+ "aria-label": ariaLabel,
625
+ toggleLabel = "\uBAA9\uB85D \uC5F4\uAE30",
626
+ className
627
+ } = props;
628
+ const generatedId = useId();
629
+ const inputId = id ?? generatedId;
630
+ const labelId = `${inputId}-label`;
631
+ const listId = `${inputId}-listbox`;
632
+ const helperId = helperText3 ? `${inputId}-helper` : void 0;
633
+ const optionId = (index) => `${inputId}-option-${index}`;
634
+ const portal2 = usePortalProps();
635
+ const inputRef = useRef2(null);
636
+ const anchorRef = useRef2(null);
637
+ const isControlled = "value" in props;
638
+ const [innerValue, setInnerValue] = useState(defaultValue);
639
+ const selectedValue = isControlled ? value4 : innerValue;
640
+ const selectedOption = options.find((o) => o.value === selectedValue);
641
+ const [open, setOpen] = useState(false);
642
+ const [query, setQuery] = useState(null);
643
+ const [activeIndex, setActiveIndex] = useState(-1);
644
+ const filtered = useMemo2(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
645
+ const inputText = query ?? selectedOption?.label ?? "";
646
+ const firstEnabled = (list4, from = 0, step = 1) => {
647
+ for (let i = from; i >= 0 && i < list4.length; i += step) if (!list4[i].disabled) return i;
648
+ return -1;
649
+ };
650
+ const openList = (list4 = filtered, preferLast = false) => {
651
+ setOpen(true);
652
+ const selectedIndex = list4.findIndex((o) => o.value === selectedValue);
653
+ setActiveIndex(
654
+ selectedIndex >= 0 && !list4[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list4, list4.length - 1, -1) : firstEnabled(list4)
655
+ );
656
+ };
657
+ const close2 = () => {
658
+ setOpen(false);
659
+ setQuery(null);
660
+ setActiveIndex(-1);
661
+ };
662
+ const select = (option2) => {
663
+ if (option2.disabled) return;
664
+ if (!isControlled) setInnerValue(option2.value);
665
+ if (option2.value !== selectedValue) onValueChange?.(option2.value);
666
+ close2();
667
+ };
668
+ const move = (step) => {
669
+ const start = activeIndex < 0 ? step === 1 ? 0 : filtered.length - 1 : activeIndex + step;
670
+ const next = firstEnabled(filtered, start, step);
671
+ if (next >= 0) setActiveIndex(next);
672
+ };
673
+ const handleChange = (event) => {
674
+ const nextQuery = event.target.value;
675
+ const nextList = nextQuery ? options.filter((o) => filter(o, nextQuery)) : options;
676
+ setQuery(nextQuery);
677
+ setOpen(true);
678
+ setActiveIndex(firstEnabled(nextList));
679
+ };
680
+ const handleKeyDown = (event) => {
681
+ switch (event.key) {
682
+ case "ArrowDown":
683
+ event.preventDefault();
684
+ if (!open) openList();
685
+ else move(1);
686
+ break;
687
+ case "ArrowUp":
688
+ event.preventDefault();
689
+ if (!open) openList(filtered, true);
690
+ else move(-1);
691
+ break;
692
+ case "Enter":
693
+ if (open) {
694
+ event.preventDefault();
695
+ const option2 = filtered[activeIndex];
696
+ if (option2) select(option2);
697
+ }
698
+ break;
699
+ case "Escape":
700
+ if (open) {
701
+ event.preventDefault();
702
+ close2();
703
+ }
704
+ break;
705
+ case "Tab":
706
+ if (open) close2();
707
+ break;
708
+ }
709
+ };
710
+ useEffect2(() => {
711
+ if (!open || activeIndex < 0) return;
712
+ document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
713
+ }, [open, activeIndex]);
714
+ const hasOptions = filtered.length > 0;
715
+ return /* @__PURE__ */ jsxs10("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
716
+ label6 && /* @__PURE__ */ jsxs10("label", { id: labelId, htmlFor: inputId, className: label, children: [
717
+ label6,
718
+ required && /* @__PURE__ */ jsx12("span", { className: requiredMark, "aria-hidden": true, children: "*" })
719
+ ] }),
720
+ /* @__PURE__ */ jsxs10(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
721
+ /* @__PURE__ */ jsx12(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs10(
722
+ "div",
723
+ {
724
+ ref: anchorRef,
725
+ className: cx(root5({ size, fullWidth }), className),
726
+ "data-invalid": error || void 0,
727
+ "data-disabled": disabled || void 0,
728
+ children: [
729
+ /* @__PURE__ */ jsx12(
730
+ "input",
731
+ {
732
+ ref: mergeRefs(ref, inputRef),
733
+ id: inputId,
734
+ type: "text",
735
+ role: "combobox",
736
+ "aria-expanded": open,
737
+ "aria-controls": open && hasOptions ? listId : void 0,
738
+ "aria-autocomplete": "list",
739
+ "aria-activedescendant": open && activeIndex >= 0 ? optionId(activeIndex) : void 0,
740
+ "aria-label": label6 ? void 0 : ariaLabel,
741
+ "aria-invalid": error || void 0,
742
+ "aria-required": required || void 0,
743
+ "aria-describedby": helperId,
744
+ autoComplete: "off",
745
+ placeholder,
746
+ disabled,
747
+ value: inputText,
748
+ onChange: handleChange,
749
+ onKeyDown: handleKeyDown,
750
+ onBlur: () => {
751
+ if (open) close2();
752
+ },
753
+ className: input2
754
+ }
755
+ ),
756
+ /* @__PURE__ */ jsx12(
757
+ "button",
758
+ {
759
+ type: "button",
760
+ tabIndex: -1,
761
+ "aria-label": toggleLabel,
762
+ "aria-expanded": open,
763
+ disabled,
764
+ className: toggle,
765
+ onMouseDown: (event) => event.preventDefault(),
766
+ onClick: () => {
767
+ if (open) close2();
768
+ else openList(options);
769
+ inputRef.current?.focus();
770
+ },
771
+ children: /* @__PURE__ */ jsx12(ChevronDownIcon2, { size: 16 })
772
+ }
773
+ )
774
+ ]
775
+ }
776
+ ) }),
777
+ /* @__PURE__ */ jsx12(Popover.Portal, { children: /* @__PURE__ */ jsx12(
778
+ Popover.Content,
779
+ {
780
+ role: "presentation",
781
+ align: "start",
782
+ sideOffset: 4,
783
+ collisionPadding: 8,
784
+ className: cx(portal2.className, content4),
785
+ style: portal2.style,
786
+ onOpenAutoFocus: (event) => event.preventDefault(),
787
+ onCloseAutoFocus: (event) => event.preventDefault(),
788
+ onMouseDown: (event) => event.preventDefault(),
789
+ onInteractOutside: (event) => {
790
+ if (anchorRef.current?.contains(event.target)) event.preventDefault();
791
+ },
792
+ children: hasOptions ? /* @__PURE__ */ jsx12(
793
+ "div",
794
+ {
795
+ id: listId,
796
+ role: "listbox",
797
+ "aria-labelledby": label6 ? labelId : void 0,
798
+ "aria-label": label6 ? void 0 : ariaLabel,
799
+ children: filtered.map((option2, index) => {
800
+ const isSelected = option2.value === selectedValue;
801
+ return (
802
+ // aria-activedescendant 패턴: 포커스·키보드는 입력창이 맡고 항목은 포커스를 받지 않는다 (WAI-ARIA combobox)
803
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
804
+ /* @__PURE__ */ jsxs10(
805
+ "div",
806
+ {
807
+ id: optionId(index),
808
+ role: "option",
809
+ "aria-selected": isSelected,
810
+ "aria-disabled": option2.disabled || void 0,
811
+ "data-highlighted": index === activeIndex ? "" : void 0,
812
+ "data-state": isSelected ? "checked" : "unchecked",
813
+ "data-disabled": option2.disabled ? "" : void 0,
814
+ className: item3,
815
+ onMouseDown: (event) => event.preventDefault(),
816
+ onMouseMove: () => !option2.disabled && setActiveIndex(index),
817
+ onClick: () => select(option2),
818
+ children: [
819
+ option2.label,
820
+ isSelected && /* @__PURE__ */ jsx12("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ jsx12(CheckIcon, { size: 16 }) })
821
+ ]
822
+ },
823
+ option2.value
824
+ )
825
+ );
826
+ })
827
+ }
828
+ ) : /* @__PURE__ */ jsx12("div", { className: empty, role: "status", children: emptyMessage })
829
+ }
830
+ ) })
831
+ ] }),
832
+ name && /* @__PURE__ */ jsx12("input", { type: "hidden", name, value: selectedValue ?? "" }),
833
+ helperText3 && /* @__PURE__ */ jsx12("p", { id: helperId, className: helperText({ error }), children: helperText3 })
440
834
  ] });
441
835
  });
442
836
 
443
837
  // src/components/Divider/Divider.tsx
444
- import { forwardRef as forwardRef9 } from "react";
838
+ import { forwardRef as forwardRef13 } from "react";
445
839
 
446
840
  // src/components/Divider/Divider.css.ts
447
- import { createRuntimeFn as _7a4687 } from "@vanilla-extract/recipes/createRuntimeFn";
448
- var divider = _7a4687({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
841
+ import { createRuntimeFn as _7a46810 } from "@vanilla-extract/recipes/createRuntimeFn";
842
+ var divider = /* @__PURE__ */ _7a46810({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
449
843
  var labeled = "_1t3gq8v3";
450
844
  var line = "_1t3gq8v4";
451
845
 
452
846
  // src/components/Divider/Divider.tsx
453
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
454
- var Divider = /* @__PURE__ */ forwardRef9(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
847
+ import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
848
+ var Divider = /* @__PURE__ */ forwardRef13(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
455
849
  if (children && orientation === "horizontal") {
456
- return /* @__PURE__ */ jsxs7("div", { ref, className: cx(labeled, className), ...rest, children: [
457
- /* @__PURE__ */ jsx9("span", { className: line, "aria-hidden": true }),
850
+ return /* @__PURE__ */ jsxs11("div", { ref, className: cx(labeled, className), ...rest, children: [
851
+ /* @__PURE__ */ jsx13("span", { className: line, "aria-hidden": true }),
458
852
  children,
459
- /* @__PURE__ */ jsx9("span", { className: line, "aria-hidden": true })
853
+ /* @__PURE__ */ jsx13("span", { className: line, "aria-hidden": true })
460
854
  ] });
461
855
  }
462
856
  const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation === "vertical" ? "vertical" : void 0 };
463
- return /* @__PURE__ */ jsx9("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
857
+ return /* @__PURE__ */ jsx13("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
464
858
  });
465
859
 
860
+ // src/components/Drawer/Drawer.tsx
861
+ import * as Dialog from "@radix-ui/react-dialog";
862
+ import { XIcon as XIcon2 } from "@bestow-ui/icons";
863
+
864
+ // src/components/IconButton/IconButton.tsx
865
+ import { forwardRef as forwardRef14 } from "react";
866
+
867
+ // src/components/IconButton/IconButton.css.ts
868
+ import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
869
+ var iconButton = /* @__PURE__ */ _7a46811({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
870
+
871
+ // src/components/IconButton/IconButton.tsx
872
+ import { jsx as jsx14 } from "react/jsx-runtime";
873
+ var IconButton = /* @__PURE__ */ forwardRef14(function IconButton2({ variant = "ghost", color = "neutral", size, loading, className, children, ...rest }, ref) {
874
+ return /* @__PURE__ */ jsx14(
875
+ Button,
876
+ {
877
+ ref,
878
+ variant,
879
+ color,
880
+ size,
881
+ loading,
882
+ className: cx(iconButton({ size }), className),
883
+ ...rest,
884
+ children: !loading && children
885
+ }
886
+ );
887
+ });
888
+
889
+ // src/components/Drawer/Drawer.css.ts
890
+ import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
891
+ var body2 = "nmobyvy";
892
+ var closeButton2 = "nmobyvx";
893
+ var content5 = /* @__PURE__ */ _7a46812({ defaultClassName: "nmobyv9", variantClassNames: { side: { right: "nmobyva", left: "nmobyvb", top: "nmobyvc", bottom: "nmobyvd" }, size: { sm: "nmobyve", md: "nmobyvf", lg: "nmobyvg" } }, defaultVariants: { side: "right", size: "md" }, compoundVariants: [[{ side: "right", size: "sm" }, "nmobyvh"], [{ side: "right", size: "md" }, "nmobyvi"], [{ side: "right", size: "lg" }, "nmobyvj"], [{ side: "left", size: "sm" }, "nmobyvk"], [{ side: "left", size: "md" }, "nmobyvl"], [{ side: "left", size: "lg" }, "nmobyvm"], [{ side: "top", size: "sm" }, "nmobyvn"], [{ side: "top", size: "md" }, "nmobyvo"], [{ side: "top", size: "lg" }, "nmobyvp"], [{ side: "bottom", size: "sm" }, "nmobyvq"], [{ side: "bottom", size: "md" }, "nmobyvr"], [{ side: "bottom", size: "lg" }, "nmobyvs"]] });
894
+ var description2 = "nmobyvw";
895
+ var footer2 = "nmobyvz";
896
+ var header3 = "nmobyvt";
897
+ var headings = "nmobyvu";
898
+ var overlay = "nmobyv0";
899
+ var title2 = "nmobyvv";
900
+
901
+ // src/components/Drawer/Drawer.tsx
902
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
903
+ function Drawer({
904
+ open,
905
+ defaultOpen,
906
+ onOpenChange,
907
+ trigger: trigger4,
908
+ title: title6,
909
+ description: description6,
910
+ children,
911
+ footer: footer6,
912
+ side,
913
+ size,
914
+ hideCloseButton = false,
915
+ closeOnOverlayClick = true,
916
+ className
917
+ }) {
918
+ const portal2 = usePortalProps();
919
+ return /* @__PURE__ */ jsxs12(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
920
+ trigger4 && /* @__PURE__ */ jsx15(Dialog.Trigger, { asChild: true, children: trigger4 }),
921
+ /* @__PURE__ */ jsxs12(Dialog.Portal, { children: [
922
+ /* @__PURE__ */ jsx15(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
923
+ /* @__PURE__ */ jsxs12(
924
+ Dialog.Content,
925
+ {
926
+ className: cx(portal2.className, content5({ side, size }), className),
927
+ style: portal2.style,
928
+ "data-side": side ?? "right",
929
+ onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
930
+ ...description6 ? {} : { "aria-describedby": void 0 },
931
+ children: [
932
+ /* @__PURE__ */ jsxs12("div", { className: header3, children: [
933
+ /* @__PURE__ */ jsxs12("div", { className: headings, children: [
934
+ /* @__PURE__ */ jsx15(Dialog.Title, { className: title2, children: title6 }),
935
+ description6 && /* @__PURE__ */ jsx15(Dialog.Description, { className: description2, children: description6 })
936
+ ] }),
937
+ !hideCloseButton && /* @__PURE__ */ jsx15(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx15(IconButton, { "aria-label": "\uB2EB\uAE30", size: "sm", className: closeButton2, children: /* @__PURE__ */ jsx15(XIcon2, {}) }) })
938
+ ] }),
939
+ children && /* @__PURE__ */ jsx15("div", { className: body2, children }),
940
+ footer6 && /* @__PURE__ */ jsx15("div", { className: footer2, children: footer6 })
941
+ ]
942
+ }
943
+ )
944
+ ] })
945
+ ] });
946
+ }
947
+ var DrawerClose = Dialog.Close;
948
+
466
949
  // src/components/DropdownMenu/DropdownMenu.tsx
467
950
  import * as RadixMenu from "@radix-ui/react-dropdown-menu";
468
- import { forwardRef as forwardRef10 } from "react";
951
+ import { forwardRef as forwardRef15 } from "react";
469
952
 
470
953
  // src/components/DropdownMenu/DropdownMenu.css.ts
471
- var content2 = "_1d7ahux0";
954
+ var content6 = "_1d7ahux0";
472
955
  var danger = "_1d7ahux2";
473
- var icon3 = "_1d7ahux3";
474
- var item2 = "_1d7ahux1";
475
- var label = "_1d7ahux5";
476
- var separator = "_1d7ahux6";
956
+ var icon5 = "_1d7ahux3";
957
+ var item4 = "_1d7ahux1";
958
+ var label2 = "_1d7ahux5";
959
+ var separator2 = "_1d7ahux6";
477
960
  var shortcut = "_1d7ahux4";
478
961
 
479
962
  // src/components/DropdownMenu/DropdownMenu.tsx
480
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
963
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
481
964
  var DropdownMenu = RadixMenu.Root;
482
965
  var DropdownMenuTrigger = RadixMenu.Trigger;
483
966
  var DropdownMenuGroup = RadixMenu.Group;
484
- var DropdownMenuContent = /* @__PURE__ */ forwardRef10(
967
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef15(
485
968
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
486
969
  const portal2 = usePortalProps();
487
- return /* @__PURE__ */ jsx10(RadixMenu.Portal, { children: /* @__PURE__ */ jsx10(
970
+ return /* @__PURE__ */ jsx16(RadixMenu.Portal, { children: /* @__PURE__ */ jsx16(
488
971
  RadixMenu.Content,
489
972
  {
490
973
  ref,
@@ -492,59 +975,46 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef10(
492
975
  align,
493
976
  sideOffset,
494
977
  collisionPadding,
495
- className: cx(portal2.className, content2, className),
978
+ className: cx(portal2.className, content6, className),
496
979
  style: { ...portal2.style, ...style },
497
980
  ...rest
498
981
  }
499
982
  ) });
500
983
  }
501
984
  );
502
- var DropdownMenuItem = /* @__PURE__ */ forwardRef10(
503
- function DropdownMenuItem2({ icon: icon5, shortcut: shortcut2, color = "default", className, children, ...rest }, ref) {
504
- return /* @__PURE__ */ jsxs8(RadixMenu.Item, { ref, className: cx(item2, color === "danger" && danger, className), ...rest, children: [
505
- icon5 && /* @__PURE__ */ jsx10("span", { className: icon3, "aria-hidden": true, children: icon5 }),
985
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef15(
986
+ function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "default", className, children, ...rest }, ref) {
987
+ return /* @__PURE__ */ jsxs13(RadixMenu.Item, { ref, className: cx(item4, color === "danger" && danger, className), ...rest, children: [
988
+ icon6 && /* @__PURE__ */ jsx16("span", { className: icon5, "aria-hidden": true, children: icon6 }),
506
989
  children,
507
- shortcut2 && /* @__PURE__ */ jsx10("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
990
+ shortcut2 && /* @__PURE__ */ jsx16("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
508
991
  ] });
509
992
  }
510
993
  );
511
- var DropdownMenuLabel = /* @__PURE__ */ forwardRef10(
994
+ var DropdownMenuLabel = /* @__PURE__ */ forwardRef15(
512
995
  function DropdownMenuLabel2({ className, ...rest }, ref) {
513
- return /* @__PURE__ */ jsx10(RadixMenu.Label, { ref, className: cx(label, className), ...rest });
996
+ return /* @__PURE__ */ jsx16(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
514
997
  }
515
998
  );
516
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef10(
999
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef15(
517
1000
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
518
- return /* @__PURE__ */ jsx10(RadixMenu.Separator, { ref, className: cx(separator, className), ...rest });
1001
+ return /* @__PURE__ */ jsx16(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
519
1002
  }
520
1003
  );
521
1004
 
522
1005
  // src/components/Input/Input.tsx
523
- import { forwardRef as forwardRef11 } from "react";
524
-
525
- // src/components/Input/Input.css.ts
526
- import { createRuntimeFn as _7a4688 } from "@vanilla-extract/recipes/createRuntimeFn";
527
- var adornment = "_19p5zvh6";
528
- var field = "_19p5zvh7";
529
- var fieldFullWidth = "_19p5zvh8";
530
- var helperText = _7a4688({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
531
- var input2 = "_19p5zvh5";
532
- var label2 = "_19p5zvh9";
533
- var requiredMark = "_19p5zvha";
534
- var root5 = _7a4688({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
535
-
536
- // src/components/Input/Input.tsx
537
- import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
538
- var Input = /* @__PURE__ */ forwardRef11(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
539
- return /* @__PURE__ */ jsxs9(
1006
+ import { forwardRef as forwardRef16 } from "react";
1007
+ import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
1008
+ var Input = /* @__PURE__ */ forwardRef16(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
1009
+ return /* @__PURE__ */ jsxs14(
540
1010
  "div",
541
1011
  {
542
1012
  className: cx(root5({ size, fullWidth }), rootClassName),
543
1013
  "data-invalid": invalid || void 0,
544
1014
  "data-disabled": disabled || void 0,
545
1015
  children: [
546
- startAdornment && /* @__PURE__ */ jsx11("span", { className: adornment, children: startAdornment }),
547
- /* @__PURE__ */ jsx11(
1016
+ startAdornment && /* @__PURE__ */ jsx17("span", { className: adornment, children: startAdornment }),
1017
+ /* @__PURE__ */ jsx17(
548
1018
  "input",
549
1019
  {
550
1020
  ref,
@@ -554,25 +1024,25 @@ var Input = /* @__PURE__ */ forwardRef11(function Input2({ size, invalid, fullWi
554
1024
  ...rest
555
1025
  }
556
1026
  ),
557
- endAdornment && /* @__PURE__ */ jsx11("span", { className: adornment, children: endAdornment })
1027
+ endAdornment && /* @__PURE__ */ jsx17("span", { className: adornment, children: endAdornment })
558
1028
  ]
559
1029
  }
560
1030
  );
561
1031
  });
562
1032
 
563
1033
  // src/components/Input/TextField.tsx
564
- import { forwardRef as forwardRef12, useId } from "react";
565
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
566
- var TextField = /* @__PURE__ */ forwardRef12(function TextField2({ label: label4, helperText: helperText2, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
567
- const generatedId = useId();
1034
+ import { forwardRef as forwardRef17, useId as useId2 } from "react";
1035
+ import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
1036
+ var TextField = /* @__PURE__ */ forwardRef17(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
1037
+ const generatedId = useId2();
568
1038
  const inputId = id ?? generatedId;
569
- const helperId = helperText2 ? `${inputId}-helper` : void 0;
570
- return /* @__PURE__ */ jsxs10("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
571
- label4 && /* @__PURE__ */ jsxs10("label", { htmlFor: inputId, className: label2, children: [
572
- label4,
573
- required && /* @__PURE__ */ jsx12("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1039
+ const helperId = helperText3 ? `${inputId}-helper` : void 0;
1040
+ return /* @__PURE__ */ jsxs15("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1041
+ label6 && /* @__PURE__ */ jsxs15("label", { htmlFor: inputId, className: label, children: [
1042
+ label6,
1043
+ required && /* @__PURE__ */ jsx18("span", { className: requiredMark, "aria-hidden": true, children: "*" })
574
1044
  ] }),
575
- /* @__PURE__ */ jsx12(
1045
+ /* @__PURE__ */ jsx18(
576
1046
  Input,
577
1047
  {
578
1048
  ref,
@@ -584,75 +1054,75 @@ var TextField = /* @__PURE__ */ forwardRef12(function TextField2({ label: label4
584
1054
  ...rest
585
1055
  }
586
1056
  ),
587
- helperText2 && /* @__PURE__ */ jsx12("p", { id: helperId, className: helperText({ error }), children: helperText2 })
1057
+ helperText3 && /* @__PURE__ */ jsx18("p", { id: helperId, className: helperText({ error }), children: helperText3 })
588
1058
  ] });
589
1059
  });
590
1060
 
591
1061
  // src/components/Modal/Modal.tsx
592
- import * as Dialog from "@radix-ui/react-dialog";
593
- import { XIcon } from "@bestow-ui/icons";
1062
+ import * as Dialog2 from "@radix-ui/react-dialog";
1063
+ import { XIcon as XIcon3 } from "@bestow-ui/icons";
594
1064
 
595
1065
  // src/components/Modal/Modal.css.ts
596
- import { createRuntimeFn as _7a4689 } from "@vanilla-extract/recipes/createRuntimeFn";
597
- var body2 = "_1pdsmv0a";
598
- var closeButton = "_1pdsmv09";
599
- var content3 = _7a4689({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
600
- var description = "_1pdsmv08";
601
- var footer2 = "_1pdsmv0b";
602
- var header3 = "_1pdsmv05";
603
- var headings = "_1pdsmv06";
604
- var overlay = "_1pdsmv00";
605
- var title = "_1pdsmv07";
1066
+ import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
1067
+ var body3 = "_1pdsmv0a";
1068
+ var closeButton3 = "_1pdsmv09";
1069
+ var content7 = /* @__PURE__ */ _7a46813({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1070
+ var description3 = "_1pdsmv08";
1071
+ var footer3 = "_1pdsmv0b";
1072
+ var header4 = "_1pdsmv05";
1073
+ var headings2 = "_1pdsmv06";
1074
+ var overlay2 = "_1pdsmv00";
1075
+ var title3 = "_1pdsmv07";
606
1076
 
607
1077
  // src/components/Modal/Modal.tsx
608
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
1078
+ import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
609
1079
  function Modal({
610
1080
  open,
611
1081
  defaultOpen,
612
1082
  onOpenChange,
613
1083
  trigger: trigger4,
614
- title: title4,
615
- description: description4,
1084
+ title: title6,
1085
+ description: description6,
616
1086
  children,
617
- footer: footer4,
1087
+ footer: footer6,
618
1088
  size,
619
1089
  hideCloseButton = false,
620
1090
  closeOnOverlayClick = true,
621
1091
  className
622
1092
  }) {
623
1093
  const portal2 = usePortalProps();
624
- return /* @__PURE__ */ jsxs11(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
625
- trigger4 && /* @__PURE__ */ jsx13(Dialog.Trigger, { asChild: true, children: trigger4 }),
626
- /* @__PURE__ */ jsxs11(Dialog.Portal, { children: [
627
- /* @__PURE__ */ jsx13(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
628
- /* @__PURE__ */ jsxs11(
629
- Dialog.Content,
1094
+ return /* @__PURE__ */ jsxs16(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1095
+ trigger4 && /* @__PURE__ */ jsx19(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1096
+ /* @__PURE__ */ jsxs16(Dialog2.Portal, { children: [
1097
+ /* @__PURE__ */ jsx19(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1098
+ /* @__PURE__ */ jsxs16(
1099
+ Dialog2.Content,
630
1100
  {
631
- className: cx(portal2.className, content3({ size }), className),
1101
+ className: cx(portal2.className, content7({ size }), className),
632
1102
  style: portal2.style,
633
1103
  onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
634
- ...description4 ? {} : { "aria-describedby": void 0 },
1104
+ ...description6 ? {} : { "aria-describedby": void 0 },
635
1105
  children: [
636
- /* @__PURE__ */ jsxs11("div", { className: header3, children: [
637
- /* @__PURE__ */ jsxs11("div", { className: headings, children: [
638
- /* @__PURE__ */ jsx13(Dialog.Title, { className: title, children: title4 }),
639
- description4 && /* @__PURE__ */ jsx13(Dialog.Description, { className: description, children: description4 })
1106
+ /* @__PURE__ */ jsxs16("div", { className: header4, children: [
1107
+ /* @__PURE__ */ jsxs16("div", { className: headings2, children: [
1108
+ /* @__PURE__ */ jsx19(Dialog2.Title, { className: title3, children: title6 }),
1109
+ description6 && /* @__PURE__ */ jsx19(Dialog2.Description, { className: description3, children: description6 })
640
1110
  ] }),
641
- !hideCloseButton && /* @__PURE__ */ jsx13(Dialog.Close, { className: closeButton, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx13(XIcon, { size: 16 }) })
1111
+ !hideCloseButton && /* @__PURE__ */ jsx19(Dialog2.Close, { className: closeButton3, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx19(XIcon3, { size: 16 }) })
642
1112
  ] }),
643
- children && /* @__PURE__ */ jsx13("div", { className: body2, children }),
644
- footer4 && /* @__PURE__ */ jsx13("div", { className: footer2, children: footer4 })
1113
+ children && /* @__PURE__ */ jsx19("div", { className: body3, children }),
1114
+ footer6 && /* @__PURE__ */ jsx19("div", { className: footer3, children: footer6 })
645
1115
  ]
646
1116
  }
647
1117
  )
648
1118
  ] })
649
1119
  ] });
650
1120
  }
651
- var ModalClose = Dialog.Close;
1121
+ var ModalClose = Dialog2.Close;
652
1122
 
653
1123
  // src/components/Pagination/Pagination.tsx
654
- import { ChevronLeftIcon, ChevronRightIcon } from "@bestow-ui/icons";
655
- import { forwardRef as forwardRef13, useState } from "react";
1124
+ import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2 } from "@bestow-ui/icons";
1125
+ import { forwardRef as forwardRef18, useState as useState2 } from "react";
656
1126
 
657
1127
  // src/components/Pagination/getPaginationItems.ts
658
1128
  var range = (start, end) => end < start ? [] : Array.from({ length: end - start + 1 }, (_, i) => start + i);
@@ -679,15 +1149,15 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
679
1149
  }
680
1150
 
681
1151
  // src/components/Pagination/Pagination.css.ts
682
- import { createRuntimeFn as _7a46810 } from "@vanilla-extract/recipes/createRuntimeFn";
1152
+ import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
683
1153
  var ellipsis = "_1iraoak4";
684
- var item3 = _7a46810({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
685
- var list = "_1iraoak0";
1154
+ var item5 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1155
+ var list2 = "_1iraoak0";
686
1156
 
687
1157
  // src/components/Pagination/Pagination.tsx
688
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
1158
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
689
1159
  var defaultItemLabel = (type, page) => type === "previous" ? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? "\uB2E4\uC74C \uD398\uC774\uC9C0" : `${page} \uD398\uC774\uC9C0`;
690
- var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
1160
+ var Pagination = /* @__PURE__ */ forwardRef18(function Pagination2({
691
1161
  totalPages,
692
1162
  page: pageProp,
693
1163
  defaultPage = 1,
@@ -700,7 +1170,7 @@ var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
700
1170
  "aria-label": ariaLabel = "\uD398\uC774\uC9C0 \uD0D0\uC0C9",
701
1171
  ...rest
702
1172
  }, ref) {
703
- const [uncontrolledPage, setUncontrolledPage] = useState(defaultPage);
1173
+ const [uncontrolledPage, setUncontrolledPage] = useState2(defaultPage);
704
1174
  if (totalPages < 1) return null;
705
1175
  const page = Math.min(Math.max(pageProp ?? uncontrolledPage, 1), totalPages);
706
1176
  const goTo = (next) => {
@@ -708,9 +1178,9 @@ var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
708
1178
  if (pageProp === void 0) setUncontrolledPage(next);
709
1179
  onPageChange?.(next);
710
1180
  };
711
- const itemClass = item3({ size });
712
- return /* @__PURE__ */ jsx14("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs12("ul", { className: list, children: [
713
- /* @__PURE__ */ jsx14("li", { children: /* @__PURE__ */ jsx14(
1181
+ const itemClass = item5({ size });
1182
+ return /* @__PURE__ */ jsx20("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs17("ul", { className: list2, children: [
1183
+ /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
714
1184
  "button",
715
1185
  {
716
1186
  type: "button",
@@ -718,23 +1188,23 @@ var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
718
1188
  "aria-label": getItemLabel("previous", page - 1),
719
1189
  disabled: page <= 1,
720
1190
  onClick: () => goTo(page - 1),
721
- children: /* @__PURE__ */ jsx14(ChevronLeftIcon, { size: 16 })
1191
+ children: /* @__PURE__ */ jsx20(ChevronLeftIcon, { size: 16 })
722
1192
  }
723
1193
  ) }),
724
1194
  getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
725
- (item5) => typeof item5 === "number" ? /* @__PURE__ */ jsx14("li", { children: /* @__PURE__ */ jsx14(
1195
+ (item6) => typeof item6 === "number" ? /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
726
1196
  "button",
727
1197
  {
728
1198
  type: "button",
729
1199
  className: itemClass,
730
- "aria-label": getItemLabel("page", item5),
731
- "aria-current": item5 === page ? "page" : void 0,
732
- onClick: () => goTo(item5),
733
- children: item5
1200
+ "aria-label": getItemLabel("page", item6),
1201
+ "aria-current": item6 === page ? "page" : void 0,
1202
+ onClick: () => goTo(item6),
1203
+ children: item6
734
1204
  }
735
- ) }, item5) : /* @__PURE__ */ jsx14("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item5)
1205
+ ) }, item6) : /* @__PURE__ */ jsx20("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item6)
736
1206
  ),
737
- /* @__PURE__ */ jsx14("li", { children: /* @__PURE__ */ jsx14(
1207
+ /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
738
1208
  "button",
739
1209
  {
740
1210
  type: "button",
@@ -742,7 +1212,7 @@ var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
742
1212
  "aria-label": getItemLabel("next", page + 1),
743
1213
  disabled: page >= totalPages,
744
1214
  onClick: () => goTo(page + 1),
745
- children: /* @__PURE__ */ jsx14(ChevronRightIcon, { size: 16 })
1215
+ children: /* @__PURE__ */ jsx20(ChevronRightIcon2, { size: 16 })
746
1216
  }
747
1217
  ) })
748
1218
  ] }) });
@@ -750,22 +1220,22 @@ var Pagination = /* @__PURE__ */ forwardRef13(function Pagination2({
750
1220
 
751
1221
  // src/components/Popover/Popover.tsx
752
1222
  import * as RadixPopover from "@radix-ui/react-popover";
753
- import { XIcon as XIcon2 } from "@bestow-ui/icons";
754
- import { useId as useId2 } from "react";
1223
+ import { XIcon as XIcon4 } from "@bestow-ui/icons";
1224
+ import { useId as useId3 } from "react";
755
1225
 
756
1226
  // src/components/Popover/Popover.css.ts
757
1227
  var arrow = "_1j99p8x4";
758
- var closeButton2 = "_1j99p8x3";
759
- var content4 = "_1j99p8x0";
760
- var header4 = "_1j99p8x1";
761
- var title2 = "_1j99p8x2";
1228
+ var closeButton4 = "_1j99p8x3";
1229
+ var content8 = "_1j99p8x0";
1230
+ var header5 = "_1j99p8x1";
1231
+ var title4 = "_1j99p8x2";
762
1232
 
763
1233
  // src/components/Popover/Popover.tsx
764
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
765
- function Popover({
766
- content: content8,
1234
+ import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
1235
+ function Popover2({
1236
+ content: content11,
767
1237
  children,
768
- title: title4,
1238
+ title: title6,
769
1239
  "aria-label": ariaLabel,
770
1240
  showClose = false,
771
1241
  showArrow = false,
@@ -779,27 +1249,27 @@ function Popover({
779
1249
  style
780
1250
  }) {
781
1251
  const portal2 = usePortalProps();
782
- const titleId = useId2();
783
- return /* @__PURE__ */ jsxs13(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
784
- /* @__PURE__ */ jsx15(RadixPopover.Trigger, { asChild: true, children }),
785
- /* @__PURE__ */ jsx15(RadixPopover.Portal, { children: /* @__PURE__ */ jsxs13(
1252
+ const titleId = useId3();
1253
+ return /* @__PURE__ */ jsxs18(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
1254
+ /* @__PURE__ */ jsx21(RadixPopover.Trigger, { asChild: true, children }),
1255
+ /* @__PURE__ */ jsx21(RadixPopover.Portal, { children: /* @__PURE__ */ jsxs18(
786
1256
  RadixPopover.Content,
787
1257
  {
788
1258
  side,
789
1259
  align,
790
1260
  sideOffset: 6,
791
1261
  collisionPadding: 8,
792
- "aria-labelledby": title4 ? titleId : void 0,
793
- "aria-label": title4 ? void 0 : ariaLabel,
794
- className: cx(portal2.className, content4, className),
1262
+ "aria-labelledby": title6 ? titleId : void 0,
1263
+ "aria-label": title6 ? void 0 : ariaLabel,
1264
+ className: cx(portal2.className, content8, className),
795
1265
  style: { ...portal2.style, ...style },
796
1266
  children: [
797
- (title4 || showClose) && /* @__PURE__ */ jsxs13("div", { className: header4, children: [
798
- title4 && /* @__PURE__ */ jsx15("h2", { id: titleId, className: title2, children: title4 }),
799
- showClose && /* @__PURE__ */ jsx15(RadixPopover.Close, { className: closeButton2, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx15(XIcon2, { size: 16 }) })
1267
+ (title6 || showClose) && /* @__PURE__ */ jsxs18("div", { className: header5, children: [
1268
+ title6 && /* @__PURE__ */ jsx21("h2", { id: titleId, className: title4, children: title6 }),
1269
+ showClose && /* @__PURE__ */ jsx21(RadixPopover.Close, { className: closeButton4, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx21(XIcon4, { size: 16 }) })
800
1270
  ] }),
801
- content8,
802
- showArrow && /* @__PURE__ */ jsx15(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
1271
+ content11,
1272
+ showArrow && /* @__PURE__ */ jsx21(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
803
1273
  ]
804
1274
  }
805
1275
  ) })
@@ -807,31 +1277,92 @@ function Popover({
807
1277
  }
808
1278
  var PopoverClose = RadixPopover.Close;
809
1279
 
1280
+ // src/components/Progress/Progress.tsx
1281
+ import { forwardRef as forwardRef19, useId as useId4 } from "react";
1282
+
1283
+ // src/components/Progress/Progress.css.ts
1284
+ import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
1285
+ var header6 = "_1tvkq001";
1286
+ var indicator = /* @__PURE__ */ _7a46815({ defaultClassName: "_1tvkq008", variantClassNames: { color: { primary: "_1tvkq009", neutral: "_1tvkq00a", success: "_1tvkq00b", warning: "_1tvkq00c", danger: "_1tvkq00d" } }, defaultVariants: { color: "primary" }, compoundVariants: [] });
1287
+ var label3 = "_1tvkq002";
1288
+ var root6 = "_1tvkq000";
1289
+ var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_1tvkq004", variantClassNames: { size: { sm: "_1tvkq005", md: "_1tvkq006", lg: "_1tvkq007" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1290
+ var value2 = "_1tvkq003";
1291
+
1292
+ // src/components/Progress/Progress.tsx
1293
+ import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
1294
+ var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
1295
+ var Progress = /* @__PURE__ */ forwardRef19(function Progress2({
1296
+ value: value4,
1297
+ max = 100,
1298
+ label: label6,
1299
+ "aria-label": ariaLabel,
1300
+ showValue,
1301
+ formatValue = defaultFormat,
1302
+ size,
1303
+ color,
1304
+ className,
1305
+ ...rest
1306
+ }, ref) {
1307
+ const labelId = useId4();
1308
+ const isIndeterminate = value4 === void 0 || value4 === null;
1309
+ const safeMax = max > 0 ? max : 100;
1310
+ const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
1311
+ const valueText = isIndeterminate ? void 0 : formatValue(clamped, safeMax);
1312
+ return /* @__PURE__ */ jsxs19("div", { ref, className: cx(root6, className), ...rest, children: [
1313
+ (label6 || showValue && valueText) && /* @__PURE__ */ jsxs19("div", { className: header6, children: [
1314
+ label6 && /* @__PURE__ */ jsx22("span", { id: labelId, className: label3, children: label6 }),
1315
+ showValue && valueText && /* @__PURE__ */ jsx22("span", { className: value2, "aria-hidden": true, children: valueText })
1316
+ ] }),
1317
+ /* @__PURE__ */ jsx22(
1318
+ "div",
1319
+ {
1320
+ role: "progressbar",
1321
+ "aria-labelledby": label6 ? labelId : void 0,
1322
+ "aria-label": label6 ? void 0 : ariaLabel,
1323
+ "aria-valuemin": 0,
1324
+ "aria-valuemax": safeMax,
1325
+ "aria-valuenow": isIndeterminate ? void 0 : clamped,
1326
+ "aria-valuetext": valueText,
1327
+ className: track({ size }),
1328
+ children: /* @__PURE__ */ jsx22(
1329
+ "div",
1330
+ {
1331
+ className: indicator({ color }),
1332
+ "data-state": isIndeterminate ? "indeterminate" : clamped >= safeMax ? "complete" : "loading",
1333
+ style: isIndeterminate ? void 0 : { width: `${clamped / safeMax * 100}%` }
1334
+ }
1335
+ )
1336
+ }
1337
+ )
1338
+ ] });
1339
+ });
1340
+
810
1341
  // src/components/RadioGroup/RadioGroup.tsx
811
1342
  import * as RadixRadioGroup from "@radix-ui/react-radio-group";
812
- import { forwardRef as forwardRef14, useId as useId3 } from "react";
1343
+ import { forwardRef as forwardRef20, useId as useId5 } from "react";
813
1344
 
814
1345
  // src/components/RadioGroup/RadioGroup.css.ts
815
- import { createRuntimeFn as _7a46811 } from "@vanilla-extract/recipes/createRuntimeFn";
816
- var description2 = "_1w9iwjmd";
1346
+ import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
1347
+ var description4 = "_1w9iwjmd";
817
1348
  var groupLabel = "_1w9iwjme";
818
- var indicator = "_1w9iwjma";
819
- var items = _7a46811({ defaultClassName: "_1w9iwjm0", variantClassNames: { orientation: { vertical: "_1w9iwjm1", horizontal: "_1w9iwjm2" } }, defaultVariants: { orientation: "vertical" }, compoundVariants: [] });
1349
+ var indicator2 = "_1w9iwjma";
1350
+ var items = /* @__PURE__ */ _7a46816({ defaultClassName: "_1w9iwjm0", variantClassNames: { orientation: { vertical: "_1w9iwjm1", horizontal: "_1w9iwjm2" } }, defaultVariants: { orientation: "vertical" }, compoundVariants: [] });
820
1351
  var labelText = "_1w9iwjmc";
821
- var option = _7a46811({ defaultClassName: "_1w9iwjm3", variantClassNames: { size: { sm: "_1w9iwjm4", md: "_1w9iwjm5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
822
- var radio = _7a46811({ defaultClassName: "_1w9iwjm7", variantClassNames: { size: { sm: "_1w9iwjm8", md: "_1w9iwjm9" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1352
+ var option = /* @__PURE__ */ _7a46816({ defaultClassName: "_1w9iwjm3", variantClassNames: { size: { sm: "_1w9iwjm4", md: "_1w9iwjm5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1353
+ var radio = /* @__PURE__ */ _7a46816({ defaultClassName: "_1w9iwjm7", variantClassNames: { size: { sm: "_1w9iwjm8", md: "_1w9iwjm9" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
823
1354
  var text = "_1w9iwjmb";
824
1355
 
825
1356
  // src/components/RadioGroup/RadioGroup.tsx
826
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
827
- var RadioGroup = /* @__PURE__ */ forwardRef14(function RadioGroup2(props, ref) {
1357
+ import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
1358
+ var RadioGroup = /* @__PURE__ */ forwardRef20(function RadioGroup2(props, ref) {
828
1359
  const {
829
1360
  options,
830
- value: value2,
1361
+ value: value4,
831
1362
  defaultValue,
832
1363
  onValueChange,
833
- label: label4,
834
- helperText: helperText2,
1364
+ label: label6,
1365
+ helperText: helperText3,
835
1366
  error,
836
1367
  orientation = "vertical",
837
1368
  size,
@@ -843,21 +1374,21 @@ var RadioGroup = /* @__PURE__ */ forwardRef14(function RadioGroup2(props, ref) {
843
1374
  className
844
1375
  } = props;
845
1376
  const isControlled = "value" in props;
846
- const generatedId = useId3();
1377
+ const generatedId = useId5();
847
1378
  const baseId = id ?? generatedId;
848
- const labelId = label4 ? `${baseId}-label` : void 0;
849
- const helperId = helperText2 ? `${baseId}-helper` : void 0;
850
- return /* @__PURE__ */ jsxs14("div", { className: cx(field, className), children: [
851
- label4 && /* @__PURE__ */ jsxs14("span", { id: labelId, className: cx(label2, groupLabel), children: [
852
- label4,
853
- required && /* @__PURE__ */ jsx16("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1379
+ const labelId = label6 ? `${baseId}-label` : void 0;
1380
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
1381
+ return /* @__PURE__ */ jsxs20("div", { className: cx(field, className), children: [
1382
+ label6 && /* @__PURE__ */ jsxs20("span", { id: labelId, className: cx(label, groupLabel), children: [
1383
+ label6,
1384
+ required && /* @__PURE__ */ jsx23("span", { className: requiredMark, "aria-hidden": true, children: "*" })
854
1385
  ] }),
855
- /* @__PURE__ */ jsx16(
1386
+ /* @__PURE__ */ jsx23(
856
1387
  RadixRadioGroup.Root,
857
1388
  {
858
1389
  ref,
859
1390
  id: baseId,
860
- value: isControlled ? value2 ?? "" : void 0,
1391
+ value: isControlled ? value4 ?? "" : void 0,
861
1392
  defaultValue,
862
1393
  onValueChange,
863
1394
  orientation,
@@ -873,8 +1404,8 @@ var RadioGroup = /* @__PURE__ */ forwardRef14(function RadioGroup2(props, ref) {
873
1404
  const itemId = `${baseId}-${option2.value}`;
874
1405
  const descriptionId = option2.description ? `${itemId}-description` : void 0;
875
1406
  const itemDisabled = disabled || option2.disabled;
876
- return /* @__PURE__ */ jsxs14("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
877
- /* @__PURE__ */ jsx16(
1407
+ return /* @__PURE__ */ jsxs20("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
1408
+ /* @__PURE__ */ jsx23(
878
1409
  RadixRadioGroup.Item,
879
1410
  {
880
1411
  id: itemId,
@@ -882,46 +1413,35 @@ var RadioGroup = /* @__PURE__ */ forwardRef14(function RadioGroup2(props, ref) {
882
1413
  disabled: option2.disabled,
883
1414
  "aria-describedby": descriptionId,
884
1415
  className: radio({ size }),
885
- children: /* @__PURE__ */ jsx16(RadixRadioGroup.Indicator, { className: indicator })
1416
+ children: /* @__PURE__ */ jsx23(RadixRadioGroup.Indicator, { className: indicator2 })
886
1417
  }
887
1418
  ),
888
- /* @__PURE__ */ jsxs14("span", { className: text, children: [
889
- /* @__PURE__ */ jsx16("label", { htmlFor: itemId, className: labelText, children: option2.label }),
890
- option2.description && /* @__PURE__ */ jsx16("span", { id: descriptionId, className: description2, children: option2.description })
1419
+ /* @__PURE__ */ jsxs20("span", { className: text, children: [
1420
+ /* @__PURE__ */ jsx23("label", { htmlFor: itemId, className: labelText, children: option2.label }),
1421
+ option2.description && /* @__PURE__ */ jsx23("span", { id: descriptionId, className: description4, children: option2.description })
891
1422
  ] })
892
1423
  ] }, option2.value);
893
1424
  })
894
1425
  }
895
1426
  ),
896
- helperText2 && /* @__PURE__ */ jsx16("p", { id: helperId, className: helperText({ error }), children: helperText2 })
1427
+ helperText3 && /* @__PURE__ */ jsx23("p", { id: helperId, className: helperText({ error }), children: helperText3 })
897
1428
  ] });
898
1429
  });
899
1430
 
900
1431
  // src/components/Select/Select.tsx
901
1432
  import * as RadixSelect from "@radix-ui/react-select";
902
- import { forwardRef as forwardRef15, useId as useId4 } from "react";
903
- import { CheckIcon, ChevronDownIcon as ChevronDownIcon2 } from "@bestow-ui/icons";
904
-
905
- // src/components/Select/Select.css.ts
906
- var content5 = "_1kx81e83";
907
- var icon4 = "_1kx81e82";
908
- var item4 = "_1kx81e85";
909
- var itemIndicator = "_1kx81e86";
910
- var trigger2 = "_1kx81e80";
911
- var value = "_1kx81e81";
912
- var viewport = "_1kx81e84";
913
-
914
- // src/components/Select/Select.tsx
915
- import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
916
- var Select = /* @__PURE__ */ forwardRef15(function Select2(props, ref) {
1433
+ import { forwardRef as forwardRef21, useId as useId6 } from "react";
1434
+ import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon3 } from "@bestow-ui/icons";
1435
+ import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
1436
+ var Select = /* @__PURE__ */ forwardRef21(function Select2(props, ref) {
917
1437
  const {
918
1438
  options,
919
- value: value2,
1439
+ value: value4,
920
1440
  defaultValue,
921
1441
  onValueChange,
922
1442
  placeholder,
923
- label: label4,
924
- helperText: helperText2,
1443
+ label: label6,
1444
+ helperText: helperText3,
925
1445
  error,
926
1446
  size,
927
1447
  fullWidth,
@@ -933,26 +1453,26 @@ var Select = /* @__PURE__ */ forwardRef15(function Select2(props, ref) {
933
1453
  className
934
1454
  } = props;
935
1455
  const isControlled = "value" in props;
936
- const generatedId = useId4();
1456
+ const generatedId = useId6();
937
1457
  const triggerId = id ?? generatedId;
938
- const helperId = helperText2 ? `${triggerId}-helper` : void 0;
1458
+ const helperId = helperText3 ? `${triggerId}-helper` : void 0;
939
1459
  const portal2 = usePortalProps();
940
- return /* @__PURE__ */ jsxs15("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
941
- label4 && /* @__PURE__ */ jsxs15("label", { htmlFor: triggerId, className: label2, children: [
942
- label4,
943
- required && /* @__PURE__ */ jsx17("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1460
+ return /* @__PURE__ */ jsxs21("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1461
+ label6 && /* @__PURE__ */ jsxs21("label", { htmlFor: triggerId, className: label, children: [
1462
+ label6,
1463
+ required && /* @__PURE__ */ jsx24("span", { className: requiredMark, "aria-hidden": true, children: "*" })
944
1464
  ] }),
945
- /* @__PURE__ */ jsxs15(
1465
+ /* @__PURE__ */ jsxs21(
946
1466
  RadixSelect.Root,
947
1467
  {
948
- value: isControlled ? value2 ?? "" : void 0,
1468
+ value: isControlled ? value4 ?? "" : void 0,
949
1469
  defaultValue,
950
1470
  onValueChange,
951
1471
  disabled,
952
1472
  required,
953
1473
  name,
954
1474
  children: [
955
- /* @__PURE__ */ jsxs15(
1475
+ /* @__PURE__ */ jsxs21(
956
1476
  RadixSelect.Trigger,
957
1477
  {
958
1478
  ref,
@@ -963,28 +1483,28 @@ var Select = /* @__PURE__ */ forwardRef15(function Select2(props, ref) {
963
1483
  "data-invalid": error || void 0,
964
1484
  className: cx(root5({ size, fullWidth }), trigger2, className),
965
1485
  children: [
966
- /* @__PURE__ */ jsx17("span", { className: value, children: /* @__PURE__ */ jsx17(RadixSelect.Value, { placeholder }) }),
967
- /* @__PURE__ */ jsx17(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ jsx17(ChevronDownIcon2, { size: 16 }) })
1486
+ /* @__PURE__ */ jsx24("span", { className: value, children: /* @__PURE__ */ jsx24(RadixSelect.Value, { placeholder }) }),
1487
+ /* @__PURE__ */ jsx24(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ jsx24(ChevronDownIcon3, { size: 16 }) })
968
1488
  ]
969
1489
  }
970
1490
  ),
971
- /* @__PURE__ */ jsx17(RadixSelect.Portal, { children: /* @__PURE__ */ jsx17(
1491
+ /* @__PURE__ */ jsx24(RadixSelect.Portal, { children: /* @__PURE__ */ jsx24(
972
1492
  RadixSelect.Content,
973
1493
  {
974
1494
  position: "popper",
975
1495
  sideOffset: 4,
976
1496
  collisionPadding: 8,
977
- className: cx(portal2.className, content5),
1497
+ className: cx(portal2.className, content3),
978
1498
  style: portal2.style,
979
- children: /* @__PURE__ */ jsx17(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs15(
1499
+ children: /* @__PURE__ */ jsx24(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs21(
980
1500
  RadixSelect.Item,
981
1501
  {
982
1502
  value: option2.value,
983
1503
  disabled: option2.disabled,
984
- className: item4,
1504
+ className: item3,
985
1505
  children: [
986
- /* @__PURE__ */ jsx17(RadixSelect.ItemText, { children: option2.label }),
987
- /* @__PURE__ */ jsx17(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx17(CheckIcon, { size: 16 }) })
1506
+ /* @__PURE__ */ jsx24(RadixSelect.ItemText, { children: option2.label }),
1507
+ /* @__PURE__ */ jsx24(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx24(CheckIcon2, { size: 16 }) })
988
1508
  ]
989
1509
  },
990
1510
  option2.value
@@ -994,29 +1514,29 @@ var Select = /* @__PURE__ */ forwardRef15(function Select2(props, ref) {
994
1514
  ]
995
1515
  }
996
1516
  ),
997
- helperText2 && /* @__PURE__ */ jsx17("p", { id: helperId, className: helperText({ error }), children: helperText2 })
1517
+ helperText3 && /* @__PURE__ */ jsx24("p", { id: helperId, className: helperText({ error }), children: helperText3 })
998
1518
  ] });
999
1519
  });
1000
1520
 
1001
1521
  // src/components/Skeleton/Skeleton.tsx
1002
1522
  import { assignInlineVars as assignInlineVars2 } from "@vanilla-extract/dynamic";
1003
- import { forwardRef as forwardRef16 } from "react";
1523
+ import { forwardRef as forwardRef22 } from "react";
1004
1524
 
1005
1525
  // src/components/Skeleton/Skeleton.css.ts
1006
- import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
1526
+ import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
1007
1527
  var height = "var(--_1s8datd1)";
1008
1528
  var lines = "_1s8datd6";
1009
- var skeleton = _7a46812({ defaultClassName: "_1s8datd2", variantClassNames: { variant: { text: "_1s8datd3", rect: "_1s8datd4", circle: "_1s8datd5" } }, defaultVariants: { variant: "text" }, compoundVariants: [] });
1529
+ var skeleton = /* @__PURE__ */ _7a46817({ defaultClassName: "_1s8datd2", variantClassNames: { variant: { text: "_1s8datd3", rect: "_1s8datd4", circle: "_1s8datd5" } }, defaultVariants: { variant: "text" }, compoundVariants: [] });
1010
1530
  var width = "var(--_1s8datd0)";
1011
1531
 
1012
1532
  // src/components/Skeleton/Skeleton.tsx
1013
- import { jsx as jsx18 } from "react/jsx-runtime";
1014
- var toCss = (value2) => typeof value2 === "number" ? `${value2}px` : value2;
1015
- var Skeleton = /* @__PURE__ */ forwardRef16(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
1533
+ import { jsx as jsx25 } from "react/jsx-runtime";
1534
+ var toCss = (value4) => typeof value4 === "number" ? `${value4}px` : value4;
1535
+ var Skeleton = /* @__PURE__ */ forwardRef22(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
1016
1536
  const w = toCss(width2 ?? (variant === "circle" ? 40 : "100%"));
1017
1537
  const h = toCss(height2 ?? (variant === "circle" ? w : variant === "rect" ? 100 : "1em"));
1018
1538
  if (variant === "text" && lines2 > 1) {
1019
- return /* @__PURE__ */ jsx18(
1539
+ return /* @__PURE__ */ jsx25(
1020
1540
  "span",
1021
1541
  {
1022
1542
  ref,
@@ -1024,7 +1544,7 @@ var Skeleton = /* @__PURE__ */ forwardRef16(function Skeleton2({ variant = "text
1024
1544
  className: cx(lines, className),
1025
1545
  style: { ...assignInlineVars2({ [width]: w }), ...style },
1026
1546
  ...rest,
1027
- children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ jsx18(
1547
+ children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ jsx25(
1028
1548
  "span",
1029
1549
  {
1030
1550
  className: skeleton({ variant }),
@@ -1035,7 +1555,7 @@ var Skeleton = /* @__PURE__ */ forwardRef16(function Skeleton2({ variant = "text
1035
1555
  }
1036
1556
  );
1037
1557
  }
1038
- return /* @__PURE__ */ jsx18(
1558
+ return /* @__PURE__ */ jsx25(
1039
1559
  "span",
1040
1560
  {
1041
1561
  ref,
@@ -1047,106 +1567,324 @@ var Skeleton = /* @__PURE__ */ forwardRef16(function Skeleton2({ variant = "text
1047
1567
  );
1048
1568
  });
1049
1569
 
1570
+ // src/components/Slider/Slider.tsx
1571
+ import * as RadixSlider from "@radix-ui/react-slider";
1572
+ import { forwardRef as forwardRef23, useId as useId7, useState as useState3 } from "react";
1573
+
1574
+ // src/components/Slider/Slider.css.ts
1575
+ import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
1576
+ var field2 = "_126mzjm0";
1577
+ var header7 = "_126mzjm1";
1578
+ var helperText2 = "_126mzjm4";
1579
+ var label4 = "_126mzjm2";
1580
+ var range2 = "_126mzjmb";
1581
+ var root7 = /* @__PURE__ */ _7a46818({ defaultClassName: "_126mzjm5", variantClassNames: { size: { sm: "_126mzjm6", md: "_126mzjm7" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1582
+ var thumb = /* @__PURE__ */ _7a46818({ defaultClassName: "_126mzjmc", variantClassNames: { size: { sm: "_126mzjmd", md: "_126mzjme" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1583
+ var track2 = /* @__PURE__ */ _7a46818({ defaultClassName: "_126mzjm8", variantClassNames: { size: { sm: "_126mzjm9", md: "_126mzjma" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1584
+ var value3 = "_126mzjm3";
1585
+
1586
+ // src/components/Slider/Slider.tsx
1587
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
1588
+ var Slider = /* @__PURE__ */ forwardRef23(function Slider2(props, ref) {
1589
+ const {
1590
+ value: value4,
1591
+ defaultValue,
1592
+ onValueChange,
1593
+ min = 0,
1594
+ max = 100,
1595
+ label: label6,
1596
+ "aria-label": ariaLabel,
1597
+ helperText: helperText3,
1598
+ showValue,
1599
+ formatValue = String,
1600
+ thumbLabels = ["\uCD5C\uC18C", "\uCD5C\uB300"],
1601
+ size,
1602
+ id,
1603
+ className,
1604
+ disabled,
1605
+ ...rest
1606
+ } = props;
1607
+ const generatedId = useId7();
1608
+ const baseId = id ?? generatedId;
1609
+ const labelId = `${baseId}-label`;
1610
+ const helperId = `${baseId}-helper`;
1611
+ const isControlled = "value" in props;
1612
+ const [innerValue, setInnerValue] = useState3(defaultValue ?? [min]);
1613
+ const current2 = isControlled ? value4 ?? [min] : innerValue;
1614
+ const isRange = current2.length > 1;
1615
+ const handleChange = (next) => {
1616
+ if (!isControlled) setInnerValue(next);
1617
+ onValueChange?.(next);
1618
+ };
1619
+ const valueText = current2.map(formatValue).join(" \u2013 ");
1620
+ return /* @__PURE__ */ jsxs22("div", { className: cx(field2, className), children: [
1621
+ (label6 || showValue) && /* @__PURE__ */ jsxs22("div", { className: header7, children: [
1622
+ label6 && /* @__PURE__ */ jsx26("span", { id: labelId, className: label4, children: label6 }),
1623
+ showValue && /* @__PURE__ */ jsx26("span", { className: value3, "aria-hidden": true, children: valueText })
1624
+ ] }),
1625
+ /* @__PURE__ */ jsxs22(
1626
+ RadixSlider.Root,
1627
+ {
1628
+ ref,
1629
+ id: baseId,
1630
+ min,
1631
+ max,
1632
+ disabled,
1633
+ value: current2,
1634
+ onValueChange: handleChange,
1635
+ className: root7({ size }),
1636
+ ...rest,
1637
+ children: [
1638
+ /* @__PURE__ */ jsx26(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ jsx26(RadixSlider.Range, { className: range2 }) }),
1639
+ current2.map((thumbValue, index) => {
1640
+ const thumbLabelId = `${baseId}-thumb-${index}`;
1641
+ return /* @__PURE__ */ jsx26(
1642
+ RadixSlider.Thumb,
1643
+ {
1644
+ className: thumb({ size }),
1645
+ "aria-labelledby": label6 ? isRange ? `${labelId} ${thumbLabelId}` : labelId : isRange ? thumbLabelId : void 0,
1646
+ "aria-label": label6 ? void 0 : isRange ? void 0 : ariaLabel,
1647
+ "aria-valuetext": formatValue(thumbValue),
1648
+ "aria-describedby": helperText3 ? helperId : void 0
1649
+ },
1650
+ index
1651
+ );
1652
+ })
1653
+ ]
1654
+ }
1655
+ ),
1656
+ isRange && current2.map((_, index) => /* @__PURE__ */ jsxs22("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
1657
+ label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
1658
+ thumbLabels[index] ?? `${index + 1}`
1659
+ ] }, index)),
1660
+ helperText3 && /* @__PURE__ */ jsx26("span", { id: helperId, className: helperText2, children: helperText3 })
1661
+ ] });
1662
+ });
1663
+
1050
1664
  // src/components/Stack/Stack.tsx
1051
- import { forwardRef as forwardRef17 } from "react";
1665
+ import { forwardRef as forwardRef24 } from "react";
1052
1666
 
1053
1667
  // src/components/Stack/Stack.css.ts
1054
- import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
1055
- var stack = _7a46813({ 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: [] });
1668
+ import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
1669
+ var stack = /* @__PURE__ */ _7a46819({ defaultClassName: "_1jz9hj90", variantClassNames: { direction: { row: "_1jz9hj91", column: "_1jz9hj92", "row-reverse": "_1jz9hj93", "column-reverse": "_1jz9hj94" }, gap: { "0": "_1jz9hj95", "1": "_1jz9hj96", "2": "_1jz9hj97", "3": "_1jz9hj98", "4": "_1jz9hj99", "5": "_1jz9hj9a", "6": "_1jz9hj9b", "8": "_1jz9hj9c", "10": "_1jz9hj9d", "12": "_1jz9hj9e", "16": "_1jz9hj9f" }, align: { start: "_1jz9hj9g", center: "_1jz9hj9h", end: "_1jz9hj9i", stretch: "_1jz9hj9j", baseline: "_1jz9hj9k" }, justify: { start: "_1jz9hj9l", center: "_1jz9hj9m", end: "_1jz9hj9n", between: "_1jz9hj9o", around: "_1jz9hj9p", evenly: "_1jz9hj9q" }, wrap: { true: "_1jz9hj9r" } }, defaultVariants: { direction: "column" }, compoundVariants: [] });
1056
1670
 
1057
1671
  // src/components/Stack/Stack.tsx
1058
- import { jsx as jsx19 } from "react/jsx-runtime";
1059
- var Stack = /* @__PURE__ */ forwardRef17(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
1060
- return /* @__PURE__ */ jsx19(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
1672
+ import { jsx as jsx27 } from "react/jsx-runtime";
1673
+ var Stack = /* @__PURE__ */ forwardRef24(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
1674
+ return /* @__PURE__ */ jsx27(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
1061
1675
  });
1062
1676
 
1063
1677
  // src/components/Switch/Switch.tsx
1064
1678
  import * as RadixSwitch from "@radix-ui/react-switch";
1065
- import { forwardRef as forwardRef18, useId as useId5 } from "react";
1679
+ import { forwardRef as forwardRef25, useId as useId8 } from "react";
1066
1680
 
1067
1681
  // src/components/Switch/Switch.css.ts
1068
- import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
1069
- var label3 = "o33ul29";
1070
- var root6 = _7a46814({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1071
- var thumb = _7a46814({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1072
- var track = _7a46814({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1682
+ import { createRuntimeFn as _7a46820 } from "@vanilla-extract/recipes/createRuntimeFn";
1683
+ var label5 = "o33ul29";
1684
+ var root8 = /* @__PURE__ */ _7a46820({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1685
+ var thumb2 = /* @__PURE__ */ _7a46820({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1686
+ var track3 = /* @__PURE__ */ _7a46820({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1073
1687
 
1074
1688
  // src/components/Switch/Switch.tsx
1075
- import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
1076
- var Switch = /* @__PURE__ */ forwardRef18(function Switch2({ label: label4, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
1077
- const generatedId = useId5();
1689
+ import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
1690
+ var Switch = /* @__PURE__ */ forwardRef25(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
1691
+ const generatedId = useId8();
1078
1692
  const switchId = id ?? generatedId;
1079
- return /* @__PURE__ */ jsxs16("span", { className: cx(root6({ size }), className), "data-disabled": disabled || void 0, children: [
1080
- /* @__PURE__ */ jsx20(
1693
+ return /* @__PURE__ */ jsxs23("span", { className: cx(root8({ size }), className), "data-disabled": disabled || void 0, children: [
1694
+ /* @__PURE__ */ jsx28(
1081
1695
  RadixSwitch.Root,
1082
1696
  {
1083
1697
  ref,
1084
1698
  id: switchId,
1085
1699
  disabled,
1086
1700
  "aria-label": ariaLabel,
1087
- className: track({ size }),
1701
+ className: track3({ size }),
1088
1702
  ...rest,
1089
- children: /* @__PURE__ */ jsx20(RadixSwitch.Thumb, { className: thumb({ size }) })
1703
+ children: /* @__PURE__ */ jsx28(RadixSwitch.Thumb, { className: thumb2({ size }) })
1090
1704
  }
1091
1705
  ),
1092
- label4 && /* @__PURE__ */ jsx20("label", { htmlFor: switchId, className: label3, children: label4 })
1706
+ label6 && /* @__PURE__ */ jsx28("label", { htmlFor: switchId, className: label5, children: label6 })
1093
1707
  ] });
1094
1708
  });
1095
1709
 
1710
+ // src/components/Table/Table.tsx
1711
+ import {
1712
+ createContext as createContext2,
1713
+ forwardRef as forwardRef26,
1714
+ useContext as useContext2,
1715
+ useId as useId9
1716
+ } from "react";
1717
+ import { ArrowDownIcon, ArrowUpIcon } from "@bestow-ui/icons";
1718
+
1719
+ // src/components/Table/Table.css.ts
1720
+ import { createRuntimeFn as _7a46821 } from "@vanilla-extract/recipes/createRuntimeFn";
1721
+ var body4 = "l3ploy5";
1722
+ var caption = "l3ploy2";
1723
+ var cell = /* @__PURE__ */ _7a46821({ defaultClassName: "l3ploy9", variantClassNames: { size: { sm: "l3ploya", md: "l3ployb" }, align: { left: "l3ployc", center: "l3ployd", right: "l3ploye" } }, defaultVariants: { size: "md", align: "left" }, compoundVariants: [] });
1724
+ var container = "l3ploy0";
1725
+ var footer4 = "l3ploy7";
1726
+ var footerCell = "l3ployg";
1727
+ var head = "l3ployf";
1728
+ var header8 = "l3ploy3";
1729
+ var row = "l3ploy8";
1730
+ var sortButton = "l3ployh";
1731
+ var sortIcon = "l3ployi";
1732
+ var stickyHeader = "l3ploy4";
1733
+ var striped = "l3ploy6";
1734
+ var table = "l3ploy1";
1735
+
1736
+ // src/components/Table/Table.tsx
1737
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
1738
+ var TableSizeContext = /* @__PURE__ */ createContext2("md");
1739
+ var TableSectionContext = /* @__PURE__ */ createContext2("body");
1740
+ var Table = /* @__PURE__ */ forwardRef26(function Table2({
1741
+ size = "md",
1742
+ striped: striped2,
1743
+ stickyHeader: stickyHeader2,
1744
+ caption: caption2,
1745
+ "aria-label": ariaLabel,
1746
+ containerClassName,
1747
+ containerStyle,
1748
+ className,
1749
+ children,
1750
+ ...rest
1751
+ }, ref) {
1752
+ const captionId = useId9();
1753
+ return /* @__PURE__ */ jsx29(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx29(
1754
+ "div",
1755
+ {
1756
+ className: cx(container, containerClassName),
1757
+ style: containerStyle,
1758
+ tabIndex: 0,
1759
+ role: "region",
1760
+ "aria-labelledby": caption2 ? captionId : void 0,
1761
+ "aria-label": caption2 ? void 0 : ariaLabel,
1762
+ children: /* @__PURE__ */ jsxs24(
1763
+ "table",
1764
+ {
1765
+ ref,
1766
+ className: cx(table, striped2 && striped, stickyHeader2 && stickyHeader, className),
1767
+ "aria-label": caption2 ? void 0 : ariaLabel,
1768
+ ...rest,
1769
+ children: [
1770
+ caption2 && /* @__PURE__ */ jsx29("caption", { id: captionId, className: caption, children: caption2 }),
1771
+ children
1772
+ ]
1773
+ }
1774
+ )
1775
+ }
1776
+ ) });
1777
+ });
1778
+ var TableHeader = /* @__PURE__ */ forwardRef26(
1779
+ function TableHeader2({ className, ...rest }, ref) {
1780
+ return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx29("thead", { ref, className: cx(header8, className), ...rest }) });
1781
+ }
1782
+ );
1783
+ var TableBody = /* @__PURE__ */ forwardRef26(
1784
+ function TableBody2({ className, ...rest }, ref) {
1785
+ return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx29("tbody", { ref, className: cx(body4, className), ...rest }) });
1786
+ }
1787
+ );
1788
+ var TableFooter = /* @__PURE__ */ forwardRef26(
1789
+ function TableFooter2({ className, ...rest }, ref) {
1790
+ return /* @__PURE__ */ jsx29(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx29("tfoot", { ref, className: cx(footer4, className), ...rest }) });
1791
+ }
1792
+ );
1793
+ var TableRow = /* @__PURE__ */ forwardRef26(function TableRow2({ selected, className, ...rest }, ref) {
1794
+ return /* @__PURE__ */ jsx29("tr", { ref, className: cx(row, className), "data-state": selected ? "selected" : void 0, ...rest });
1795
+ });
1796
+ var TableHead = /* @__PURE__ */ forwardRef26(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
1797
+ const size = useContext2(TableSizeContext);
1798
+ const section = useContext2(TableSectionContext);
1799
+ const sortable = onSort !== void 0;
1800
+ const direction = sortDirection ?? "none";
1801
+ const SortIcon = direction === "descending" ? ArrowDownIcon : ArrowUpIcon;
1802
+ return /* @__PURE__ */ jsx29(
1803
+ "th",
1804
+ {
1805
+ ref,
1806
+ scope: scope ?? (section === "header" ? "col" : "row"),
1807
+ "aria-sort": sortable && direction !== "none" ? direction : void 0,
1808
+ className: cx(
1809
+ cell({ size, align }),
1810
+ section === "header" ? head : section === "footer" ? footerCell : void 0,
1811
+ className
1812
+ ),
1813
+ ...rest,
1814
+ children: sortable ? /* @__PURE__ */ jsxs24("button", { type: "button", className: sortButton, onClick: onSort, children: [
1815
+ children,
1816
+ /* @__PURE__ */ jsx29(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
1817
+ ] }) : children
1818
+ }
1819
+ );
1820
+ });
1821
+ var TableCell = /* @__PURE__ */ forwardRef26(function TableCell2({ align, className, ...rest }, ref) {
1822
+ const size = useContext2(TableSizeContext);
1823
+ const section = useContext2(TableSectionContext);
1824
+ return /* @__PURE__ */ jsx29(
1825
+ "td",
1826
+ {
1827
+ ref,
1828
+ className: cx(cell({ size, align }), section === "footer" && footerCell, className),
1829
+ ...rest
1830
+ }
1831
+ );
1832
+ });
1833
+
1096
1834
  // src/components/Tabs/Tabs.tsx
1097
1835
  import * as RadixTabs from "@radix-ui/react-tabs";
1098
- import { createContext as createContext2, forwardRef as forwardRef19, useContext as useContext2 } from "react";
1836
+ import { createContext as createContext3, forwardRef as forwardRef27, useContext as useContext3 } from "react";
1099
1837
 
1100
1838
  // src/components/Tabs/Tabs.css.ts
1101
- import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
1102
- var content6 = "fvhbtda";
1103
- var list2 = _7a46815({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
1104
- var trigger3 = _7a46815({ defaultClassName: "fvhbtd3", variantClassNames: { variant: { line: "fvhbtd4", soft: "fvhbtd5" }, size: { sm: "fvhbtd6", md: "fvhbtd7" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd8"], [{ variant: "soft", size: "md" }, "fvhbtd9"]] });
1839
+ import { createRuntimeFn as _7a46822 } from "@vanilla-extract/recipes/createRuntimeFn";
1840
+ var content9 = "fvhbtda";
1841
+ var list3 = /* @__PURE__ */ _7a46822({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
1842
+ var trigger3 = /* @__PURE__ */ _7a46822({ defaultClassName: "fvhbtd3", variantClassNames: { variant: { line: "fvhbtd4", soft: "fvhbtd5" }, size: { sm: "fvhbtd6", md: "fvhbtd7" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd8"], [{ variant: "soft", size: "md" }, "fvhbtd9"]] });
1105
1843
 
1106
1844
  // src/components/Tabs/Tabs.tsx
1107
- import { jsx as jsx21 } from "react/jsx-runtime";
1108
- var TabsStyleContext = /* @__PURE__ */ createContext2({ variant: "line", size: "md" });
1109
- var Tabs = /* @__PURE__ */ forwardRef19(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
1845
+ import { jsx as jsx30 } from "react/jsx-runtime";
1846
+ var TabsStyleContext = /* @__PURE__ */ createContext3({ variant: "line", size: "md" });
1847
+ var Tabs = /* @__PURE__ */ forwardRef27(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
1110
1848
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
1111
- return /* @__PURE__ */ jsx21(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx21(RadixTabs.Root, { ref, ...props, ...controlled }) });
1849
+ return /* @__PURE__ */ jsx30(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx30(RadixTabs.Root, { ref, ...props, ...controlled }) });
1112
1850
  });
1113
- var TabsList = /* @__PURE__ */ forwardRef19(function TabsList2({ className, ...rest }, ref) {
1114
- const { variant } = useContext2(TabsStyleContext);
1115
- return /* @__PURE__ */ jsx21(RadixTabs.List, { ref, className: cx(list2({ variant }), className), ...rest });
1851
+ var TabsList = /* @__PURE__ */ forwardRef27(function TabsList2({ className, ...rest }, ref) {
1852
+ const { variant } = useContext3(TabsStyleContext);
1853
+ return /* @__PURE__ */ jsx30(RadixTabs.List, { ref, className: cx(list3({ variant }), className), ...rest });
1116
1854
  });
1117
- var TabsTrigger = /* @__PURE__ */ forwardRef19(function TabsTrigger2({ className, ...rest }, ref) {
1118
- const { variant, size } = useContext2(TabsStyleContext);
1119
- return /* @__PURE__ */ jsx21(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
1855
+ var TabsTrigger = /* @__PURE__ */ forwardRef27(function TabsTrigger2({ className, ...rest }, ref) {
1856
+ const { variant, size } = useContext3(TabsStyleContext);
1857
+ return /* @__PURE__ */ jsx30(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
1120
1858
  });
1121
- var TabsContent = /* @__PURE__ */ forwardRef19(function TabsContent2({ className, ...rest }, ref) {
1122
- return /* @__PURE__ */ jsx21(RadixTabs.Content, { ref, className: cx(content6, className), ...rest });
1859
+ var TabsContent = /* @__PURE__ */ forwardRef27(function TabsContent2({ className, ...rest }, ref) {
1860
+ return /* @__PURE__ */ jsx30(RadixTabs.Content, { ref, className: cx(content9, className), ...rest });
1123
1861
  });
1124
1862
 
1125
1863
  // src/components/Textarea/Textarea.tsx
1126
1864
  import {
1127
- forwardRef as forwardRef20,
1865
+ forwardRef as forwardRef28,
1128
1866
  useCallback,
1129
- useEffect as useEffect2,
1130
- useId as useId6,
1867
+ useEffect as useEffect3,
1868
+ useId as useId10,
1131
1869
  useLayoutEffect,
1132
- useRef as useRef2,
1133
- useState as useState2
1870
+ useRef as useRef3,
1871
+ useState as useState4
1134
1872
  } from "react";
1135
1873
 
1136
1874
  // src/components/Textarea/Textarea.css.ts
1137
- import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
1875
+ import { createRuntimeFn as _7a46823 } from "@vanilla-extract/recipes/createRuntimeFn";
1138
1876
  var count = "_1koawa9";
1139
1877
  var countOver = "_1koawaa";
1140
1878
  var defaultWidth = "_1koawa7";
1141
- var footer3 = "_1koawa8";
1142
- var textarea = _7a46816({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
1879
+ var footer5 = "_1koawa8";
1880
+ var textarea = /* @__PURE__ */ _7a46823({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
1143
1881
 
1144
1882
  // src/components/Textarea/Textarea.tsx
1145
- import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
1146
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect2;
1147
- var Textarea = /* @__PURE__ */ forwardRef20(function Textarea2({
1148
- label: label4,
1149
- helperText: helperText2,
1883
+ import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
1884
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect3;
1885
+ var Textarea = /* @__PURE__ */ forwardRef28(function Textarea2({
1886
+ label: label6,
1887
+ helperText: helperText3,
1150
1888
  error,
1151
1889
  size,
1152
1890
  fullWidth,
@@ -1156,7 +1894,7 @@ var Textarea = /* @__PURE__ */ forwardRef20(function Textarea2({
1156
1894
  required,
1157
1895
  id,
1158
1896
  rows = 3,
1159
- value: value2,
1897
+ value: value4,
1160
1898
  defaultValue,
1161
1899
  onChange,
1162
1900
  maxLength,
@@ -1165,12 +1903,12 @@ var Textarea = /* @__PURE__ */ forwardRef20(function Textarea2({
1165
1903
  "aria-describedby": ariaDescribedBy,
1166
1904
  ...rest
1167
1905
  }, ref) {
1168
- const generatedId = useId6();
1906
+ const generatedId = useId10();
1169
1907
  const textareaId = id ?? generatedId;
1170
- const helperId = helperText2 ? `${textareaId}-helper` : void 0;
1171
- const innerRef = useRef2(null);
1172
- const [uncontrolledLength, setUncontrolledLength] = useState2(() => String(defaultValue ?? "").length);
1173
- const length = value2 !== void 0 ? String(value2).length : uncontrolledLength;
1908
+ const helperId = helperText3 ? `${textareaId}-helper` : void 0;
1909
+ const innerRef = useRef3(null);
1910
+ const [uncontrolledLength, setUncontrolledLength] = useState4(() => String(defaultValue ?? "").length);
1911
+ const length = value4 !== void 0 ? String(value4).length : uncontrolledLength;
1174
1912
  const fitHeight = useCallback(() => {
1175
1913
  const el = innerRef.current;
1176
1914
  if (!autoResize || !el) return;
@@ -1178,24 +1916,24 @@ var Textarea = /* @__PURE__ */ forwardRef20(function Textarea2({
1178
1916
  const borders = el.offsetHeight - el.clientHeight;
1179
1917
  el.style.height = `${el.scrollHeight + borders}px`;
1180
1918
  }, [autoResize]);
1181
- useIsomorphicLayoutEffect(fitHeight, [fitHeight, value2]);
1919
+ useIsomorphicLayoutEffect(fitHeight, [fitHeight, value4]);
1182
1920
  const handleChange = (event) => {
1183
- if (value2 === void 0) setUncontrolledLength(event.target.value.length);
1921
+ if (value4 === void 0) setUncontrolledLength(event.target.value.length);
1184
1922
  fitHeight();
1185
1923
  onChange?.(event);
1186
1924
  };
1187
- return /* @__PURE__ */ jsxs17("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1188
- label4 && /* @__PURE__ */ jsxs17("label", { htmlFor: textareaId, className: label2, children: [
1189
- label4,
1190
- required && /* @__PURE__ */ jsx22("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1925
+ return /* @__PURE__ */ jsxs25("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1926
+ label6 && /* @__PURE__ */ jsxs25("label", { htmlFor: textareaId, className: label, children: [
1927
+ label6,
1928
+ required && /* @__PURE__ */ jsx31("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1191
1929
  ] }),
1192
- /* @__PURE__ */ jsx22(
1930
+ /* @__PURE__ */ jsx31(
1193
1931
  "textarea",
1194
1932
  {
1195
1933
  ref: mergeRefs(innerRef, ref),
1196
1934
  id: textareaId,
1197
1935
  rows,
1198
- value: value2,
1936
+ value: value4,
1199
1937
  defaultValue,
1200
1938
  onChange: handleChange,
1201
1939
  maxLength,
@@ -1211,34 +1949,34 @@ var Textarea = /* @__PURE__ */ forwardRef20(function Textarea2({
1211
1949
  ...rest
1212
1950
  }
1213
1951
  ),
1214
- (helperText2 || showCount) && /* @__PURE__ */ jsxs17("div", { className: footer3, children: [
1215
- helperText2 && /* @__PURE__ */ jsx22("p", { id: helperId, className: helperText({ error }), children: helperText2 }),
1216
- showCount && /* @__PURE__ */ jsx22("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
1952
+ (helperText3 || showCount) && /* @__PURE__ */ jsxs25("div", { className: footer5, children: [
1953
+ helperText3 && /* @__PURE__ */ jsx31("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
1954
+ showCount && /* @__PURE__ */ jsx31("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
1217
1955
  ] })
1218
1956
  ] });
1219
1957
  });
1220
1958
 
1221
1959
  // src/components/Toast/Toast.tsx
1222
1960
  import * as RadixToast from "@radix-ui/react-toast";
1223
- import { createContext as createContext3, useCallback as useCallback2, useContext as useContext3, useMemo as useMemo2, useRef as useRef3, useState as useState3 } from "react";
1224
- import { XIcon as XIcon3 } from "@bestow-ui/icons";
1961
+ import { createContext as createContext4, useCallback as useCallback2, useContext as useContext4, useMemo as useMemo3, useRef as useRef4, useState as useState5 } from "react";
1962
+ import { XIcon as XIcon5 } from "@bestow-ui/icons";
1225
1963
 
1226
1964
  // src/components/Toast/Toast.css.ts
1227
- import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
1228
- var action = "_1g11zvx7";
1229
- var close = "_1g11zvx8";
1230
- var description3 = "_1g11zvx6";
1231
- var title3 = "_1g11zvx5";
1232
- var toast = _7a46817({ defaultClassName: "_1g11zvx1", variantClassNames: { variant: { "default": "_1g11zvx2", success: "_1g11zvx3", danger: "_1g11zvx4" } }, defaultVariants: { variant: "default" }, compoundVariants: [] });
1965
+ import { createRuntimeFn as _7a46824 } from "@vanilla-extract/recipes/createRuntimeFn";
1966
+ var action2 = "_1g11zvx8";
1967
+ var close = "_1g11zvx9";
1968
+ var description5 = "_1g11zvx7";
1969
+ var title5 = "_1g11zvx6";
1970
+ var toast = /* @__PURE__ */ _7a46824({ defaultClassName: "_1g11zvx1", variantClassNames: { variant: { "default": "_1g11zvx2", success: "_1g11zvx3", warning: "_1g11zvx4", danger: "_1g11zvx5" } }, defaultVariants: { variant: "default" }, compoundVariants: [] });
1233
1971
  var viewport2 = "_1g11zvx0";
1234
1972
 
1235
1973
  // src/components/Toast/Toast.tsx
1236
- import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
1974
+ import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
1237
1975
  var REMOVE_DELAY = 500;
1238
- var ToastContext = /* @__PURE__ */ createContext3(null);
1239
- function ToastProvider({ children, duration = 5e3, label: label4 = "\uC54C\uB9BC" }) {
1240
- const [toasts, setToasts] = useState3([]);
1241
- const nextId = useRef3(0);
1976
+ var ToastContext = /* @__PURE__ */ createContext4(null);
1977
+ function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC" }) {
1978
+ const [toasts, setToasts] = useState5([]);
1979
+ const nextId = useRef4(0);
1242
1980
  const portal2 = usePortalProps();
1243
1981
  const toast2 = useCallback2((options) => {
1244
1982
  const id = nextId.current++;
@@ -1250,10 +1988,10 @@ function ToastProvider({ children, duration = 5e3, label: label4 = "\uC54C\uB9BC
1250
1988
  setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
1251
1989
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
1252
1990
  }, []);
1253
- const value2 = useMemo2(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
1254
- return /* @__PURE__ */ jsx23(ToastContext.Provider, { value: value2, children: /* @__PURE__ */ jsxs18(RadixToast.Provider, { duration, label: label4, swipeDirection: "right", children: [
1991
+ const value4 = useMemo3(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
1992
+ return /* @__PURE__ */ jsx32(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ jsxs26(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
1255
1993
  children,
1256
- toasts.map(({ id, open, title: title4, description: description4, variant, duration: itemDuration, action: action2 }) => /* @__PURE__ */ jsxs18(
1994
+ toasts.map(({ id, open, title: title6, description: description6, variant, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs26(
1257
1995
  RadixToast.Root,
1258
1996
  {
1259
1997
  open,
@@ -1263,19 +2001,19 @@ function ToastProvider({ children, duration = 5e3, label: label4 = "\uC54C\uB9BC
1263
2001
  },
1264
2002
  className: toast({ variant }),
1265
2003
  children: [
1266
- /* @__PURE__ */ jsx23(RadixToast.Title, { className: title3, children: title4 }),
1267
- description4 && /* @__PURE__ */ jsx23(RadixToast.Description, { className: description3, children: description4 }),
1268
- action2 && /* @__PURE__ */ jsx23(RadixToast.Action, { asChild: true, altText: action2.altText ?? action2.label, className: action, children: /* @__PURE__ */ jsx23(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action2.onClick, children: action2.label }) }),
1269
- /* @__PURE__ */ jsx23(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx23(XIcon3, { size: 16 }) })
2004
+ /* @__PURE__ */ jsx32(RadixToast.Title, { className: title5, children: title6 }),
2005
+ description6 && /* @__PURE__ */ jsx32(RadixToast.Description, { className: description5, children: description6 }),
2006
+ action3 && /* @__PURE__ */ jsx32(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx32(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
2007
+ /* @__PURE__ */ jsx32(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ jsx32(XIcon5, { size: 16 }) })
1270
2008
  ]
1271
2009
  },
1272
2010
  id
1273
2011
  )),
1274
- /* @__PURE__ */ jsx23(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
2012
+ /* @__PURE__ */ jsx32(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
1275
2013
  ] }) });
1276
2014
  }
1277
2015
  function useToast() {
1278
- const context = useContext3(ToastContext);
2016
+ const context = useContext4(ToastContext);
1279
2017
  if (!context) throw new Error("useToast \uB294 ToastProvider \uC548\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4.");
1280
2018
  return context;
1281
2019
  }
@@ -1285,12 +2023,12 @@ import * as RadixTooltip from "@radix-ui/react-tooltip";
1285
2023
 
1286
2024
  // src/components/Tooltip/Tooltip.css.ts
1287
2025
  var arrow2 = "z7rufs1";
1288
- var content7 = "z7rufs0";
2026
+ var content10 = "z7rufs0";
1289
2027
 
1290
2028
  // src/components/Tooltip/Tooltip.tsx
1291
- import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
2029
+ import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
1292
2030
  function Tooltip({
1293
- content: content8,
2031
+ content: content11,
1294
2032
  children,
1295
2033
  side = "top",
1296
2034
  align = "center",
@@ -1302,21 +2040,21 @@ function Tooltip({
1302
2040
  className
1303
2041
  }) {
1304
2042
  const portal2 = usePortalProps();
1305
- if (disabled || content8 == null || content8 === "") return children;
1306
- return /* @__PURE__ */ jsx24(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs19(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
1307
- /* @__PURE__ */ jsx24(RadixTooltip.Trigger, { asChild: true, children }),
1308
- /* @__PURE__ */ jsx24(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs19(
2043
+ if (disabled || content11 == null || content11 === "") return children;
2044
+ return /* @__PURE__ */ jsx33(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs27(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
2045
+ /* @__PURE__ */ jsx33(RadixTooltip.Trigger, { asChild: true, children }),
2046
+ /* @__PURE__ */ jsx33(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs27(
1309
2047
  RadixTooltip.Content,
1310
2048
  {
1311
2049
  side,
1312
2050
  align,
1313
2051
  sideOffset: 6,
1314
2052
  collisionPadding: 8,
1315
- className: cx(portal2.className, content7, className),
2053
+ className: cx(portal2.className, content10, className),
1316
2054
  style: portal2.style,
1317
2055
  children: [
1318
- content8,
1319
- /* @__PURE__ */ jsx24(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
2056
+ content11,
2057
+ /* @__PURE__ */ jsx33(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
1320
2058
  ]
1321
2059
  }
1322
2060
  ) })
@@ -1324,14 +2062,14 @@ function Tooltip({
1324
2062
  }
1325
2063
 
1326
2064
  // src/components/Typography/Typography.tsx
1327
- import { forwardRef as forwardRef21 } from "react";
2065
+ import { forwardRef as forwardRef29 } from "react";
1328
2066
 
1329
2067
  // src/components/Typography/Typography.css.ts
1330
- import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
1331
- var typography = _7a46818({ 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", inherit: "kioliog" }, weight: { regular: "kiolioh", medium: "kiolioi", semibold: "kiolioj", bold: "kioliok" }, align: { start: "kioliol", center: "kioliom", end: "kiolion" }, truncate: { true: "kiolioo" } }, defaultVariants: { variant: "body", color: "default" }, compoundVariants: [] });
2068
+ import { createRuntimeFn as _7a46825 } from "@vanilla-extract/recipes/createRuntimeFn";
2069
+ var typography = /* @__PURE__ */ _7a46825({ defaultClassName: "kiolio0", variantClassNames: { variant: { display: "kiolio1", h1: "kiolio2", h2: "kiolio3", h3: "kiolio4", h4: "kiolio5", "body-lg": "kiolio6", body: "kiolio7", "body-sm": "kiolio8", caption: "kiolio9" }, color: { "default": "kiolioa", muted: "kioliob", subtle: "kiolioc", primary: "kioliod", danger: "kiolioe", success: "kioliof", warning: "kioliog", inherit: "kiolioh" }, weight: { regular: "kiolioi", medium: "kiolioj", semibold: "kioliok", bold: "kioliol" }, align: { start: "kioliom", center: "kiolion", end: "kiolioo" }, truncate: { true: "kioliop" } }, defaultVariants: { variant: "body", color: "default" }, compoundVariants: [] });
1332
2070
 
1333
2071
  // src/components/Typography/Typography.tsx
1334
- import { jsx as jsx25 } from "react/jsx-runtime";
2072
+ import { jsx as jsx34 } from "react/jsx-runtime";
1335
2073
  var defaultElement = {
1336
2074
  display: "h1",
1337
2075
  h1: "h1",
@@ -1343,9 +2081,9 @@ var defaultElement = {
1343
2081
  "body-sm": "p",
1344
2082
  caption: "span"
1345
2083
  };
1346
- var Typography = /* @__PURE__ */ forwardRef21(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
2084
+ var Typography = /* @__PURE__ */ forwardRef29(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
1347
2085
  const Component = as ?? defaultElement[variant];
1348
- return /* @__PURE__ */ jsx25(
2086
+ return /* @__PURE__ */ jsx34(
1349
2087
  Component,
1350
2088
  {
1351
2089
  ref,
@@ -1357,15 +2095,20 @@ var Typography = /* @__PURE__ */ forwardRef21(function Typography2({ variant = "
1357
2095
  export {
1358
2096
  Accordion,
1359
2097
  AccordionItem,
2098
+ Alert,
1360
2099
  Avatar,
1361
2100
  Badge,
2101
+ Breadcrumb,
1362
2102
  Button,
1363
2103
  Card,
1364
2104
  CardBody,
1365
2105
  CardFooter,
1366
2106
  CardHeader,
1367
2107
  Checkbox,
2108
+ Combobox,
1368
2109
  Divider,
2110
+ Drawer,
2111
+ DrawerClose,
1369
2112
  DropdownMenu,
1370
2113
  DropdownMenuContent,
1371
2114
  DropdownMenuGroup,
@@ -1373,18 +2116,29 @@ export {
1373
2116
  DropdownMenuLabel,
1374
2117
  DropdownMenuSeparator,
1375
2118
  DropdownMenuTrigger,
2119
+ IconButton,
1376
2120
  Input,
2121
+ Link,
1377
2122
  Modal,
1378
2123
  ModalClose,
1379
2124
  Pagination,
1380
- Popover,
2125
+ Popover2 as Popover,
1381
2126
  PopoverClose,
2127
+ Progress,
1382
2128
  RadioGroup,
1383
2129
  Select,
1384
2130
  Skeleton,
2131
+ Slider,
1385
2132
  Spinner,
1386
2133
  Stack,
1387
2134
  Switch,
2135
+ Table,
2136
+ TableBody,
2137
+ TableCell,
2138
+ TableFooter,
2139
+ TableHead,
2140
+ TableHeader,
2141
+ TableRow,
1388
2142
  Tabs,
1389
2143
  TabsContent,
1390
2144
  TabsList,