@bigbinary/neeto-atoms 1.0.93 → 1.0.95

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 (47) hide show
  1. package/dist/{Combobox-BQ5wLjOU.js → Combobox-CKR_H-QS.js} +2 -2
  2. package/dist/{Combobox-BQ5wLjOU.js.map → Combobox-CKR_H-QS.js.map} +1 -1
  3. package/dist/{Select-ChcG9Sse.js → Select-Bc0D3byr.js} +2 -2
  4. package/dist/{Select-ChcG9Sse.js.map → Select-Bc0D3byr.js.map} +1 -1
  5. package/dist/{Toastr-DP7naHnr.js → Toastr-Cka6pudu.js} +116 -58
  6. package/dist/Toastr-Cka6pudu.js.map +1 -0
  7. package/dist/{TranslationProvider-BvRvUsPS.js → TranslationProvider-CtJI6HJ4.js} +5 -1
  8. package/dist/{TranslationProvider-BvRvUsPS.js.map → TranslationProvider-CtJI6HJ4.js.map} +1 -1
  9. package/dist/cjs/{Combobox-C3PiYYF-.js → Combobox-Dd2m0qal.js} +2 -2
  10. package/dist/cjs/{Combobox-C3PiYYF-.js.map → Combobox-Dd2m0qal.js.map} +1 -1
  11. package/dist/cjs/{Select-DA4PZAwd.js → Select-DVDECeJb.js} +2 -2
  12. package/dist/cjs/{Select-DA4PZAwd.js.map → Select-DVDECeJb.js.map} +1 -1
  13. package/dist/cjs/{Toastr-CgRy7bg-.js → Toastr-E0yLh_MW.js} +115 -57
  14. package/dist/cjs/Toastr-E0yLh_MW.js.map +1 -0
  15. package/dist/cjs/{TranslationProvider-Dh5_Fzzk.js → TranslationProvider-BgCNBYs8.js} +5 -1
  16. package/dist/cjs/{TranslationProvider-Dh5_Fzzk.js.map → TranslationProvider-BgCNBYs8.js.map} +1 -1
  17. package/dist/cjs/components/Select.js +2 -2
  18. package/dist/cjs/components/Toastr.js +3 -2
  19. package/dist/cjs/components/Toastr.js.map +1 -1
  20. package/dist/cjs/components/TranslationProvider.js +1 -1
  21. package/dist/cjs/components/index.js +4 -4
  22. package/dist/cjs/formik/Select.js +2 -2
  23. package/dist/cjs/formik/index.js +2 -2
  24. package/dist/cjs/index.js +4 -4
  25. package/dist/cjs/primitives/Combobox.js +1 -1
  26. package/dist/cjs/primitives/Command.js +1 -1
  27. package/dist/cjs/primitives/Command.js.map +1 -1
  28. package/dist/cjs/primitives/index.js +1 -1
  29. package/dist/components/Select.js +2 -2
  30. package/dist/components/Toastr/Toastr.d.ts +2 -0
  31. package/dist/components/Toastr/ToastrBody.d.ts +4 -2
  32. package/dist/components/Toastr/utils.d.ts +2 -1
  33. package/dist/components/Toastr.js +3 -2
  34. package/dist/components/Toastr.js.map +1 -1
  35. package/dist/components/TranslationProvider.js +1 -1
  36. package/dist/components/index.js +4 -4
  37. package/dist/formik/Select.js +2 -2
  38. package/dist/formik/index.js +2 -2
  39. package/dist/index.js +4 -4
  40. package/dist/primitives/Combobox.js +1 -1
  41. package/dist/primitives/Command.js +1 -1
  42. package/dist/primitives/Command.js.map +1 -1
  43. package/dist/primitives/index.js +1 -1
  44. package/dist/translations/index.d.ts +4 -0
  45. package/package.json +1 -1
  46. package/dist/Toastr-DP7naHnr.js.map +0 -1
  47. package/dist/cjs/Toastr-CgRy7bg-.js.map +0 -1
