@bestow-ui/react 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,8 +1,10 @@
1
1
  "use client";
2
2
  "use strict";
3
+ var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
6
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
9
  var __export = (target, all) => {
8
10
  for (var name in all)
@@ -16,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
16
18
  }
17
19
  return to;
18
20
  };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
19
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
30
 
21
31
  // src/index.ts
@@ -24,19 +34,26 @@ __export(index_exports, {
24
34
  Button: () => Button,
25
35
  Checkbox: () => Checkbox,
26
36
  Input: () => Input,
37
+ Modal: () => Modal,
38
+ ModalClose: () => ModalClose,
39
+ Select: () => Select,
27
40
  Stack: () => Stack,
28
41
  TextField: () => TextField,
29
42
  ThemeProvider: () => ThemeProvider,
43
+ ToastProvider: () => ToastProvider,
44
+ Tooltip: () => Tooltip,
30
45
  Typography: () => Typography,
31
46
  themeClass: () => themeClass,
47
+ usePortalClassName: () => usePortalClassName,
32
48
  useTheme: () => useTheme,
49
+ useToast: () => useToast,
33
50
  vars: () => vars
34
51
  });
35
52
  module.exports = __toCommonJS(index_exports);
36
53
 
37
54
  // src/theme/contract.css.ts
38
- var themeClass = { light: "tkagtb23", dark: "tkagtb24" };
39
- var vars = { space: { "0": "var(--tkagtb0)", "1": "var(--tkagtb1)", "2": "var(--tkagtb2)", "3": "var(--tkagtb3)", "4": "var(--tkagtb4)", "5": "var(--tkagtb5)", "6": "var(--tkagtb6)", "8": "var(--tkagtb7)", "10": "var(--tkagtb8)", "12": "var(--tkagtb9)", "16": "var(--tkagtba)" }, radius: { none: "var(--tkagtbb)", sm: "var(--tkagtbc)", md: "var(--tkagtbd)", lg: "var(--tkagtbe)", xl: "var(--tkagtbf)", full: "var(--tkagtbg)" }, font: { family: { sans: "var(--tkagtbh)", mono: "var(--tkagtbi)" }, size: { xs: "var(--tkagtbj)", sm: "var(--tkagtbk)", md: "var(--tkagtbl)", lg: "var(--tkagtbm)", xl: "var(--tkagtbn)", "2xl": "var(--tkagtbo)", "3xl": "var(--tkagtbp)", "4xl": "var(--tkagtbq)" }, weight: { regular: "var(--tkagtbr)", medium: "var(--tkagtbs)", semibold: "var(--tkagtbt)", bold: "var(--tkagtbu)" }, lineHeight: { tight: "var(--tkagtbv)", normal: "var(--tkagtbw)", relaxed: "var(--tkagtbx)" } }, shadow: { sm: "var(--tkagtby)", md: "var(--tkagtbz)", lg: "var(--tkagtb10)" }, duration: { fast: "var(--tkagtb11)", normal: "var(--tkagtb12)", slow: "var(--tkagtb13)" }, color: { bg: { "default": "var(--tkagtb14)", subtle: "var(--tkagtb15)", muted: "var(--tkagtb16)", inverse: "var(--tkagtb17)" }, fg: { "default": "var(--tkagtb18)", muted: "var(--tkagtb19)", subtle: "var(--tkagtb1a)", inverse: "var(--tkagtb1b)" }, border: { "default": "var(--tkagtb1c)", strong: "var(--tkagtb1d)", focus: "var(--tkagtb1e)" }, primary: { solid: "var(--tkagtb1f)", solidHover: "var(--tkagtb1g)", contrast: "var(--tkagtb1h)", subtle: "var(--tkagtb1i)", subtleHover: "var(--tkagtb1j)", text: "var(--tkagtb1k)" }, neutral: { solid: "var(--tkagtb1l)", solidHover: "var(--tkagtb1m)", contrast: "var(--tkagtb1n)", subtle: "var(--tkagtb1o)", subtleHover: "var(--tkagtb1p)", text: "var(--tkagtb1q)" }, danger: { solid: "var(--tkagtb1r)", solidHover: "var(--tkagtb1s)", contrast: "var(--tkagtb1t)", subtle: "var(--tkagtb1u)", subtleHover: "var(--tkagtb1v)", text: "var(--tkagtb1w)" }, success: { solid: "var(--tkagtb1x)", solidHover: "var(--tkagtb1y)", contrast: "var(--tkagtb1z)", subtle: "var(--tkagtb20)", subtleHover: "var(--tkagtb21)", text: "var(--tkagtb22)" } } };
55
+ var themeClass = { light: "tkagtb29", dark: "tkagtb2a" };
56
+ var vars = { space: { "0": "var(--tkagtb0)", "1": "var(--tkagtb1)", "2": "var(--tkagtb2)", "3": "var(--tkagtb3)", "4": "var(--tkagtb4)", "5": "var(--tkagtb5)", "6": "var(--tkagtb6)", "8": "var(--tkagtb7)", "10": "var(--tkagtb8)", "12": "var(--tkagtb9)", "16": "var(--tkagtba)" }, radius: { none: "var(--tkagtbb)", sm: "var(--tkagtbc)", md: "var(--tkagtbd)", lg: "var(--tkagtbe)", xl: "var(--tkagtbf)", full: "var(--tkagtbg)" }, font: { family: { sans: "var(--tkagtbh)", mono: "var(--tkagtbi)" }, size: { xs: "var(--tkagtbj)", sm: "var(--tkagtbk)", md: "var(--tkagtbl)", lg: "var(--tkagtbm)", xl: "var(--tkagtbn)", "2xl": "var(--tkagtbo)", "3xl": "var(--tkagtbp)", "4xl": "var(--tkagtbq)" }, weight: { regular: "var(--tkagtbr)", medium: "var(--tkagtbs)", semibold: "var(--tkagtbt)", bold: "var(--tkagtbu)" }, lineHeight: { tight: "var(--tkagtbv)", normal: "var(--tkagtbw)", relaxed: "var(--tkagtbx)" } }, shadow: { sm: "var(--tkagtby)", md: "var(--tkagtbz)", lg: "var(--tkagtb10)" }, duration: { fast: "var(--tkagtb11)", normal: "var(--tkagtb12)", slow: "var(--tkagtb13)" }, zIndex: { dropdown: "var(--tkagtb14)", overlay: "var(--tkagtb15)", modal: "var(--tkagtb16)", toast: "var(--tkagtb17)", tooltip: "var(--tkagtb18)" }, color: { bg: { "default": "var(--tkagtb19)", subtle: "var(--tkagtb1a)", muted: "var(--tkagtb1b)", inverse: "var(--tkagtb1c)", overlay: "var(--tkagtb1d)" }, fg: { "default": "var(--tkagtb1e)", muted: "var(--tkagtb1f)", subtle: "var(--tkagtb1g)", inverse: "var(--tkagtb1h)" }, border: { "default": "var(--tkagtb1i)", strong: "var(--tkagtb1j)", focus: "var(--tkagtb1k)" }, primary: { solid: "var(--tkagtb1l)", solidHover: "var(--tkagtb1m)", contrast: "var(--tkagtb1n)", subtle: "var(--tkagtb1o)", subtleHover: "var(--tkagtb1p)", text: "var(--tkagtb1q)" }, neutral: { solid: "var(--tkagtb1r)", solidHover: "var(--tkagtb1s)", contrast: "var(--tkagtb1t)", subtle: "var(--tkagtb1u)", subtleHover: "var(--tkagtb1v)", text: "var(--tkagtb1w)" }, danger: { solid: "var(--tkagtb1x)", solidHover: "var(--tkagtb1y)", contrast: "var(--tkagtb1z)", subtle: "var(--tkagtb20)", subtleHover: "var(--tkagtb21)", text: "var(--tkagtb22)" }, success: { solid: "var(--tkagtb23)", solidHover: "var(--tkagtb24)", contrast: "var(--tkagtb25)", subtle: "var(--tkagtb26)", subtleHover: "var(--tkagtb27)", text: "var(--tkagtb28)" } } };
40
57
 
