@nayhoo/ui 0.8.0 → 0.9.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.
Files changed (40) hide show
  1. package/dist/chunk-3Z2HB2J6.mjs +25 -0
  2. package/dist/chunk-3Z2HB2J6.mjs.map +1 -0
  3. package/dist/chunk-GI2XNLAW.mjs +39 -0
  4. package/dist/chunk-GI2XNLAW.mjs.map +1 -0
  5. package/dist/chunk-NU7XYEVP.mjs +43 -0
  6. package/dist/chunk-NU7XYEVP.mjs.map +1 -0
  7. package/dist/chunk-RAS2GZOT.mjs +25 -0
  8. package/dist/chunk-RAS2GZOT.mjs.map +1 -0
  9. package/dist/chunk-X6UXW66P.mjs +39 -0
  10. package/dist/chunk-X6UXW66P.mjs.map +1 -0
  11. package/dist/components/button.d.mts +1 -1
  12. package/dist/components/button.d.ts +1 -1
  13. package/dist/components/button.js.map +1 -1
  14. package/dist/components/button.mjs +6 -33
  15. package/dist/components/button.mjs.map +1 -1
  16. package/dist/components/heading.mjs +4 -37
  17. package/dist/components/heading.mjs.map +1 -1
  18. package/dist/components/icon-button.mjs +6 -33
  19. package/dist/components/icon-button.mjs.map +1 -1
  20. package/dist/components/text.mjs +5 -19
  21. package/dist/components/text.mjs.map +1 -1
  22. package/dist/providers/index.css +564 -0
  23. package/dist/providers/index.css.map +1 -1
  24. package/dist/providers/index.d.mts +21 -1
  25. package/dist/providers/index.d.ts +21 -1
  26. package/dist/providers/index.js +371 -2
  27. package/dist/providers/index.js.map +1 -1
  28. package/dist/providers/index.mjs +248 -3
  29. package/dist/providers/index.mjs.map +1 -1
  30. package/dist/theme/index.css +258 -0
  31. package/dist/theme/index.css.map +1 -1
  32. package/dist/theme/index.d.mts +8 -1
  33. package/dist/theme/index.d.ts +8 -1
  34. package/dist/theme/index.js +20 -0
  35. package/dist/theme/index.js.map +1 -1
  36. package/dist/theme/index.mjs +14 -2
  37. package/dist/theme/index.mjs.map +1 -1
  38. package/package.json +2 -3
  39. package/dist/chunk-5WQXUS72.mjs +0 -11
  40. package/dist/chunk-5WQXUS72.mjs.map +0 -1
@@ -1,10 +1,35 @@
1
1
  import {
2
+ Text
3
+ } from "../chunk-3Z2HB2J6.mjs";
4
+ import {
5
+ checkmark,
2
6
  darkTheme,
3
- lightTheme
4
- } from "../chunk-5WQXUS72.mjs";
7
+ error,
8
+ lightTheme,
9
+ toastClose,
10
+ toastInner,
11
+ toastRoot,
12
+ toastViewport
13
+ } from "../chunk-RAS2GZOT.mjs";
14
+ import {
15
+ Heading
16
+ } from "../chunk-NU7XYEVP.mjs";
17
+ import {
18
+ IconButton
19
+ } from "../chunk-GI2XNLAW.mjs";
20
+ import "../chunk-IRWT2CO3.mjs";
21
+ import "../chunk-IPBDMBQP.mjs";
22
+ import {
23
+ Button
24
+ } from "../chunk-X6UXW66P.mjs";
25
+ import "../chunk-FG2ZBTVM.mjs";
26
+ import "../chunk-A2I7UNX6.mjs";
27
+ import "../chunk-S3GY7GCD.mjs";
5
28
  import {
6
29
  theme
7
30
  } from "../chunk-OETJQIMJ.mjs";
31
+ import "../chunk-4N6P3Y54.mjs";
32
+ import "../chunk-7EGQM3ZL.mjs";
8
33
  import "../chunk-LZOMFHX3.mjs";
9
34
 
10
35
  // src/providers/theme-provider.tsx
@@ -29,8 +54,228 @@ var ThemeProvider = ({
29
54
  }
30
55
  ) });
31
56
  };