@@ -1,11 +1,86 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { O as OctagonX, C as CircleCheck, t as toast } from './index-CDo_esrR.js';
3
+ import { isValidElement, useState, useRef, useEffect } from 'react';
4
+ import { useTranslation } from 'react-i18next';
3
5
  import { c as cn } from './utils-BJnb9o5c.js';
6
+ import i18n from 'i18next';
4
7
  import { T as TriangleAlert } from './triangle-alert-C434HydH.js';
5
8
  import { I as Info } from './info-BlwkmMZr.js';
6
9
  import { X } from './x-_o2T3n6D.js';
7
- import i18n from 'i18next';
8
- import { isValidElement } from 'react';
10
+
11
+ const activeToasts = /* @__PURE__ */ new Set();
12
+ function toastKey(type, message, buttonLabel) {
13
+ if (typeof message !== "string") return null;
14
+ return `${type}::${message}::${buttonLabel ?? ""}`;
15
+ }
16
+ function getContentDir() {
17
+ if (typeof document === "undefined") return "ltr";
18
+ return document.documentElement.getAttribute("dir") ?? document.body.getAttribute("dir") ?? "ltr";
19
+ }
20
+ function resolveMessage(message) {
21
+ if (typeof message === "string") return message;
22
+ if (isValidElement(message)) return message;
23
+ if (Array.isArray(message)) return message;
24
+ if (message && typeof message === "object") {
25
+ const obj = message;
26
+ if (obj.customMessage) return obj.customMessage;
27
+ if (obj.notice) return obj.notice;
28
+ if (obj.noticeCode) return i18n.t(obj.noticeCode);
29
+ }
30
+ return String(message);
31
+ }
32
+ function resolveErrorMessage(errorObject) {
33
+ if (typeof errorObject === "string") return errorObject;
34
+ if (errorObject && typeof errorObject === "object") {
35
+ const axiosLike = errorObject;
36
+ if (axiosLike.response?.data) {
37
+ const data = axiosLike.response.data;
38
+ if (data.customMessage) return String(data.customMessage);
39
+ if (data.error) return String(data.error);
40
+ if (Array.isArray(data.errors)) return data.errors.join("\n");
41
+ if (data.noticeCode) return String(data.noticeCode);
42
+ }
43
+ if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;
44
+ if (errorObject instanceof Error) return errorObject.message;
45
+ return resolveMessage(errorObject);
46
+ }
47
+ return "Something went wrong.";
48
+ }
49
+ async function copyToClipboard(text) {
50
+ try {
51
+ await navigator.clipboard.writeText(text);
52
+ return true;
53
+ } catch {
54
+ try {
55
+ const textArea = document.createElement("textarea");
56
+ textArea.value = text;
57
+ textArea.style.position = "fixed";
58
+ textArea.style.opacity = "0";
59
+ document.body.appendChild(textArea);
60
+ textArea.focus();
61
+ textArea.select();
62
+ const isCopied = document.execCommand("copy");
63
+ textArea.remove();
64
+ return isCopied;
65
+ } catch {
66
+ return false;
67
+ }
68
+ }
69
+ }
70
+ function parseConfig(args) {
71
+ if (args.length === 0) return {};
72
+ const first = args[0];
73
+ if (typeof first === "object" && first !== null && !Array.isArray(first)) {
74
+ return first;
75
+ }
76
+ const [buttonLabel, onClick, customConfig, showIcon] = args;
77
+ return {
78
+ ...buttonLabel ? { buttonLabel } : {},
79
+ ...onClick ? { onClick } : {},
80
+ ...showIcon !== void 0 ? { showIcon } : {},
81
+ ...customConfig ?? {}
82
+ };
83
+ }
9
84
 