41
58
  // src/theme/ThemeProvider.tsx
42
59
  var import_react = require("react");
@@ -47,7 +64,8 @@ function cx(...classNames) {
47
64
  }
48
65
 
49
66
  // src/theme/ThemeProvider.css.ts
50
- var root = "sfyhlv0";
67
+ var portal = "sfyhlv0";
68
+ var root = "sfyhlv1 sfyhlv0";
51
69
 
52
70
  // src/theme/ThemeProvider.tsx
53
71
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -58,6 +76,9 @@ var ThemeProvider = (0, import_react.forwardRef)(function ThemeProvider2({ theme
58
76
  function useTheme() {
59
77
  return (0, import_react.useContext)(ThemeContext);
60
78
  }
79
+ function usePortalClassName() {
80
+ return cx(themeClass[useTheme()], portal);
81
+ }
61
82
 
62
83
  // src/components/Button/Button.tsx
63
84
  var import_react2 = require("react");
@@ -91,10 +112,10 @@ var import_react3 = require("react");
91
112
 
92
113
  // src/utils/mergeRefs.ts
93
114
  function mergeRefs(...refs) {
94
- return (value) => {
115
+ return (value2) => {
95
116
  for (const ref of refs) {
96
- if (typeof ref === "function") ref(value);
97
- else if (ref) ref.current = value;
117
+ if (typeof ref === "function") ref(value2);
118
+ else if (ref) ref.current = value2;
98
119
  }
99
120
  };
100
121
  }
@@ -203,17 +224,176 @@ var TextField = (0, import_react5.forwardRef)(function TextField2({ label: label
203
224
  ] });
204
225
  });
205
226
 
206
- // src/components/Stack/Stack.tsx
227
+ // src/components/Modal/Modal.tsx
228
+ var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
229
+ var import_icons = require("@bestow-ui/icons");
230
+
231
+ // src/components/Modal/Modal.css.ts
232
+ var import_createRuntimeFn4 = require("@vanilla-extract/recipes/createRuntimeFn");
233
+ var body = "_1pdsmv0a";
234
+ var closeButton = "_1pdsmv09";
235
+ var content = (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
236
+ var description = "_1pdsmv08";
237
+ var footer = "_1pdsmv0b";
238
+ var header = "_1pdsmv05";
239
+ var headings = "_1pdsmv06";
240
+ var overlay = "_1pdsmv00";
241
+ var title = "_1pdsmv07";
242
+
243
+ // src/components/Modal/Modal.tsx
244
+ var import_jsx_runtime6 = require("react/jsx-runtime");
245
+ function Modal({
246
+ open,
247
+ defaultOpen,
248
+ onOpenChange,
249
+ trigger: trigger2,
250
+ title: title3,
251
+ description: description3,
252
+ children,
253
+ footer: footer2,
254
+ size,
255
+ hideCloseButton = false,
256
+ closeOnOverlayClick = true,
257
+ className
258
+ }) {
259
+ const portalClassName = usePortalClassName();
260
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
261
+ trigger2 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Trigger, { asChild: true, children: trigger2 }),
262
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Dialog.Portal, { children: [
263
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Overlay, { className: cx(portalClassName, overlay) }),
264
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
265
+ Dialog.Content,
266
+ {
267
+ className: cx(portalClassName, content({ size }), className),
268
+ onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
269
+ ...description3 ? {} : { "aria-describedby": void 0 },
270
+ children: [
271
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: header, children: [
272
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: headings, children: [
273
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Title, { className: title, children: title3 }),
274
+ description3 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Description, { className: description, children: description3 })
275
+ ] }),
276
+ !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Close, { className: closeButton, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons.XIcon, { size: 16 }) })
277
+ ] }),
278
+ children && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: body, children }),
279
+ footer2 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: footer, children: footer2 })
280
+ ]
281
+ }
282
+ )
283
+ ] })
284
+ ] });
285
+ }
286
+ var ModalClose = Dialog.Close;
287
+
288
+ // src/components/Select/Select.tsx
289
+ var RadixSelect = __toESM(require("@radix-ui/react-select"), 1);
207
290
  var import_react6 = require("react");