57
+
58
+ // src/providers/toaster.tsx
59
+ import { Cross2Icon } from "@radix-ui/react-icons";
60
+ import * as ToastPrimitives from "@radix-ui/react-toast";
61
+ import * as React2 from "react";
62
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
63
+ var defaultToaster = Object.assign(() => {
64
+ }, {
65
+ success: () => {
66
+ },
67
+ error: () => {
68
+ }
69
+ });
70
+ var ToasterContext = React2.createContext(defaultToaster);
71
+ var toastElementsMapRef = React2.createRef();
72
+ var defaultToastImpl = {
73
+ toastElementsMapRef,
74
+ sortToasts: () => {
75
+ }
76
+ };
77
+ var ToastContextImpl = React2.createContext(defaultToastImpl);
78
+ var ANIMATION_OUT_DURATION = 350;
79
+ var Toaster = ({
80
+ children,
81
+ ...props
82
+ }) => {
83
+ const [toasts, setToasts] = React2.useState(/* @__PURE__ */ new Map());
84
+ const toastElementsMapRef2 = React2.useRef(
85
+ /* @__PURE__ */ new Map()
86
+ );
87
+ const viewportRef = React2.useRef(null);
88
+ const sortToasts = React2.useCallback(() => {
89
+ const toastElements = Array.from(toastElementsMapRef2.current).reverse();
90
+ const heights = [];
91
+ toastElements.forEach(([, toast], index) => {
92
+ if (!toast) return;
93
+ const height = toast.clientHeight;
94
+ heights.push(height);
95
+ const frontToastHeight = heights[0];
96
+ toast.setAttribute("data-front", `${index === 0}`);
97
+ toast.setAttribute("data-hidden", `${index > 2}`);
98
+ toast.style.setProperty("--index", `${index}`);
99
+ toast.style.setProperty("--height", `${height}px`);
100
+ toast.style.setProperty("--front-height", `${frontToastHeight}px`);
101
+ const hoverOffsetY = heights.slice(0, index).reduce((res, next) => res += next, 0);
102
+ toast.style.setProperty("--hover-offset-y", `-${hoverOffsetY}px`);
103
+ });
104
+ }, []);
105
+ const handleAddToast = React2.useCallback((toast) => {
106
+ setToasts((currentToasts) => {
107
+ const newMap = new Map(currentToasts);
108
+ newMap.set(String(Date.now()), { ...toast, open: true });
109
+ return newMap;
110
+ });
111
+ }, []);
112
+ const handleRemoveToast = React2.useCallback((key) => {
113
+ setToasts((currentToasts) => {
114
+ const newMap = new Map(currentToasts);
115
+ newMap.delete(key);
116
+ return newMap;
117
+ });
118
+ }, []);
119
+ const handleDispatchDefault = React2.useCallback(
120
+ (payload) => handleAddToast({ ...payload, status: "default" }),
121
+ [handleAddToast]
122
+ );
123
+ const handleDispatchSuccess = React2.useCallback(
124
+ (payload) => handleAddToast({ ...payload, status: "success" }),
125
+ [handleAddToast]
126
+ );
127
+ const handleDispatchError = React2.useCallback(
128
+ (payload) => handleAddToast({ ...payload, status: "error" }),
129
+ [handleAddToast]
130
+ );
131
+ React2.useEffect(() => {
132
+ const viewport = viewportRef.current;
133
+ if (viewport) {
134
+ const handleFocus = () => {
135
+ toastElementsMapRef2.current.forEach((toast) => {
136
+ toast.setAttribute("data-hovering", "true");
137
+ });
138
+ };
139
+ const handleBlur = (event) => {
140
+ if (!viewport.contains(event.target) || viewport === event.target) {
141
+ toastElementsMapRef2.current.forEach((toast) => {
142
+ toast.setAttribute("data-hovering", "false");
143
+ });
144
+ }
145
+ };
146
+ viewport.addEventListener("pointermove", handleFocus);
147
+ viewport.addEventListener("pointerleave", handleBlur);
148
+ viewport.addEventListener("focusin", handleFocus);
149
+ viewport.addEventListener("focusout", handleBlur);
150
+ return () => {
151
+ viewport.removeEventListener("pointermove", handleFocus);
152
+ viewport.removeEventListener("pointerleave", handleBlur);
153
+ viewport.removeEventListener("focusin", handleFocus);
154
+ viewport.removeEventListener("focusout", handleBlur);
155
+ };
156
+ }
157
+ }, []);
158
+ const toastApi = React2.useMemo(
159
+ () => Object.assign(handleDispatchDefault, {
160
+ success: handleDispatchSuccess,
161
+ error: handleDispatchError
162
+ }),
163
+ [handleDispatchDefault, handleDispatchSuccess, handleDispatchError]
164
+ );
165
+ return /* @__PURE__ */ jsx2(ToasterContext.Provider, { value: toastApi, children: /* @__PURE__ */ jsx2(
166
+ ToastContextImpl.Provider,
167
+ {
168
+ value: React2.useMemo(
169
+ () => ({
170
+ toastElementsMapRef: toastElementsMapRef2,
171
+ sortToasts
172
+ }),
173
+ [sortToasts]
174
+ ),
175
+ children: /* @__PURE__ */ jsxs(ToastPrimitives.Provider, { ...props, children: [
176
+ children,
177
+ Array.from(toasts).map(([key, toast]) => /* @__PURE__ */ jsx2(
178
+ Toast,
179
+ {
180
+ id: key,
181
+ toast,
182
+ onOpenChange: (open) => {
183
+ if (!open) {
184
+ toastElementsMapRef2.current.delete(key);
185
+ sortToasts();
186
+ if (!open) {
187
+ setTimeout(() => {
188
+ handleRemoveToast(key);
189
+ }, ANIMATION_OUT_DURATION);
190
+ }
191
+ }
192
+ }
193
+ },
194
+ key
195
+ )),
196
+ /* @__PURE__ */ jsx2(
197
+ ToastPrimitives.Viewport,
198
+ {
199
+ ref: viewportRef,
200
+ className: toastViewport
201
+ }
202
+ )
203
+ ] })
204
+ }
205
+ ) });
206
+ };
207
+ var Toast = (props) => {
208
+ const { onOpenChange, toast, id, ...toastProps } = props;
209
+ const ref = React2.useRef(null);
210
+ const context = React2.useContext(ToastContextImpl);
211
+ const { sortToasts, toastElementsMapRef: toastElementsMapRef2 } = context;
212
+ const toastElementsMap = toastElementsMapRef2.current;
213
+ React2.useLayoutEffect(() => {
214
+ if (ref.current) {
215
+ toastElementsMap == null ? void 0 : toastElementsMap.set(id, ref.current);
216
+ sortToasts();
217
+ }
218
+ }, [id, sortToasts, toastElementsMap]);
219
+ return /* @__PURE__ */ jsx2(
220
+ ToastPrimitives.Root,
221
+ {
222
+ ...toastProps,
223
+ ref,
224
+ type: toast.type,
225
+ duration: toast.duration,
226
+ className: toastRoot,
227
+ onOpenChange,
228
+ children: /* @__PURE__ */ jsxs("div", { className: toastInner, "data-status": toast.status, children: [
229
+ /* @__PURE__ */ jsx2(ToastStatusIcon, { status: toast.status }),
230
+ /* @__PURE__ */ jsx2(ToastPrimitives.Title, { asChild: true, style: { gridArea: "title" }, children: /* @__PURE__ */ jsx2(Heading, { level: "6", children: toast.title }) }),
231
+ /* @__PURE__ */ jsx2(
232
+ ToastPrimitives.Description,
233
+ {
234
+ asChild: true,
235
+ style: { gridArea: "description" },
236
+ children: /* @__PURE__ */ jsx2(Text, { color: "subtle", size: "2", children: toast.description })
237
+ }
238
+ ),
239
+ toast.action,
240
+ /* @__PURE__ */ jsx2(
241
+ ToastPrimitives.Close,
242
+ {
243
+ "aria-label": "Close",
244
+ asChild: true,
245
+ className: toastClose,
246
+ children: /* @__PURE__ */ jsx2(IconButton, { variant: "outline", children: /* @__PURE__ */ jsx2(Cross2Icon, {}) })
247
+ }
248
+ )
249
+ ] })
250
+ }
251
+ );
252
+ };
253
+ var ToastStatusIcon = ({ status }) => {
254
+ return status !== "default" ? /* @__PURE__ */ jsxs("div", { style: { gridArea: "icon", alignSelf: "start" }, children: [
255
+ status === "success" && /* @__PURE__ */ jsx2(CheckmarkIcon, {}),
256
+ status === "error" && /* @__PURE__ */ jsx2(ErrorIcon, {})
257
+ ] }) : null;
258
+ };
259
+ var ErrorIcon = () => /* @__PURE__ */ jsx2("div", { "aria-hidden": true, className: error });
260
+ var CheckmarkIcon = () => /* @__PURE__ */ jsx2("div", { "aria-hidden": true, className: checkmark });
261
+ var ToastAction = ({
262
+ ...props
263
+ }) => {
264
+ return /* @__PURE__ */ jsx2(
265
+ ToastPrimitives.Action,
266
+ {
267
+ ...props,
268
+ style: { gridArea: "action", ...props.style },
269
+ asChild: true,
270
+ children: /* @__PURE__ */ jsx2(Button, { size: "1", variant: "outline", children: props.children })
271
+ }
272
+ );
273
+ };
32
274
  export {
33
275
  ThemeContext,
34
- ThemeProvider
276
+ ThemeProvider,
277
+ ToastAction,
278
+ Toaster,
279
+ ToasterContext
35
280
  };
