@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
@@ -2,17 +2,92 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var index = require('./index-CPmGpPzg.js');
5
+ var React = require('react');
6
+ var reactI18next = require('react-i18next');
5
7
  var utils = require('./utils-BhM0B89p.js');
8
+ var i18n = require('i18next');
6
9
  var triangleAlert = require('./triangle-alert-CC-cck8p.js');
7
10
  var info = require('./info-DGfDptn1.js');
8
11
  var x = require('./x-Brw3FJst.js');
9
- var i18n = require('i18next');
10
- var React = require('react');
11
12
 
12
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
14
 
14
15
  var i18n__default = /*#__PURE__*/_interopDefault(i18n);
15
16
 
17
+ const activeToasts = /* @__PURE__ */ new Set();
18
+ function toastKey(type, message, buttonLabel) {
19
+ if (typeof message !== "string") return null;
20
+ return `${type}::${message}::${buttonLabel ?? ""}`;
21
+ }
22
+ function getContentDir() {
23
+ if (typeof document === "undefined") return "ltr";
24
+ return document.documentElement.getAttribute("dir") ?? document.body.getAttribute("dir") ?? "ltr";
25
+ }
26
+ function resolveMessage(message) {
27
+ if (typeof message === "string") return message;
28
+ if (React.isValidElement(message)) return message;
29
+ if (Array.isArray(message)) return message;
30
+ if (message && typeof message === "object") {
31
+ const obj = message;
32
+ if (obj.customMessage) return obj.customMessage;
33
+ if (obj.notice) return obj.notice;
34
+ if (obj.noticeCode) return i18n__default.default.t(obj.noticeCode);
35
+ }
36
+ return String(message);
37
+ }
38
+ function resolveErrorMessage(errorObject) {
39
+ if (typeof errorObject === "string") return errorObject;
40
+ if (errorObject && typeof errorObject === "object") {
41
+ const axiosLike = errorObject;
42
+ if (axiosLike.response?.data) {
43
+ const data = axiosLike.response.data;
44
+ if (data.customMessage) return String(data.customMessage);
45
+ if (data.error) return String(data.error);
46
+ if (Array.isArray(data.errors)) return data.errors.join("\n");
47
+ if (data.noticeCode) return String(data.noticeCode);
48
+ }
49
+ if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;
50
+ if (errorObject instanceof Error) return errorObject.message;
51
+ return resolveMessage(errorObject);
52
+ }
53
+ return "Something went wrong.";
54
+ }
55
+ async function copyToClipboard(text) {
56
+ try {
57
+ await navigator.clipboard.writeText(text);
58
+ return true;
59
+ } catch {
60
+ try {
61
+ const textArea = document.createElement("textarea");
62
+ textArea.value = text;
63
+ textArea.style.position = "fixed";
64
+ textArea.style.opacity = "0";
65
+ document.body.appendChild(textArea);
66
+ textArea.focus();
67
+ textArea.select();
68
+ const isCopied = document.execCommand("copy");
69
+ textArea.remove();
70
+ return isCopied;
71
+ } catch {
72
+ return false;
73
+ }
74
+ }
75
+ }
76
+ function parseConfig(args) {
77
+ if (args.length === 0) return {};
78
+ const first = args[0];
79
+ if (typeof first === "object" && first !== null && !Array.isArray(first)) {
80
+ return first;
81
+ }
82
+ const [buttonLabel, onClick, customConfig, showIcon] = args;
83
+ return {
84
+ ...buttonLabel ? { buttonLabel } : {},
85
+ ...onClick ? { onClick } : {},
86
+ ...showIcon !== void 0 ? { showIcon } : {},
87
+ ...customConfig ?? {}
88
+ };
89
+ }
90
+
16
91
  const ICONS = {
17
92
  success: index.CircleCheck,
18
93
  info: info.Info,
@@ -25,9 +100,11 @@ const VARIANT_CLASSES = {
25
100
  warning: "bg-warning-solid text-warning-solid-foreground border-warning-solid/30",
26
101
  info: "bg-info-solid text-info-solid-foreground border-info-solid/30"
27
102
  };
103
+ const COPIED_FEEDBACK_DURATION_MS = 2e3;
28
104
  const ToastrBody = ({
29
105
  type,
30
106
  message,
107
+ copyableMessage,
31
108
  showIcon = true,
32
109
  dismissible = true,
33
110
  buttonLabel,
@@ -35,6 +112,21 @@ const ToastrBody = ({
35
112
  onDismiss
36
113
  }) => {
37
114
  const Icon = ICONS[type];
115
+ const { t } = reactI18next.useTranslation();
116
+ const [isCopied, setIsCopied] = React.useState(false);
117
+ const copiedTimeoutRef = React.useRef(
118
+ void 0
119
+ );
120
+ React.useEffect(() => () => clearTimeout(copiedTimeoutRef.current), []);
121
+ const handleCopy = async () => {
122
+ if (!copyableMessage || !await copyToClipboard(copyableMessage)) return;
123
+ setIsCopied(true);
124
+ clearTimeout(copiedTimeoutRef.current);
125
+ copiedTimeoutRef.current = setTimeout(
126
+ () => setIsCopied(false),
127
+ COPIED_FEEDBACK_DURATION_MS
128
+ );
129
+ };
38
130
  return /* @__PURE__ */ jsxRuntime.jsxs(
39
131
  "div",
40
132
  {
@@ -46,7 +138,22 @@ const ToastrBody = ({
46
138
  ),
47
139
  children: [
48
140
  showIcon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: "size-4 shrink-0" }),
49
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: message }),
141
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex-1", children: [
142
+ message,
143
+ copyableMessage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
144
+ " ",
145
+ /* @__PURE__ */ jsxRuntime.jsx(
146
+ "button",
147
+ {
148
+ type: "button",
149
+ "data-testid": `toastr-${type}-copy-button`,
150
+ 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",
151
+ onClick: handleCopy,
152
+ children: isCopied ? t("neetoatoms.toastr.copied", "Copied!") : t("neetoatoms.toastr.copyMessage", "Copy this error message")
153
+ }
154
+ )
155
+ ] })
156
+ ] }),
50
157
  buttonLabel && /* @__PURE__ */ jsxRuntime.jsx(
51
158
  "button",
52
159
  {
@@ -73,65 +180,13 @@ const ToastrBody = ({
73
180
  );
74
181
  };
75
182
 
76
- const activeToasts = /* @__PURE__ */ new Set();
77
- function toastKey(type, message, buttonLabel) {
78
- if (typeof message !== "string") return null;
79
- return `${type}::${message}::${buttonLabel ?? ""}`;
80
- }
81
- function getContentDir() {
82
- if (typeof document === "undefined") return "ltr";
83
- return document.documentElement.getAttribute("dir") ?? document.body.getAttribute("dir") ?? "ltr";
84
- }
85
- function resolveMessage(message) {
86
- if (typeof message === "string") return message;
87
- if (React.isValidElement(message)) return message;
88
- if (Array.isArray(message)) return message;
89
- if (message && typeof message === "object") {
90
- const obj = message;
91
- if (obj.customMessage) return obj.customMessage;
92
- if (obj.notice) return obj.notice;
93
- if (obj.noticeCode) return i18n__default.default.t(obj.noticeCode);
94
- }
95
- return String(message);
96
- }
97
- function resolveErrorMessage(errorObject) {
98
- if (typeof errorObject === "string") return errorObject;
99
- if (errorObject && typeof errorObject === "object") {
100
- const axiosLike = errorObject;
101
- if (axiosLike.response?.data) {
102
- const data = axiosLike.response.data;
103
- if (data.customMessage) return String(data.customMessage);
104
- if (data.error) return String(data.error);
105
- if (Array.isArray(data.errors)) return data.errors.join("\n");
106
- if (data.noticeCode) return String(data.noticeCode);
107
- }
108
- if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;
109
- if (errorObject instanceof Error) return errorObject.message;
110
- return resolveMessage(errorObject);
111
- }
112
- return "Something went wrong.";
113
- }
114
- function parseConfig(args) {
115
- if (args.length === 0) return {};
116
- const first = args[0];
117
- if (typeof first === "object" && first !== null && !Array.isArray(first)) {
118
- return first;
119
- }
120
- const [buttonLabel, onClick, customConfig, showIcon] = args;
121
- return {
122
- ...buttonLabel ? { buttonLabel } : {},
123
- ...onClick ? { onClick } : {},
124
- ...showIcon !== void 0 ? { showIcon } : {},
125
- ...customConfig ?? {}
126
- };
127
- }
128
-
129
183
  function showToast(type, message, config) {
130
184
  const {
131
185
  buttonLabel,
132
186
  onClick,
133
187
  showIcon,
134
188
  dismissible = true,
189
+ showCopyButton = true,
135
190
  onDismiss: userOnDismiss,
136
191
  onAutoClose: userOnAutoClose,
137
192
  ...restConfig
@@ -140,6 +195,7 @@ function showToast(type, message, config) {
140
195
  if (key !== null && activeToasts.has(key)) return void 0;
141
196
  if (key !== null) activeToasts.add(key);
142
197
  const options = {
198
+ ...type === "error" && { duration: Infinity },
143
199
  ...restConfig,
144
200
  position: getContentDir() === "rtl" ? "bottom-right" : "bottom-left",
145
201
  dismissible,
@@ -152,11 +208,13 @@ function showToast(type, message, config) {
152
208
  userOnAutoClose?.(t);
153
209
  }
154
210
  };
211
+ const copyableMessage = showCopyButton && type === "error" && typeof message === "string" ? message : void 0;
155
212
  return index.toast.custom(
156
213
  (id) => /* @__PURE__ */ jsxRuntime.jsx(
157
214
  ToastrBody,
158
215
  {
159
216
  buttonLabel,
217
+ copyableMessage,
160
218
  dismissible,
161
219
  message,
162
220
  showIcon,
@@ -194,4 +252,4 @@ const Toastr = {
194
252
  };
195
253
 
196
254
  exports.Toastr = Toastr;
197
- //# sourceMappingURL=Toastr-CgRy7bg-.js.map
255
+ //# sourceMappingURL=Toastr-E0yLh_MW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toastr-E0yLh_MW.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":["isValidElement","i18next","CircleCheckIcon","InfoIcon","TriangleAlertIcon","OctagonXIcon","useTranslation","useState","useRef","useEffect","jsxs","cn","jsx","Fragment","XIcon","toast"],"mappings":"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"}
@@ -67,6 +67,10 @@ var neetoatoms = {
67
67
  command: {
68
68
  title: "Command Palette",
69
69
  description: "Search for a command to run..."
70
+ },
71
+ toastr: {
72
+ copyMessage: "Copy this error message",
73
+ copied: "Copied!"
70
74
  }
71
75
  };
72
76
  var enTranslations = {
@@ -103,4 +107,4 @@ TranslationProvider.displayName = "TranslationProvider";
103
107
 
104
108
  exports.TranslationProvider = TranslationProvider;
105
109
  exports.resources = resources;
106
- //# sourceMappingURL=TranslationProvider-Dh5_Fzzk.js.map
110
+ //# sourceMappingURL=TranslationProvider-BgCNBYs8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationProvider-Dh5_Fzzk.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":["i18n","initReactI18next","useEffect","jsx","I18nextProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,EAAE,WAAA,EAAa,cAAA;AACrB;;ACCO,MAAM,cAAA,GAAiB,CAAC,QAAA,GAAW,IAAA,KAAS;AACjD,EAAAA,qBAAA,CAAK,GAAA,CAAIC,6BAAgB,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,OAAOD,qBAAA;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,EAAAE,eAAA,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,uBAAOC,cAAA,CAACC,4BAAA,EAAA,EAAgB,IAAA,EAAa,QAAA,EAAS,CAAA;AAChD;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;;;;;"}
1
+ {"version":3,"file":"TranslationProvider-BgCNBYs8.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":["i18n","initReactI18next","useEffect","jsx","I18nextProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,EAAE,WAAA,EAAa,cAAA;AACrB;;ACCO,MAAM,cAAA,GAAiB,CAAC,QAAA,GAAW,IAAA,KAAS;AACjD,EAAAA,qBAAA,CAAK,GAAA,CAAIC,6BAAgB,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,OAAOD,qBAAA;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,EAAAE,eAAA,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,uBAAOC,cAAA,CAACC,4BAAA,EAAA,EAAgB,IAAA,EAAa,QAAA,EAAS,CAAA;AAChD;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var Select = require('../Select-DA4PZAwd.js');
3
+ var Select = require('../Select-DVDECeJb.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('../SelectFieldWrapper-DKkizQNM.js');
@@ -41,7 +41,7 @@ require('react-i18next');
41
41
  require('../loader-circle-Bw7zP2Gn.js');
42
42
  require('../label-BdcX4_ud.js');
43
43
  require('../separator-DSL-aG1J.js');
44
- require('../Combobox-C3PiYYF-.js');
44
+ require('../Combobox-Dd2m0qal.js');
45
45
  require('../input-group-BdQoKm0i.js');
46
46
  require('../input-BVxqXG2C.js');
47
47
  require('../textarea-Cq6pBK7q.js');
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var Toastr = require('../Toastr-CgRy7bg-.js');
3
+ var Toastr = require('../Toastr-E0yLh_MW.js');
4
4
  require('react/jsx-runtime');
5
5
  require('../index-CPmGpPzg.js');
6
6
  require('../createLucideIcon-D0tRgV6l.js');
7
7
  require('react');
8
8
  require('react-dom');
9
+ require('react-i18next');
9
10
  require('../utils-BhM0B89p.js');
11
+ require('i18next');
10
12
  require('../triangle-alert-CC-cck8p.js');
11
13
  require('../info-DGfDptn1.js');
12
14
  require('../x-Brw3FJst.js');
13
- require('i18next');
14
15
 
15
16
 
16
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"Toastr.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Toastr.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var TranslationProvider = require('../TranslationProvider-Dh5_Fzzk.js');
3
+ var TranslationProvider = require('../TranslationProvider-BgCNBYs8.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('react-i18next');
@@ -21,7 +21,7 @@ var Pagination = require('../Pagination-8yFg8xR2.js');
21
21
  var Popover = require('../Popover-DuRSsDHz.js');
22
22
  var Progress = require('../Progress-yBpMAzIU.js');
23
23
  var RadioGroup = require('../RadioGroup-DCEw94Dk.js');
24
- var Select = require('../Select-DA4PZAwd.js');
24
+ var Select = require('../Select-DVDECeJb.js');
25
25
  var Sheet = require('../Sheet-By1W1pFD.js');
26
26
  var Slider = require('../Slider-CRmd_VMs.js');
27
27
  var Spinner = require('../Spinner-DzNBz8al.js');
@@ -31,9 +31,9 @@ var Tabs = require('../Tabs-COMRjTVU.js');
31
31
  var Textarea = require('../Textarea-yWv-66yX.js');
32
32
  var TimePicker = require('../TimePicker-DW7OM3IE.js');
33
33
  var TimePickerPanel = require('../TimePickerPanel-DX6cjrSN.js');
34
- var Toastr = require('../Toastr-CgRy7bg-.js');
34
+ var Toastr = require('../Toastr-E0yLh_MW.js');
35
35
  var Tooltip = require('../Tooltip-Dph_R3Ct.js');
36
- var TranslationProvider = require('../TranslationProvider-Dh5_Fzzk.js');
36
+ var TranslationProvider = require('../TranslationProvider-BgCNBYs8.js');
37
37
  var Tree = require('../Tree-Y0ulyxew.js');
38
38
  var TreeSelect = require('../TreeSelect-4g6YFilY.js');
39
39
  var Typography = require('../Typography-BW6xEk10.js');
@@ -121,7 +121,7 @@ require('../primitives/HoverCard.js');
121
121
  require('../primitives/Progress.js');
122
122
  require('../primitives/RadioGroup.js');
123
123
  require('../SelectFieldWrapper-DKkizQNM.js');
124
- require('../Combobox-C3PiYYF-.js');
124
+ require('../Combobox-Dd2m0qal.js');
125
125
  require('../with-selector-DeKHbQY7.js');
126
126
  require('../primitives/Sheet.js');
127
127
  require('../sheet-G6ismmAK.js');
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var formik = require('formik');
6
6
  var ramda = require('ramda');
7
- var Select = require('../Select-DA4PZAwd.js');
7
+ var Select = require('../Select-DVDECeJb.js');
8
8
  require('../SelectFieldWrapper-DKkizQNM.js');
9
9
  require('../primitives/Field.js');
10
10
  require('../utils-BhM0B89p.js');
@@ -43,7 +43,7 @@ require('react-i18next');
43
43
  require('../loader-circle-Bw7zP2Gn.js');
44
44
  require('../label-BdcX4_ud.js');
45
45
  require('../separator-DSL-aG1J.js');
46
- require('../Combobox-C3PiYYF-.js');
46
+ require('../Combobox-Dd2m0qal.js');
47
47
  require('../input-group-BdQoKm0i.js');
48
48
  require('../input-BVxqXG2C.js');
49
49
  require('../textarea-Cq6pBK7q.js');
@@ -62,9 +62,9 @@ require('../textarea-Cq6pBK7q.js');
62
62
  require('../withIconSize-C6LP0R7o.js');
63
63
  require('../Textarea-yWv-66yX.js');
64
64
  require('../primitives/Textarea.js');
65
- require('../Select-DA4PZAwd.js');
65
+ require('../Select-DVDECeJb.js');
66
66
  require('../SelectFieldWrapper-DKkizQNM.js');
67
- require('../Combobox-C3PiYYF-.js');
67
+ require('../Combobox-Dd2m0qal.js');
68
68
  require('../chevron-down-CPsWSS51.js');
69
69
  require('../check-BQgcDXys.js');
70
70
  require('../x-Brw3FJst.js');
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
4
- var TranslationProvider = require('./TranslationProvider-Dh5_Fzzk.js');
4
+ var TranslationProvider = require('./TranslationProvider-BgCNBYs8.js');
5
5
  var components_DropdownMenu = require('./components/DropdownMenu.js');
6
6
  var useMobile = require('./use-mobile-Be9CI6km.js');
7
7
  var utils = require('./utils-BhM0B89p.js');
@@ -26,7 +26,7 @@ var Pagination = require('./Pagination-8yFg8xR2.js');
26
26
  var Popover = require('./Popover-DuRSsDHz.js');
27
27
  var Progress = require('./Progress-yBpMAzIU.js');
28
28
  var RadioGroup = require('./RadioGroup-DCEw94Dk.js');
29
- var Select = require('./Select-DA4PZAwd.js');
29
+ var Select = require('./Select-DVDECeJb.js');
30
30
  var Sheet = require('./Sheet-By1W1pFD.js');
31
31
  var Slider = require('./Slider-CRmd_VMs.js');
32
32
  var Spinner = require('./Spinner-DzNBz8al.js');
@@ -35,7 +35,7 @@ var Switch = require('./Switch-bY6bZw78.js');
35
35
  var Tabs = require('./Tabs-COMRjTVU.js');
36
36
  var Textarea = require('./Textarea-yWv-66yX.js');
37
37
  var TimePicker = require('./TimePicker-DW7OM3IE.js');
38
- var Toastr = require('./Toastr-CgRy7bg-.js');
38
+ var Toastr = require('./Toastr-E0yLh_MW.js');
39
39
  var Tooltip = require('./Tooltip-Dph_R3Ct.js');
40
40
  var Tree = require('./Tree-Y0ulyxew.js');
41
41
  var TreeSelect = require('./TreeSelect-4g6YFilY.js');
@@ -125,7 +125,7 @@ require('./primitives/HoverCard.js');
125
125
  require('./primitives/Progress.js');
126
126
  require('./primitives/RadioGroup.js');
127
127
  require('./SelectFieldWrapper-DKkizQNM.js');
128
- require('./Combobox-C3PiYYF-.js');
128
+ require('./Combobox-Dd2m0qal.js');
129
129
  require('./with-selector-DeKHbQY7.js');
130
130
  require('./primitives/Sheet.js');
131
131
  require('./sheet-G6ismmAK.js');
@@ -3,7 +3,7 @@
3
3
  require('react/jsx-runtime');
4
4
  require('react');
5
5
  require('../utils-BhM0B89p.js');
6
- var primitives_Combobox = require('../Combobox-C3PiYYF-.js');
6
+ var primitives_Combobox = require('../Combobox-Dd2m0qal.js');
7
7
  require('../button-CMl9rLXi.js');
8
8
  require('../index-vioSzJOw.js');
9
9
  require('../index-DuNgWCXZ.js');
@@ -272,7 +272,7 @@ function CommandList$1({
272
272
  {
273
273
  "data-slot": "command-list",
274
274
  className: utils.cn(
275
- "no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
275
+ "max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
276
276
  className
277
277
  ),
278
278
  ...props