291
+ var import_icons2 = require("@bestow-ui/icons");
292
+
293
+ // src/components/Select/Select.css.ts
294
+ var content2 = "_1kx81e83";
295
+ var icon2 = "_1kx81e82";
296
+ var item = "_1kx81e85";
297
+ var itemIndicator = "_1kx81e86";
298
+ var trigger = "_1kx81e80";
299
+ var value = "_1kx81e81";
300
+ var viewport = "_1kx81e84";
301
+
302
+ // src/components/Select/Select.tsx
303
+ var import_jsx_runtime7 = require("react/jsx-runtime");
304
+ var Select = (0, import_react6.forwardRef)(function Select2({
305
+ options,
306
+ value: value2,
307
+ defaultValue,
308
+ onValueChange,
309
+ placeholder,
310
+ label: label2,
311
+ helperText: helperText2,
312
+ error,
313
+ size,
314
+ fullWidth,
315
+ disabled,
316
+ required,
317
+ name,
318
+ id,
319
+ "aria-label": ariaLabel,
320
+ className
321
+ }, ref) {
322
+ const generatedId = (0, import_react6.useId)();
323
+ const triggerId = id ?? generatedId;
324
+ const helperId = helperText2 ? `${triggerId}-helper` : void 0;
325
+ const portalClassName = usePortalClassName();
326
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
327
+ label2 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: triggerId, className: label, children: [
328
+ label2,
329
+ required && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
330
+ ] }),
331
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
332
+ RadixSelect.Root,
333
+ {
334
+ value: value2,
335
+ defaultValue,
336
+ onValueChange,
337
+ disabled,
338
+ required,
339
+ name,
340
+ children: [
341
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
342
+ RadixSelect.Trigger,
343
+ {
344
+ ref,
345
+ id: triggerId,
346
+ "aria-label": ariaLabel,
347
+ "aria-invalid": error || void 0,
348
+ "aria-describedby": helperId,
349
+ "data-invalid": error || void 0,
350
+ className: cx(root3({ size, fullWidth }), trigger, className),
351
+ children: [
352
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: value, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.Value, { placeholder }) }),
353
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.Icon, { className: icon2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons2.ChevronDownIcon, { size: 16 }) })
354
+ ]
355
+ }
356
+ ),
357
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
358
+ RadixSelect.Content,
359
+ {
360
+ position: "popper",
361
+ sideOffset: 4,
362
+ collisionPadding: 8,
363
+ className: cx(portalClassName, content2),
364
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.Viewport, { className: viewport, children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
365
+ RadixSelect.Item,
366
+ {
367
+ value: option.value,
368
+ disabled: option.disabled,
369
+ className: item,
370
+ children: [
371
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.ItemText, { children: option.label }),
372
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons2.CheckIcon, { size: 16 }) })
373
+ ]
374
+ },
375
+ option.value
376
+ )) })
377
+ }
378
+ ) })
379
+ ]
380
+ }
381
+ ),
382
+ helperText2 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText2 })
383
+ ] });
384
+ });
385
+
386
+ // src/components/Stack/Stack.tsx
387
+ var import_react7 = require("react");
208
388
 