36
281
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/providers/theme-provider.tsx"],"sourcesContent":["import { theme } from \"@/theme/theme-contracts/theme-contract.css\";\nimport { darkTheme } from \"@/theme/themes/dark-theme.css\";\nimport { lightTheme } from \"@/theme/themes/light-theme.css\";\nimport { ThemeMode } from \"@/types/theme-mode\";\nimport React, { createContext } from \"react\";\n\nconst defaultThemeMode: ThemeMode = \"light\";\n\nexport const ThemeContext = createContext<ThemeMode>(defaultThemeMode);\n\ntype ThemeProviderProps = {\n children: React.ReactNode;\n themeMode?: ThemeMode;\n};\n\n/**\n * This component applies the theme css. It should preferably be used at the root of your component tree.\n */\nexport const ThemeProvider = ({\n children,\n themeMode = defaultThemeMode,\n}: ThemeProviderProps) => {\n const isDarkMode = themeMode === \"dark\";\n\n return (\n <ThemeContext value={themeMode}>\n <div\n className={isDarkMode ? darkTheme : lightTheme}\n style={{\n backgroundColor: theme.semanticColors.background,\n color: theme.semanticColors.backgroundTextContrast,\n }}\n >\n {children}\n </div>\n </ThemeContext>\n );\n};\n"],"mappings":";;;;;;;;;;AAIA,SAAgB,qBAAqB;AAsB/B;AApBN,IAAM,mBAA8B;AAE7B,IAAM,eAAe,cAAyB,gBAAgB;AAU9D,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA,YAAY;AACd,MAA0B;AACxB,QAAM,aAAa,cAAc;AAEjC,SACE,oBAAC,gBAAa,OAAO,WACnB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,aAAa,YAAY;AAAA,MACpC,OAAO;AAAA,QACL,iBAAiB,MAAM,eAAe;AAAA,QACtC,OAAO,MAAM,eAAe;AAAA,MAC9B;AAAA,MAEC;AAAA;AAAA,EACH,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/providers/theme-provider.tsx","../../src/providers/toaster.tsx"],"sourcesContent":["import { theme } from \"@/theme/theme-contracts/theme-contract.css\";\nimport { darkTheme } from \"@/theme/themes/dark-theme.css\";\nimport { lightTheme } from \"@/theme/themes/light-theme.css\";\nimport { ThemeMode } from \"@/types/theme-mode\";\nimport React, { createContext } from \"react\";\n\nconst defaultThemeMode: ThemeMode = \"light\";\n\nexport const ThemeContext = createContext<ThemeMode>(defaultThemeMode);\n\ntype ThemeProviderProps = {\n children: React.ReactNode;\n themeMode?: ThemeMode;\n};\n\n/**\n * This component applies the theme css. It should preferably be used at the root of your component tree.\n */\nexport const ThemeProvider = ({\n children,\n themeMode = defaultThemeMode,\n}: ThemeProviderProps) => {\n const isDarkMode = themeMode === \"dark\";\n\n return (\n <ThemeContext value={themeMode}>\n <div\n className={isDarkMode ? darkTheme : lightTheme}\n style={{\n backgroundColor: theme.semanticColors.background,\n color: theme.semanticColors.backgroundTextContrast,\n }}\n >\n {children}\n </div>\n </ThemeContext>\n );\n};\n","// Credits: https://codesandbox.io/p/sandbox/radix-toast-stack-dpfx5f\n\nimport { Button } from \"@/components/button\";\nimport { Heading } from \"@/components/heading\";\nimport { IconButton } from \"@/components/icon-button\";\nimport { Text } from \"@/components/text\";\nimport {\n checkmark,\n error,\n toastClose,\n toastInner,\n toastRoot,\n toastViewport,\n} from \"@/theme/styles/toaster.css\";\nimport { Cross2Icon } from \"@radix-ui/react-icons\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport * as React from \"react\";\n\ntype Toast = {\n title?: string;\n description?: string;\n status: \"default\" | \"error\" | \"success\";\n action?: React.ReactNode;\n} & ToastPrimitives.ToastProps;\n\ntype AddToastPayload = Omit<Toast, \"status\">;\n\ntype ToasterContextProps = ((payload: AddToastPayload) => void) & {\n error: (payload: AddToastPayload) => void;\n success: (payload: AddToastPayload) => void;\n};\n\nconst defaultToaster: ToasterContextProps = Object.assign(() => {}, {\n success: () => {},\n error: () => {},\n});\n\nexport const ToasterContext = React.createContext(defaultToaster);\n\ntype ToastContextImplProps = {\n toastElementsMapRef: React.RefObject<Map<string, HTMLLIElement> | null>;\n sortToasts: () => void;\n};\n\nconst toastElementsMapRef = React.createRef<Map<string, HTMLLIElement>>();\n\nconst defaultToastImpl: ToastContextImplProps = {\n toastElementsMapRef,\n sortToasts: () => {},\n};\n\nconst ToastContextImpl = React.createContext(defaultToastImpl);\n\nconst ANIMATION_OUT_DURATION = 350;\n\nexport const Toaster = ({\n children,\n ...props\n}: ToastPrimitives.ToastProviderProps) => {\n const [toasts, setToasts] = React.useState<Map<string, Toast>>(new Map());\n const toastElementsMapRef = React.useRef<Map<string, HTMLLIElement>>(\n new Map(),\n );\n const viewportRef = React.useRef<HTMLOListElement>(null);\n\n const sortToasts = React.useCallback(() => {\n const toastElements = Array.from(toastElementsMapRef.current).reverse();\n const heights: number[] = [];\n\n toastElements.forEach(([, toast], index) => {\n if (!toast) return;\n const height = toast.clientHeight;\n heights.push(height);\n const frontToastHeight = heights[0];\n toast.setAttribute(\"data-front\", `${index === 0}`);\n toast.setAttribute(\"data-hidden\", `${index > 2}`);\n toast.style.setProperty(\"--index\", `${index}`);\n toast.style.setProperty(\"--height\", `${height}px`);\n toast.style.setProperty(\"--front-height\", `${frontToastHeight}px`);\n const hoverOffsetY = heights\n .slice(0, index)\n .reduce((res, next) => (res += next), 0);\n toast.style.setProperty(\"--hover-offset-y\", `-${hoverOffsetY}px`);\n });\n }, []);\n\n const handleAddToast = React.useCallback((toast: Toast) => {\n setToasts((currentToasts) => {\n const newMap = new Map(currentToasts);\n newMap.set(String(Date.now()), { ...toast, open: true });\n\n return newMap;\n });\n }, []);\n\n const handleRemoveToast = React.useCallback((key: string) => {\n setToasts((currentToasts) => {\n const newMap = new Map(currentToasts);\n newMap.delete(key);\n\n return newMap;\n });\n }, []);\n\n const handleDispatchDefault = React.useCallback(\n (payload: AddToastPayload) =>\n handleAddToast({ ...payload, status: \"default\" }),\n [handleAddToast],\n );\n\n const handleDispatchSuccess = React.useCallback(\n (payload: AddToastPayload) =>\n handleAddToast({ ...payload, status: \"success\" }),\n [handleAddToast],\n );\n\n const handleDispatchError = React.useCallback(\n (payload: AddToastPayload) =>\n handleAddToast({ ...payload, status: \"error\" }),\n [handleAddToast],\n );\n\n React.useEffect(() => {\n const viewport = viewportRef.current;\n\n if (viewport) {\n const handleFocus = () => {\n toastElementsMapRef.current.forEach((toast) => {\n toast.setAttribute(\"data-hovering\", \"true\");\n });\n };\n\n // @ts-expect-error TODO: get the correct type\n const handleBlur = (event) => {\n if (!viewport.contains(event.target) || viewport === event.target) {\n toastElementsMapRef.current.forEach((toast) => {\n toast.setAttribute(\"data-hovering\", \"false\");\n });\n }\n };\n\n viewport.addEventListener(\"pointermove\", handleFocus);\n viewport.addEventListener(\"pointerleave\", handleBlur);\n viewport.addEventListener(\"focusin\", handleFocus);\n viewport.addEventListener(\"focusout\", handleBlur);\n\n return () => {\n viewport.removeEventListener(\"pointermove\", handleFocus);\n viewport.removeEventListener(\"pointerleave\", handleBlur);\n viewport.removeEventListener(\"focusin\", handleFocus);\n viewport.removeEventListener(\"focusout\", handleBlur);\n };\n }\n }, []);\n\n const toastApi = React.useMemo(\n () =>\n Object.assign(handleDispatchDefault, {\n success: handleDispatchSuccess,\n error: handleDispatchError,\n }),\n [handleDispatchDefault, handleDispatchSuccess, handleDispatchError],\n );\n\n return (\n <ToasterContext.Provider value={toastApi}>\n <ToastContextImpl.Provider\n value={React.useMemo(\n () => ({\n toastElementsMapRef,\n sortToasts,\n }),\n [sortToasts],\n )}\n >\n <ToastPrimitives.Provider {...props}>\n {children}\n {Array.from(toasts).map(([key, toast]) => (\n <Toast\n key={key}\n id={key}\n toast={toast}\n onOpenChange={(open) => {\n if (!open) {\n toastElementsMapRef.current.delete(key);\n sortToasts();\n\n if (!open) {\n setTimeout(() => {\n handleRemoveToast(key);\n }, ANIMATION_OUT_DURATION);\n }\n }\n }}\n />\n ))}\n <ToastPrimitives.Viewport\n ref={viewportRef}\n className={toastViewport}\n />\n </ToastPrimitives.Provider>\n </ToastContextImpl.Provider>\n </ToasterContext.Provider>\n );\n};\n\nconst Toast = (props: ToastPrimitives.ToastProps & { toast: Toast }) => {\n const { onOpenChange, toast, id, ...toastProps } = props;\n const ref = React.useRef<HTMLLIElement>(null);\n const context = React.useContext(ToastContextImpl);\n const { sortToasts, toastElementsMapRef } = context;\n const toastElementsMap = toastElementsMapRef.current;\n\n React.useLayoutEffect(() => {\n if (ref.current) {\n toastElementsMap?.set(id as string, ref.current);\n sortToasts();\n }\n }, [id, sortToasts, toastElementsMap]);\n\n return (\n <ToastPrimitives.Root\n {...toastProps}\n ref={ref}\n type={toast.type}\n duration={toast.duration}\n className={toastRoot}\n onOpenChange={onOpenChange}\n >\n <div className={toastInner} data-status={toast.status}>\n <ToastStatusIcon status={toast.status} />\n <ToastPrimitives.Title asChild style={{ gridArea: \"title\" }}>\n <Heading level=\"6\">{toast.title}</Heading>\n </ToastPrimitives.Title>\n <ToastPrimitives.Description\n asChild\n style={{ gridArea: \"description\" }}\n >\n <Text color=\"subtle\" size=\"2\">\n {toast.description}\n </Text>\n </ToastPrimitives.Description>\n {toast.action}\n <ToastPrimitives.Close\n aria-label=\"Close\"\n asChild\n className={toastClose}\n >\n <IconButton variant=\"outline\">\n <Cross2Icon />\n </IconButton>\n </ToastPrimitives.Close>\n </div>\n </ToastPrimitives.Root>\n );\n};\n\nconst ToastStatusIcon = ({ status }: { status: Toast[\"status\"] }) => {\n return status !== \"default\" ? (\n <div style={{ gridArea: \"icon\", alignSelf: \"start\" }}>\n {status === \"success\" && <CheckmarkIcon />}\n {status === \"error\" && <ErrorIcon />}\n </div>\n ) : null;\n};\n\nconst ErrorIcon = () => <div aria-hidden className={error} />;\nconst CheckmarkIcon = () => <div aria-hidden className={checkmark} />;\n\nexport const ToastAction = ({\n ...props\n}: Omit<ToastPrimitives.ToastActionProps, \"asChild\">) => {\n return (\n <ToastPrimitives.Action\n {...props}\n style={{ gridArea: \"action\", ...props.style }}\n asChild\n >\n <Button size=\"1\" variant=\"outline\">\n {props.children}\n </Button>\n </ToastPrimitives.Action>\n );\n};\n"],"mappings":"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","names":["React","jsx","toastElementsMapRef"]}