10
85
  const ICONS = {
11
86
  success: CircleCheck,
@@ -19,9 +94,11 @@ const VARIANT_CLASSES = {
19
94
  warning: "bg-warning-solid text-warning-solid-foreground border-warning-solid/30",
20
95
  info: "bg-info-solid text-info-solid-foreground border-info-solid/30"
21
96
  };
97
+ const COPIED_FEEDBACK_DURATION_MS = 2e3;
22
98
  const ToastrBody = ({
23
99
  type,
24
100
  message,
101
+ copyableMessage,
25
102
  showIcon = true,
26
103
  dismissible = true,
27
104
  buttonLabel,
@@ -29,6 +106,21 @@ const ToastrBody = ({
29
106
  onDismiss
30
107
  }) => {
31
108
  const Icon = ICONS[type];
109
+ const { t } = useTranslation();
110
+ const [isCopied, setIsCopied] = useState(false);
111
+ const copiedTimeoutRef = useRef(
112
+ void 0
113
+ );
114
+ useEffect(() => () => clearTimeout(copiedTimeoutRef.current), []);
115
+ const handleCopy = async () => {
116
+ if (!copyableMessage || !await copyToClipboard(copyableMessage)) return;
117
+ setIsCopied(true);
118
+ clearTimeout(copiedTimeoutRef.current);
119
+ copiedTimeoutRef.current = setTimeout(
120
+ () => setIsCopied(false),
121
+ COPIED_FEEDBACK_DURATION_MS
122
+ );
123
+ };
32
124
  return /* @__PURE__ */ jsxs(
33
125
  "div",
34
126
  {
@@ -40,7 +132,22 @@ const ToastrBody = ({
40
132
  ),
41
133
  children: [
42
134
  showIcon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": true, className: "size-4 shrink-0" }),
43
- /* @__PURE__ */ jsx("span", { className: "flex-1", children: message }),
135
+ /* @__PURE__ */ jsxs("span", { className: "flex-1", children: [
136
+ message,
137
+ copyableMessage && /* @__PURE__ */ jsxs(Fragment, { children: [
138
+ " ",
139
+ /* @__PURE__ */ jsx(
140
+ "button",
141
+ {
142
+ type: "button",
143
+ "data-testid": `toastr-${type}-copy-button`,
144
+ className: "text-xs italic underline-offset-2 opacity-80 transition-opacity hover:underline hover:opacity-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",
145
+ onClick: handleCopy,
146
+ children: isCopied ? t("neetoatoms.toastr.copied", "Copied!") : t("neetoatoms.toastr.copyMessage", "Copy this error message")
147
+ }
148
+ )
149
+ ] })
150
+ ] }),
44
151
  buttonLabel && /* @__PURE__ */ jsx(
45
152
  "button",
46
153
  {
@@ -67,65 +174,13 @@ const ToastrBody = ({
67
174
  );
68
175
  };
69
176
 
70
- const activeToasts = /* @__PURE__ */ new Set();
71
- function toastKey(type, message, buttonLabel) {
72
- if (typeof message !== "string") return null;
73
- return `${type}::${message}::${buttonLabel ?? ""}`;
74
- }
75
- function getContentDir() {
76
- if (typeof document === "undefined") return "ltr";
77
- return document.documentElement.getAttribute("dir") ?? document.body.getAttribute("dir") ?? "ltr";
78
- }
79
- function resolveMessage(message) {
80
- if (typeof message === "string") return message;
81
- if (isValidElement(message)) return message;
82
- if (Array.isArray(message)) return message;
83
- if (message && typeof message === "object") {
84
- const obj = message;
85
- if (obj.customMessage) return obj.customMessage;
86
- if (obj.notice) return obj.notice;
87
- if (obj.noticeCode) return i18n.t(obj.noticeCode);
88
- }
89
- return String(message);
90
- }
91
- function resolveErrorMessage(errorObject) {
92
- if (typeof errorObject === "string") return errorObject;
93
- if (errorObject && typeof errorObject === "object") {
94
- const axiosLike = errorObject;
95
- if (axiosLike.response?.data) {
96
- const data = axiosLike.response.data;
97
- if (data.customMessage) return String(data.customMessage);
98
- if (data.error) return String(data.error);
99
- if (Array.isArray(data.errors)) return data.errors.join("\n");
100
- if (data.noticeCode) return String(data.noticeCode);
101
- }
102
- if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;
103
- if (errorObject instanceof Error) return errorObject.message;
104
- return resolveMessage(errorObject);
105
- }
106
- return "Something went wrong.";
107
- }
108
- function parseConfig(args) {
109
- if (args.length === 0) return {};
110
- const first = args[0];
111
- if (typeof first === "object" && first !== null && !Array.isArray(first)) {
112
- return first;
113
- }
114
- const [buttonLabel, onClick, customConfig, showIcon] = args;
115
- return {
116
- ...buttonLabel ? { buttonLabel } : {},
117
- ...onClick ? { onClick } : {},
118
- ...showIcon !== void 0 ? { showIcon } : {},
119
- ...customConfig ?? {}
120
- };
121
- }
122
-
123
177
  function showToast(type, message, config) {
124
178
  const {
125
179
  buttonLabel,
126
180
  onClick,
127
181
  showIcon,
128
182
  dismissible = true,
183
+ showCopyButton = true,
129
184
  onDismiss: userOnDismiss,
130
185
  onAutoClose: userOnAutoClose,
131
186
  ...restConfig
@@ -134,6 +189,7 @@ function showToast(type, message, config) {
134
189
  if (key !== null && activeToasts.has(key)) return void 0;
135
190
  if (key !== null) activeToasts.add(key);
136
191
  const options = {
192
+ ...type === "error" && { duration: Infinity },
137
193
  ...restConfig,
138
194
  position: getContentDir() === "rtl" ? "bottom-right" : "bottom-left",
139
195
  dismissible,
@@ -146,11 +202,13 @@ function showToast(type, message, config) {
146
202
  userOnAutoClose?.(t);
147
203
  }
148
204
  };
205
+ const copyableMessage = showCopyButton && type === "error" && typeof message === "string" ? message : void 0;
149
206
  return toast.custom(
150
207
  (id) => /* @__PURE__ */ jsx(
151
208
  ToastrBody,
152
209
  {
153
210
  buttonLabel,
211
+ copyableMessage,
154
212
  dismissible,
155
213
  message,
156
214
  showIcon,
@@ -188,4 +246,4 @@ const Toastr = {
188
246
  };
189
247
 
190
248
  export { Toastr as T };
191
- //# sourceMappingURL=Toastr-DP7naHnr.js.map
249
+ //# sourceMappingURL=Toastr-Cka6pudu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toastr-Cka6pudu.js","sources":["../src/components/Toastr/utils.ts","../src/components/Toastr/ToastrBody.tsx","../src/components/Toastr/Toastr.tsx"],"sourcesContent":["import i18next from \"i18next\";\nimport { isValidElement, type ReactNode } from \"react\";\n\nimport type { ToastrConfig, ToastrErrorInput, ToastrMessage } from \"./Toastr\";\n\nconst activeToasts = new Set<string>();\n\nfunction toastKey(\n type: string,\n message: ReactNode,\n buttonLabel?: string\n): string | null {\n if (typeof message !== \"string\") return null;\n return `${type}::${message}::${buttonLabel ?? \"\"}`;\n}\n\nfunction getContentDir(): \"ltr\" | \"rtl\" {\n if (typeof document === \"undefined\") return \"ltr\";\n return (\n (document.documentElement.getAttribute(\"dir\") as \"ltr\" | \"rtl\") ??\n (document.body.getAttribute(\"dir\") as \"ltr\" | \"rtl\") ??\n \"ltr\"\n );\n}\n\nfunction resolveMessage(message: ToastrMessage): ReactNode {\n if (typeof message === \"string\") return message;\n if (isValidElement(message)) return message;\n // Arrays of ReactNodes (e.g. [<a/>, \" \", <b/>]) render natively via {message}.\n if (Array.isArray(message)) return message;\n if (message && typeof message === \"object\") {\n const obj = message as {\n noticeCode?: string;\n customMessage?: string;\n notice?: string;\n };\n if (obj.customMessage) return obj.customMessage;\n if (obj.notice) return obj.notice;\n if (obj.noticeCode) return i18next.t(obj.noticeCode);\n }\n return String(message);\n}\n\nfunction resolveErrorMessage(errorObject: ToastrErrorInput): ReactNode {\n if (typeof errorObject === \"string\") return errorObject;\n\n if (errorObject && typeof errorObject === \"object\") {\n // Axios-style error\n const axiosLike = errorObject as {\n response?: { data?: Record<string, unknown> };\n message?: string;\n isAxiosError?: boolean;\n };\n\n if (axiosLike.response?.data) {\n const data = axiosLike.response.data;\n if (data.customMessage) return String(data.customMessage);\n if (data.error) return String(data.error);\n if (Array.isArray(data.errors)) return data.errors.join(\"\\n\");\n if (data.noticeCode) return String(data.noticeCode);\n }\n\n if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;\n\n // Native Error\n if (errorObject instanceof Error) return errorObject.message;\n\n // ToastrMessage (string, React element, array, or notice-shape object)\n return resolveMessage(errorObject as ToastrMessage);\n }\n\n return \"Something went wrong.\";\n}\n\nasync function copyToClipboard(text: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(text);\n\n return true;\n } catch {\n // Clipboard API is unavailable in insecure contexts; fall back to execCommand.\n try {\n const textArea = document.createElement(\"textarea\");\n textArea.value = text;\n textArea.style.position = \"fixed\";\n textArea.style.opacity = \"0\";\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n const isCopied = document.execCommand(\"copy\");\n textArea.remove();\n\n return isCopied;\n } catch {\n return false;\n }\n }\n}\n\nfunction parseConfig(args: unknown[]): ToastrConfig {\n if (args.length === 0) return {};\n\n const first = args[0];\n if (typeof first === \"object\" && first !== null && !Array.isArray(first)) {\n return first as ToastrConfig;\n }\n\n // Legacy positional args: buttonLabel, onClick, customConfig, showIcon\n const [buttonLabel, onClick, customConfig, showIcon] = args as [\n string?,\n (() => void)?,\n Record<string, unknown>?,\n boolean?,\n ];\n\n return {\n ...(buttonLabel ? { buttonLabel } : {}),\n ...(onClick ? { onClick } : {}),\n ...(showIcon !== undefined ? { showIcon } : {}),\n ...(customConfig ?? {}),\n };\n}\n\nexport {\n activeToasts,\n copyToClipboard,\n getContentDir,\n parseConfig,\n resolveErrorMessage,\n resolveMessage,\n toastKey,\n};\n","import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport {\n CircleCheckIcon,\n InfoIcon,\n OctagonXIcon,\n TriangleAlertIcon,\n XIcon,\n type LucideIcon,\n} from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { copyToClipboard } from \"./utils\";\n\ntype ToastrType = \"success\" | \"info\" | \"warning\" | \"error\";\n\nconst ICONS: Record<ToastrType, LucideIcon> = {\n success: CircleCheckIcon,\n info: InfoIcon,\n warning: TriangleAlertIcon,\n error: OctagonXIcon,\n};\n\nconst VARIANT_CLASSES: Record<ToastrType, string> = {\n success:\n \"bg-success-solid text-success-solid-foreground border-success-solid/30\",\n error: \"bg-error-solid text-error-solid-foreground border-error-solid/30\",\n warning:\n \"bg-warning-solid text-warning-solid-foreground border-warning-solid/30\",\n info: \"bg-info-solid text-info-solid-foreground border-info-solid/30\",\n};\n\nexport interface ToastrBodyProps {\n type: ToastrType;\n message: ReactNode;\n /** Plain-text version of the message; renders a copy-to-clipboard affordance when set. */\n copyableMessage?: string;\n showIcon?: boolean;\n dismissible?: boolean;\n buttonLabel?: string;\n onAction?: () => void;\n onDismiss: () => void;\n}\n\nconst COPIED_FEEDBACK_DURATION_MS = 2000;\n\nconst ToastrBody = ({\n type,\n message,\n copyableMessage,\n showIcon = true,\n dismissible = true,\n buttonLabel,\n onAction,\n onDismiss,\n}: ToastrBodyProps) => {\n const Icon = ICONS[type];\n const { t } = useTranslation();\n const [isCopied, setIsCopied] = useState(false);\n const copiedTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n );\n\n useEffect(() => () => clearTimeout(copiedTimeoutRef.current), []);\n\n const handleCopy = async () => {\n if (!copyableMessage || !(await copyToClipboard(copyableMessage))) return;\n\n setIsCopied(true);\n clearTimeout(copiedTimeoutRef.current);\n copiedTimeoutRef.current = setTimeout(\n () => setIsCopied(false),\n COPIED_FEEDBACK_DURATION_MS\n );\n };\n\n return (\n <div\n role={type === \"error\" || type === \"warning\" ? \"alert\" : \"status\"}\n data-testid={`toastr-${type}-container`}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-4 py-3 text-sm shadow-lg\",\n VARIANT_CLASSES[type]\n )}\n >\n {showIcon && <Icon aria-hidden className=\"size-4 shrink-0\" />}\n <span className=\"flex-1\">\n {message}\n {copyableMessage && (\n <>\n {\" \"}\n <button\n type=\"button\"\n data-testid={`toastr-${type}-copy-button`}\n className=\"text-xs italic underline-offset-2 opacity-80 transition-opacity hover:underline hover:opacity-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n onClick={handleCopy}\n >\n {isCopied\n ? t(\"neetoatoms.toastr.copied\", \"Copied!\")\n : t(\"neetoatoms.toastr.copyMessage\", \"Copy this error message\")}\n </button>\n </>\n )}\n </span>\n {buttonLabel && (\n <button\n type=\"button\"\n onClick={onAction}\n data-testid={`toastr-${type}-button`}\n className=\"shrink-0 text-sm font-medium underline-offset-2 hover:underline\"\n >\n {buttonLabel}\n </button>\n )}\n {dismissible && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n data-testid=\"toastr-close-button\"\n className=\"shrink-0 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n >\n <XIcon aria-hidden className=\"size-4\" />\n </button>\n )}\n </div>\n );\n};\n\nexport { ToastrBody };\n","import type { ReactNode } from \"react\";\nimport { toast } from \"sonner\";\n\nimport { ToastrBody } from \"./ToastrBody\";\nimport {\n activeToasts,\n getContentDir,\n parseConfig,\n resolveErrorMessage,\n resolveMessage,\n toastKey,\n} from \"./utils\";\n\nexport interface ToastrConfig {\n /** Label for an action button inside the toast. */\n buttonLabel?: string;\n /** Callback when the action button is clicked. */\n onClick?: () => void;\n /** Whether to show the type icon in the toast. */\n showIcon?: boolean;\n /** Whether the toast can be dismissed (shows X button + enables swipe). Defaults to true. */\n dismissible?: boolean;\n /** Whether to show the copy-to-clipboard affordance in error toasts. Defaults to true. */\n showCopyButton?: boolean;\n /** Additional sonner toast options (duration, position, etc.). */\n [key: string]: unknown;\n}\n\nexport type ToastrMessage =\n | ReactNode\n | { noticeCode?: string; customMessage?: string; notice?: string };\n\nexport type ToastrErrorInput =\n | string\n | Error\n | {\n response?: { data?: Record<string, unknown> };\n message?: string;\n isAxiosError?: boolean;\n }\n | ToastrMessage;\n\ntype SonnerType = \"success\" | \"info\" | \"warning\" | \"error\";\n\nfunction showToast(\n type: SonnerType,\n message: ReactNode,\n config?: ToastrConfig\n): string | number | undefined {\n const {\n buttonLabel,\n onClick,\n showIcon,\n dismissible = true,\n showCopyButton = true,\n onDismiss: userOnDismiss,\n onAutoClose: userOnAutoClose,\n ...restConfig\n } = config ?? {};\n\n const key = toastKey(type, message, buttonLabel);\n\n if (key !== null && activeToasts.has(key)) return undefined;\n if (key !== null) activeToasts.add(key);\n\n // Error toasts stay until dismissed so the message can be read and copied.\n const options: Record<string, unknown> = {\n ...(type === \"error\" && { duration: Infinity }),\n ...restConfig,\n position: getContentDir() === \"rtl\" ? \"bottom-right\" : \"bottom-left\",\n dismissible,\n onDismiss: (t: unknown) => {\n if (key !== null) activeToasts.delete(key);\n (userOnDismiss as ((t: unknown) => void) | undefined)?.(t);\n },\n onAutoClose: (t: unknown) => {\n if (key !== null) activeToasts.delete(key);\n (userOnAutoClose as ((t: unknown) => void) | undefined)?.(t);\n },\n };\n\n const copyableMessage =\n showCopyButton && type === \"error\" && typeof message === \"string\"\n ? message\n : undefined;\n\n return toast.custom(\n id => (\n <ToastrBody\n buttonLabel={buttonLabel}\n copyableMessage={copyableMessage}\n dismissible={dismissible}\n message={message}\n showIcon={showIcon}\n type={type}\n onAction={() => {\n try {\n onClick?.();\n } finally {\n toast.dismiss(id);\n }\n }}\n onDismiss={() => toast.dismiss(id)}\n />\n ),\n options\n );\n}\n\nconst Toastr = {\n success(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"success\", resolveMessage(message), parseConfig(args));\n },\n\n info(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"info\", resolveMessage(message), parseConfig(args));\n },\n\n show(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"info\", resolveMessage(message), parseConfig(args));\n },\n\n warning(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"warning\", resolveMessage(message), parseConfig(args));\n },\n\n error(errorObject: ToastrErrorInput, ...args: unknown[]) {\n const msg = resolveErrorMessage(errorObject);\n return showToast(\"error\", msg, parseConfig(args));\n },\n};\n\nexport { Toastr };\n"],"names":["i18next","CircleCheckIcon","InfoIcon","TriangleAlertIcon","OctagonXIcon","XIcon"],"mappings":"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"}
@@ -61,6 +61,10 @@ var neetoatoms = {
61
61
  command: {
62
62
  title: "Command Palette",
63
63
  description: "Search for a command to run..."
64
+ },
65
+ toastr: {
66
+ copyMessage: "Copy this error message",
67
+ copied: "Copied!"
64
68
  }
65
69
  };
66
70
  var enTranslations = {
@@ -96,4 +100,4 @@ const TranslationProvider = ({
96
100
  TranslationProvider.displayName = "TranslationProvider";
97
101
 
98
102
  export { TranslationProvider as T, resources as r };
99
- //# sourceMappingURL=TranslationProvider-BvRvUsPS.js.map
103
+ //# sourceMappingURL=TranslationProvider-CtJI6HJ4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationProvider-BvRvUsPS.js","sources":["../src/translations/index.ts","../src/components/TranslationProvider/i18n.ts","../src/components/TranslationProvider/TranslationProvider.tsx"],"sourcesContent":["import enTranslations from \"./en.json\";\n\nexport const resources = {\n en: { translation: enTranslations },\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { resources } from \"src/translations\";\n\nexport const initializeI18n = (language = \"en\") => {\n i18n.use(initReactI18next).init({\n resources,\n lng: language,\n fallbackLng: \"en\",\n interpolation: { escapeValue: false },\n });\n\n return i18n;\n};\n","import { useEffect } from \"react\";\n\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { initializeI18n } from \"./i18n\";\nimport type { TranslationProviderProps } from \"./types\";\n\nconst TranslationProvider = ({\n children,\n language = \"en\",\n}: TranslationProviderProps) => {\n const i18n = initializeI18n(language);\n\n useEffect(() => {\n if (i18n.language !== language) {\n i18n.changeLanguage(language);\n }\n }, [language, i18n]);\n\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n};\n\nTranslationProvider.displayName = \"TranslationProvider\";\n\nexport { TranslationProvider };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,EAAE,WAAA,EAAa,cAAA;AACrB;;ACCO,MAAM,cAAA,GAAiB,CAAC,QAAA,GAAW,IAAA,KAAS;AACjD,EAAA,IAAA,CAAK,GAAA,CAAI,gBAAgB,CAAA,CAAE,IAAA,CAAK;AAAA,IAC9B,SAAA;AAAA,IACA,GAAA,EAAK,QAAA;AAAA,IACL,WAAA,EAAa,IAAA;AAAA,IACb,aAAA,EAAe,EAAE,WAAA,EAAa,KAAA;AAAM,GACrC,CAAA;AAED,EAAA,OAAO,IAAA;AACT,CAAA;;ACPA,MAAM,sBAAsB,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAgC;AAC9B,EAAA,MAAM,IAAA,GAAO,eAAe,QAAQ,CAAA;AAEpC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,CAAK,aAAa,QAAA,EAAU;AAC9B,MAAA,IAAA,CAAK,eAAe,QAAQ,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAa,QAAA,EAAS,CAAA;AAChD;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;;;;"}
1
+ {"version":3,"file":"TranslationProvider-CtJI6HJ4.js","sources":["../src/translations/index.ts","../src/components/TranslationProvider/i18n.ts","../src/components/TranslationProvider/TranslationProvider.tsx"],"sourcesContent":["import enTranslations from \"./en.json\";\n\nexport const resources = {\n en: { translation: enTranslations },\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { resources } from \"src/translations\";\n\nexport const initializeI18n = (language = \"en\") => {\n i18n.use(initReactI18next).init({\n resources,\n lng: language,\n fallbackLng: \"en\",\n interpolation: { escapeValue: false },\n });\n\n return i18n;\n};\n","import { useEffect } from \"react\";\n\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { initializeI18n } from \"./i18n\";\nimport type { TranslationProviderProps } from \"./types\";\n\nconst TranslationProvider = ({\n children,\n language = \"en\",\n}: TranslationProviderProps) => {\n const i18n = initializeI18n(language);\n\n useEffect(() => {\n if (i18n.language !== language) {\n i18n.changeLanguage(language);\n }\n }, [language, i18n]);\n\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n};\n\nTranslationProvider.displayName = \"TranslationProvider\";\n\nexport { TranslationProvider };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,EAAE,WAAA,EAAa,cAAA;AACrB;;ACCO,MAAM,cAAA,GAAiB,CAAC,QAAA,GAAW,IAAA,KAAS;AACjD,EAAA,IAAA,CAAK,GAAA,CAAI,gBAAgB,CAAA,CAAE,IAAA,CAAK;AAAA,IAC9B,SAAA;AAAA,IACA,GAAA,EAAK,QAAA;AAAA,IACL,WAAA,EAAa,IAAA;AAAA,IACb,aAAA,EAAe,EAAE,WAAA,EAAa,KAAA;AAAM,GACrC,CAAA;AAED,EAAA,OAAO,IAAA;AACT,CAAA;;ACPA,MAAM,sBAAsB,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAgC;AAC9B,EAAA,MAAM,IAAA,GAAO,eAAe,QAAQ,CAAA;AAEpC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,CAAK,aAAa,QAAA,EAAU;AAC9B,MAAA,IAAA,CAAK,eAAe,QAAQ,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAa,QAAA,EAAS,CAAA;AAChD;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;;;;"}
@@ -10016,7 +10016,7 @@ function ComboboxList$1({ className, ...props }) {
10016
10016
  {
10017
10017
  "data-slot": "combobox-list",
10018
10018
  className: utils.cn(
10019
- "no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0",
10019
+ "max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0",
10020
10020
  className
10021
10021
  ),
10022
10022
  ...props
@@ -10215,4 +10215,4 @@ exports.ComboboxTrigger = ComboboxTrigger;
10215
10215
  exports.ComboboxTrigger$1 = ComboboxTrigger$2;
10216
10216
  exports.ComboboxValue = ComboboxValue;
10217
10217
  exports.useComboboxAnchor = useComboboxAnchor;
10218
- //# sourceMappingURL=Combobox-C3PiYYF-.js.map
10218
+ //# sourceMappingURL=Combobox-Dd2m0qal.js.map