209
389
  // src/components/Stack/Stack.css.ts
210
- var import_createRuntimeFn4 = require("@vanilla-extract/recipes/createRuntimeFn");
211
- var stack = (0, import_createRuntimeFn4.createRuntimeFn)({ 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: [] });
390
+ var import_createRuntimeFn5 = require("@vanilla-extract/recipes/createRuntimeFn");
391
+ var stack = (0, import_createRuntimeFn5.createRuntimeFn)({ 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: [] });
212
392
 
213
393
  // src/components/Stack/Stack.tsx
214
- var import_jsx_runtime6 = require("react/jsx-runtime");
215
- var Stack = (0, import_react6.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
216
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
394
+ var import_jsx_runtime8 = require("react/jsx-runtime");
395
+ var Stack = (0, import_react7.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
396
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
217
397
  Component,
218
398
  {
219
399
  ref,
@@ -223,15 +403,119 @@ var Stack = (0, import_react6.forwardRef)(function Stack2({ as: Component = "div
223
403
  );
224
404
  });
225
405
 
406
+ // src/components/Toast/Toast.tsx
407
+ var RadixToast = __toESM(require("@radix-ui/react-toast"), 1);
408
+ var import_react8 = require("react");
409
+ var import_icons3 = require("@bestow-ui/icons");
410
+
411
+ // src/components/Toast/Toast.css.ts
412
+ var import_createRuntimeFn6 = require("@vanilla-extract/recipes/createRuntimeFn");
413
+ var action = "_1g11zvx7";
414
+ var close = "_1g11zvx8";
415
+ var description2 = "_1g11zvx6";
416
+ var title2 = "_1g11zvx5";
417
+ var toast = (0, import_createRuntimeFn6.createRuntimeFn)({ defaultClassName: "_1g11zvx1", variantClassNames: { variant: { "default": "_1g11zvx2", success: "_1g11zvx3", danger: "_1g11zvx4" } }, defaultVariants: { variant: "default" }, compoundVariants: [] });
418
+ var viewport2 = "_1g11zvx0";
419
+
420
+ // src/components/Toast/Toast.tsx
421
+ var import_jsx_runtime9 = require("react/jsx-runtime");
422
+ var REMOVE_DELAY = 500;
423
+ var ToastContext = (0, import_react8.createContext)(null);
424
+ function ToastProvider({ children, duration = 5e3, label: label2 = "\uC54C\uB9BC" }) {
425
+ const [toasts, setToasts] = (0, import_react8.useState)([]);
426
+ const nextId = (0, import_react8.useRef)(0);
427
+ const portalClassName = usePortalClassName();
428
+ const toast2 = (0, import_react8.useCallback)((options) => {
429
+ const id = nextId.current++;
430
+ setToasts((prev) => [...prev, { ...options, id, open: true }]);
431
+ return id;
432
+ }, []);
433
+ const dismiss = (0, import_react8.useCallback)((id) => {
434
+ const isTarget = (t) => id === void 0 || t.id === id;
435
+ setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
436
+ setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
437
+ }, []);
438
+ const value2 = (0, import_react8.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
439
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ToastContext.Provider, { value: value2, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(RadixToast.Provider, { duration, label: label2, swipeDirection: "right", children: [
440
+ children,
441
+ toasts.map(({ id, open, title: title3, description: description3, variant, duration: itemDuration, action: action2 }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
442
+ RadixToast.Root,
443
+ {
444
+ open,
445
+ duration: itemDuration,
446
+ onOpenChange: (nextOpen) => {
447
+ if (!nextOpen) dismiss(id);
448
+ },
449
+ className: toast({ variant }),
450
+ children: [
451
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RadixToast.Title, { className: title2, children: title3 }),
452
+ description3 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RadixToast.Description, { className: description2, children: description3 }),
453
+ action2 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RadixToast.Action, { asChild: true, altText: action2.altText ?? action2.label, className: action, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action2.onClick, children: action2.label }) }),
454
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons3.XIcon, { size: 16 }) })
455
+ ]
456
+ },
457
+ id
458
+ )),
459
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RadixToast.Viewport, { className: cx(portalClassName, viewport2) })
460
+ ] }) });
461
+ }
462
+ function useToast() {
463
+ const context = (0, import_react8.useContext)(ToastContext);
464
+ if (!context) throw new Error("useToast \uB294 ToastProvider \uC548\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4.");
465
+ return context;
466
+ }
467
+
468
+ // src/components/Tooltip/Tooltip.tsx
469
+ var RadixTooltip = __toESM(require("@radix-ui/react-tooltip"), 1);
470
+
471
+ // src/components/Tooltip/Tooltip.css.ts
472
+ var arrow = "z7rufs1";
473
+ var content3 = "z7rufs0";
474
+
475
+ // src/components/Tooltip/Tooltip.tsx
476
+ var import_jsx_runtime10 = require("react/jsx-runtime");
477
+ function Tooltip({
478
+ content: content4,
479
+ children,
480
+ side = "top",
481
+ align = "center",
482
+ delay = 300,
483
+ open,
484
+ defaultOpen,
485
+ onOpenChange,
486
+ disabled,
487
+ className
488
+ }) {
489
+ const portalClassName = usePortalClassName();
490
+ if (disabled || content4 == null || content4 === "") return children;
491
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
492
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RadixTooltip.Trigger, { asChild: true, children }),
493
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
494
+ RadixTooltip.Content,
495
+ {
496
+ side,
497
+ align,
498
+ sideOffset: 6,
499
+ collisionPadding: 8,
500
+ className: cx(portalClassName, content3, className),
501
+ children: [
502
+ content4,
503
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RadixTooltip.Arrow, { className: arrow, width: 10, height: 5 })
504
+ ]
505
+ }
506
+ ) })
507
+ ] }) });
508
+ }
509
+
226
510
  // src/components/Typography/Typography.tsx
227
- var import_react7 = require("react");
511
+ var import_react9 = require("react");
228
512
 
229
513
  // src/components/Typography/Typography.css.ts
230
- var import_createRuntimeFn5 = require("@vanilla-extract/recipes/createRuntimeFn");
231
- var typography = (0, import_createRuntimeFn5.createRuntimeFn)({ 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: [] });
514
+ var import_createRuntimeFn7 = require("@vanilla-extract/recipes/createRuntimeFn");
515
+ var typography = (0, import_createRuntimeFn7.createRuntimeFn)({ 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: [] });
232
516
 
233
517
  // src/components/Typography/Typography.tsx
234
- var import_jsx_runtime7 = require("react/jsx-runtime");
518
+ var import_jsx_runtime11 = require("react/jsx-runtime");
235
519
  var defaultElement = {
236
520
  display: "h1",
237
521
  h1: "h1",
@@ -243,9 +527,9 @@ var defaultElement = {
243
527
  "body-sm": "p",
244
528
  caption: "span"
245
529
  };
246
- var Typography = (0, import_react7.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
530
+ var Typography = (0, import_react9.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
247
531
  const Component = as ?? defaultElement[variant];
248
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
532
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
249
533
  Component,
250
534
  {
251
535
  ref,
@@ -259,12 +543,19 @@ var Typography = (0, import_react7.forwardRef)(function Typography2({ variant =
259
543
  Button,
260
544
  Checkbox,
261
545
  Input,
546
+ Modal,
547
+ ModalClose,
548
+ Select,
262
549
  Stack,
263
550
  TextField,
264
551
  ThemeProvider,
552
+ ToastProvider,
553
+ Tooltip,
265
554
  Typography,
266
555
  themeClass,
556
+ usePortalClassName,
267
557
  useTheme,
558
+ useToast,
268
559
  vars
269
560
  });
270
561
  //# sourceMappingURL=index.cjs.map