@cookified/toastify 1.0.1 → 1.0.2

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/lib/index.cjs CHANGED
@@ -1,57 +1,77 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- DefaultToastIcon: () => DefaultToastIcon,
24
- FadeAnimation: () => FadeAnimation,
25
- FolderStackAnimation: () => FolderStackAnimation,
26
- SlideAnimation: () => SlideAnimation,
27
- Toast: () => Toast,
28
- ToastAnimation: () => ToastAnimation,
29
- ToastContainer: () => ToastContainer,
30
- Toaster: () => Toaster,
31
- defaultSpring: () => defaultSpring,
32
- toast: () => toast,
33
- toastStore: () => toastStore
34
- });
35
- module.exports = __toCommonJS(index_exports);
1
+ "use client";
2
+ 'use strict';
36
3
 
37
- // src/toastify/Toaster.tsx
38
- var import_react4 = require("motion/react");
39
- var import_react5 = require("react");
4
+ var react = require('motion/react');
5
+ var react$1 = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
40
7
 
41
- // src/toastify/Toast.tsx
42
- var import_lucide_react = require("lucide-react");
43
- var import_jsx_runtime = require("react/jsx-runtime");
8
+ // src/toastify/Toaster.tsx
9
+ function CheckIcon() {
10
+ return /* @__PURE__ */ jsxRuntime.jsx(
11
+ "svg",
12
+ {
13
+ width: "12",
14
+ height: "12",
15
+ viewBox: "0 0 24 24",
16
+ fill: "none",
17
+ stroke: "currentColor",
18
+ strokeWidth: 2.5,
19
+ strokeLinecap: "round",
20
+ strokeLinejoin: "round",
21
+ "aria-hidden": "true",
22
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" })
23
+ }
24
+ );
25
+ }
26
+ function XIcon() {
27
+ return /* @__PURE__ */ jsxRuntime.jsxs(
28
+ "svg",
29
+ {
30
+ width: "12",
31
+ height: "12",
32
+ viewBox: "0 0 24 24",
33
+ fill: "none",
34
+ stroke: "currentColor",
35
+ strokeWidth: 2.5,
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round",
38
+ "aria-hidden": "true",
39
+ children: [
40
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
41
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
42
+ ]
43
+ }
44
+ );
45
+ }
46
+ function LoaderIcon() {
47
+ return /* @__PURE__ */ jsxRuntime.jsx(
48
+ "svg",
49
+ {
50
+ width: "12",
51
+ height: "12",
52
+ viewBox: "0 0 24 24",
53
+ fill: "none",
54
+ stroke: "currentColor",
55
+ strokeWidth: 2.5,
56
+ strokeLinecap: "round",
57
+ strokeLinejoin: "round",
58
+ className: "toastify-spin animate-spin",
59
+ "aria-hidden": "true",
60
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
61
+ }
62
+ );
63
+ }
44
64
  function DefaultToastIcon({ type }) {
45
- const badgeClasses = "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-neutral-900 text-white shadow-xs dark:bg-white dark:text-neutral-950";
65
+ const badgeClasses = "toastify-badge flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-neutral-900 text-white shadow-xs dark:bg-white dark:text-neutral-950";
46
66
  switch (type) {
47
67
  case "loading":
48
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: badgeClasses, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Loader2, { size: 12, strokeWidth: 2.5, className: "animate-spin" }) });
68
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClasses, children: /* @__PURE__ */ jsxRuntime.jsx(LoaderIcon, {}) });
49
69
  case "success":
50
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: badgeClasses, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, { size: 12, strokeWidth: 2.5 }) });
70
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClasses, children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) });
51
71
  case "error":
52
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: badgeClasses, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { size: 12, strokeWidth: 2.5 }) });
72
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClasses, children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {}) });
53
73
  case "warning":
54
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: badgeClasses, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
74
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClasses, children: /* @__PURE__ */ jsxRuntime.jsxs(
55
75
  "svg",
56
76
  {
57
77
  width: "12",
@@ -64,15 +84,15 @@ function DefaultToastIcon({ type }) {
64
84
  strokeLinejoin: "round",
65
85
  "aria-hidden": "true",
66
86
  children: [
67
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
68
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
87
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
88
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
69
89
  ]
70
90
  }
71
91
  ) });
72
92
  case "info":
73
93
  case "neutral":
74
94
  default:
75
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: badgeClasses, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
95
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeClasses, children: /* @__PURE__ */ jsxRuntime.jsxs(
76
96
  "svg",
77
97
  {
78
98
  width: "12",
@@ -85,8 +105,8 @@ function DefaultToastIcon({ type }) {
85
105
  strokeLinejoin: "round",
86
106
  "aria-hidden": "true",
87
107
  children: [
88
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
89
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
108
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
109
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
90
110
  ]
91
111
  }
92
112
  ) });
@@ -100,25 +120,25 @@ function Toast({
100
120
  globalOptions
101
121
  }) {
102
122
  if (toast2.customRenderer) {
103
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: toast2.customRenderer(toast2.id) });
123
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: toast2.customRenderer(toast2.id) });
104
124
  }
105
- const icon = toast2.icon ?? globalIcons?.[toast2.type] ?? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DefaultToastIcon, { type: toast2.type });
106
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
125
+ const icon = toast2.icon ?? globalIcons?.[toast2.type] ?? /* @__PURE__ */ jsxRuntime.jsx(DefaultToastIcon, { type: toast2.type });
126
+ return /* @__PURE__ */ jsxRuntime.jsxs(
107
127
  "div",
108
128
  {
109
129
  onClick: () => closeOnClick && onDismiss(),
110
130
  className: `toastify-toast flex h-14 w-full select-none items-center justify-between gap-3 rounded-md border border-neutral-200/90 bg-white px-3.5 shadow-md shadow-neutral-950/5 dark:border-neutral-800/90 dark:bg-neutral-900 dark:shadow-neutral-950/40 ${globalOptions?.className ?? ""} ${toast2.className ?? ""}`,
111
131
  style: { ...globalOptions?.style, ...toast2.style },
112
132
  children: [
113
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
133
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "toastify-content flex min-w-0 flex-1 items-center gap-3", children: [
114
134
  icon,
115
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 flex-col justify-center", children: [
116
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "truncate text-[13px] font-medium leading-4 text-neutral-900 dark:text-neutral-100", children: toast2.title }),
117
- toast2.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-0.5 truncate text-[12px] leading-4 text-neutral-500 dark:text-neutral-400", children: toast2.description })
135
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "toastify-text-group flex min-w-0 flex-col justify-center", children: [
136
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "toastify-title truncate text-[13px] font-medium leading-4 text-neutral-900 dark:text-neutral-100", children: toast2.title }),
137
+ toast2.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "toastify-description mt-0.5 truncate text-[12px] leading-4 text-neutral-500 dark:text-neutral-400", children: toast2.description })
118
138
  ] })
119
139
  ] }),
120
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex shrink-0 items-center gap-2", children: [
121
- toast2.cancel && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
140
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "toastify-actions flex shrink-0 items-center gap-2", children: [
141
+ toast2.cancel && /* @__PURE__ */ jsxRuntime.jsx(
122
142
  "button",
123
143
  {
124
144
  type: "button",
@@ -131,11 +151,11 @@ function Toast({
131
151
  }
132
152
  onDismiss();
133
153
  },
134
- className: "cursor-pointer rounded px-2 py-1 text-xs font-medium text-neutral-600 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",
154
+ className: "toastify-btn-cancel cursor-pointer rounded px-2 py-1 text-xs font-medium text-neutral-600 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",
135
155
  children: toast2.cancel.label
136
156
  }
137
157
  ),
138
- toast2.action && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
158
+ toast2.action && /* @__PURE__ */ jsxRuntime.jsx(
139
159
  "button",
140
160
  {
141
161
  type: "button",
@@ -148,7 +168,7 @@ function Toast({
148
168
  }
149
169
  onDismiss();
150
170
  },
151
- className: "cursor-pointer rounded px-2.5 py-1 text-xs font-medium bg-neutral-900 text-white transition-all hover:bg-neutral-800 shadow-[inset_0_-2px_4px_rgba(0,0,0,0.5),0_1px_2px_rgba(0,0,0,0.08)] active:shadow-[inset_0_2px_4px_rgba(0,0,0,0.4)] dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-neutral-200 dark:shadow-[inset_0_-2px_4px_rgba(0,0,0,0.22),0_1px_2px_rgba(0,0,0,0.15)] dark:active:shadow-[inset_0_2px_4px_rgba(0,0,0,0.25)]",
171
+ className: "toastify-btn-action cursor-pointer rounded px-2.5 py-1 text-xs font-medium bg-neutral-900 text-white transition-all hover:bg-neutral-800 shadow-[inset_0_-2px_4px_rgba(0,0,0,0.5),0_1px_2px_rgba(0,0,0,0.08)] active:shadow-[inset_0_2px_4px_rgba(0,0,0,0.4)] dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-neutral-200 dark:shadow-[inset_0_-2px_4px_rgba(0,0,0,0.22),0_1px_2px_rgba(0,0,0,0.15)] dark:active:shadow-[inset_0_2px_4px_rgba(0,0,0,0.25)]",
152
172
  children: toast2.action.label
153
173
  }
154
174
  )
@@ -158,18 +178,12 @@ function Toast({
158
178
  );
159
179
  }
160
180
 
161
- // src/toastify/animations/FadeAnimation.tsx
162
- var import_react = require("motion/react");
163
-
164
181
  // src/toastify/animations/constants.ts
165
182
  var defaultSpring = {
166
183
  stiffness: 220,
167
184
  damping: 26,
168
185
  mass: 1
169
186
  };
170
-
171
- // src/toastify/animations/FadeAnimation.tsx
172
- var import_jsx_runtime2 = require("react/jsx-runtime");
173
187
  function FadeAnimation({
174
188
  index,
175
189
  position,
@@ -181,8 +195,8 @@ function FadeAnimation({
181
195
  const isTop = position.startsWith("top");
182
196
  const stackStep = 66;
183
197
  const targetY = isTop ? index * stackStep : -index * stackStep;
184
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
185
- import_react.motion.article,
198
+ return /* @__PURE__ */ jsxRuntime.jsx(
199
+ react.motion.article,
186
200
  {
187
201
  role: "status",
188
202
  "aria-live": "polite",
@@ -221,7 +235,7 @@ function FadeAnimation({
221
235
  onDismiss();
222
236
  }
223
237
  },
224
- className: "absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
238
+ className: "toastify-item absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
225
239
  style: {
226
240
  [isTop ? "top" : "bottom"]: 0,
227
241
  left: 0,
@@ -231,10 +245,6 @@ function FadeAnimation({
231
245
  }
232
246
  );
233
247
  }
234
-
235
- // src/toastify/animations/FolderStackAnimation.tsx
236
- var import_react2 = require("motion/react");
237
- var import_jsx_runtime3 = require("react/jsx-runtime");
238
248
  function FolderStackAnimation({
239
249
  index,
240
250
  isHovered,
@@ -255,8 +265,8 @@ function FolderStackAnimation({
255
265
  const targetScale = collapsed ? Math.max(0.88, 1 - index * 0.05) : 1;
256
266
  const targetOpacity = !isVisible ? 0 : collapsed ? index === 0 ? 1 : index === 1 ? 0.94 : 0.84 : 1;
257
267
  const exitX = isCenter ? 0 : isLeft ? -36 : 36;
258
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
259
- import_react2.motion.article,
268
+ return /* @__PURE__ */ jsxRuntime.jsx(
269
+ react.motion.article,
260
270
  {
261
271
  role: "status",
262
272
  "aria-live": "polite",
@@ -295,7 +305,7 @@ function FolderStackAnimation({
295
305
  onDismiss();
296
306
  }
297
307
  },
298
- className: "absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
308
+ className: "toastify-item absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
299
309
  style: {
300
310
  [isTop ? "top" : "bottom"]: 0,
301
311
  left: 0,
@@ -306,10 +316,6 @@ function FolderStackAnimation({
306
316
  }
307
317
  );
308
318
  }
309
-
310
- // src/toastify/animations/SlideAnimation.tsx
311
- var import_react3 = require("motion/react");
312
- var import_jsx_runtime4 = require("react/jsx-runtime");
313
319
  function SlideAnimation({
314
320
  index,
315
321
  position,
@@ -326,8 +332,8 @@ function SlideAnimation({
326
332
  const entryX = isCenter ? 0 : isLeft ? -120 : 120;
327
333
  const exitX = isCenter ? 0 : isLeft ? -140 : 140;
328
334
  const initialY = isCenter ? isTop ? targetY - 30 : targetY + 30 : targetY;
329
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
330
- import_react3.motion.article,
335
+ return /* @__PURE__ */ jsxRuntime.jsx(
336
+ react.motion.article,
331
337
  {
332
338
  role: "status",
333
339
  "aria-live": "polite",
@@ -366,7 +372,7 @@ function SlideAnimation({
366
372
  onDismiss();
367
373
  }
368
374
  },
369
- className: "absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
375
+ className: "toastify-item absolute h-14 w-full select-none cursor-grab active:cursor-grabbing",
370
376
  style: {
371
377
  [isTop ? "top" : "bottom"]: 0,
372
378
  left: 0,
@@ -376,24 +382,21 @@ function SlideAnimation({
376
382
  }
377
383
  );
378
384
  }
379
-
380
- // src/toastify/animations/index.tsx
381
- var import_jsx_runtime5 = require("react/jsx-runtime");
382
385
  function ToastAnimation({
383
386
  animation = "stack",
384
387
  ...props
385
388
  }) {
386
389
  if (typeof animation === "function") {
387
390
  const CustomAnimation = animation;
388
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CustomAnimation, { ...props });
391
+ return /* @__PURE__ */ jsxRuntime.jsx(CustomAnimation, { ...props });
389
392
  }
390
393
  if (animation === "slide") {
391
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SlideAnimation, { ...props });
394
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideAnimation, { ...props });
392
395
  }
393
396
  if (animation === "fade") {
394
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FadeAnimation, { ...props });
397
+ return /* @__PURE__ */ jsxRuntime.jsx(FadeAnimation, { ...props });
395
398
  }
396
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FolderStackAnimation, { ...props });
399
+ return /* @__PURE__ */ jsxRuntime.jsx(FolderStackAnimation, { ...props });
397
400
  }
398
401
 
399
402
  // src/toastify/store.ts
@@ -586,15 +589,328 @@ var toast = Object.assign(toastFn, {
586
589
  }
587
590
  });
588
591
 
589
- // src/toastify/Toaster.tsx
590
- var import_jsx_runtime6 = require("react/jsx-runtime");
592
+ // src/toastify/styles.ts
593
+ var toastifyStyles = `
594
+ /* Toastify Standalone CSS */
595
+ @keyframes toastify-spin {
596
+ from {
597
+ transform: rotate(0deg);
598
+ }
599
+ to {
600
+ transform: rotate(360deg);
601
+ }
602
+ }
603
+
604
+ .toastify-spin {
605
+ animation: toastify-spin 1s linear infinite;
606
+ }
607
+
608
+ .toastify-toaster {
609
+ position: fixed;
610
+ z-index: 9999;
611
+ width: 356px;
612
+ max-width: calc(100vw - 32px);
613
+ box-sizing: border-box;
614
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
615
+ margin: 0;
616
+ padding: 0;
617
+ }
618
+
619
+ .toastify-toaster *,
620
+ .toastify-toaster *::before,
621
+ .toastify-toaster *::after {
622
+ box-sizing: border-box;
623
+ }
624
+
625
+ /* Positions */
626
+ .toastify-pos-top-left {
627
+ top: 24px;
628
+ left: 24px;
629
+ }
630
+ .toastify-pos-top-center {
631
+ top: 24px;
632
+ left: 0;
633
+ right: 0;
634
+ margin-left: auto;
635
+ margin-right: auto;
636
+ }
637
+ .toastify-pos-top-right {
638
+ top: 24px;
639
+ right: 24px;
640
+ }
641
+ .toastify-pos-bottom-left {
642
+ bottom: 24px;
643
+ left: 24px;
644
+ }
645
+ .toastify-pos-bottom-center {
646
+ bottom: 24px;
647
+ left: 0;
648
+ right: 0;
649
+ margin-left: auto;
650
+ margin-right: auto;
651
+ }
652
+ .toastify-pos-bottom-right {
653
+ bottom: 24px;
654
+ right: 24px;
655
+ }
656
+
657
+ .toastify-pointer-auto {
658
+ pointer-events: auto;
659
+ }
660
+ .toastify-pointer-none {
661
+ pointer-events: none;
662
+ }
663
+
664
+ /* Toast List Container */
665
+ .toastify-list {
666
+ position: relative;
667
+ width: 100%;
668
+ height: 100%;
669
+ display: flex;
670
+ }
671
+ .toastify-list-col {
672
+ flex-direction: column;
673
+ }
674
+ .toastify-list-col-reverse {
675
+ flex-direction: column-reverse;
676
+ }
677
+
678
+ /* Individual Toast Item wrapper */
679
+ .toastify-item {
680
+ position: absolute;
681
+ height: 56px;
682
+ width: 100%;
683
+ user-select: none;
684
+ cursor: grab;
685
+ }
686
+ .toastify-item:active {
687
+ cursor: grabbing;
688
+ }
689
+
690
+ /* Toast Card with Tactile Micro-bevels */
691
+ .toastify-toast {
692
+ display: flex;
693
+ height: 56px;
694
+ width: 100%;
695
+ user-select: none;
696
+ align-items: center;
697
+ justify-content: space-between;
698
+ gap: 12px;
699
+ border-radius: 8px;
700
+ padding: 0 14px;
701
+ box-sizing: border-box;
702
+ transition: background-color 0.2s cubic-bezier(0.16, 1, 0.3, 1),
703
+ border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1),
704
+ box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1),
705
+ color 0.2s cubic-bezier(0.16, 1, 0.3, 1);
706
+
707
+ /* Light theme default */
708
+ background-color: #ffffff;
709
+ border: 1px solid rgba(229, 231, 235, 0.9);
710
+ color: #111827;
711
+ box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.08), 0 2px 6px -1px rgba(0, 0, 0, 0.04);
712
+ }
713
+
714
+ /* Dark theme overrides */
715
+ .toastify-toaster.dark .toastify-toast,
716
+ [data-theme="dark"] .toastify-toast,
717
+ .dark .toastify-toast {
718
+ background-color: #171717;
719
+ border: 1px solid rgba(38, 38, 38, 0.9);
720
+ color: #f5f5f5;
721
+ box-shadow: 0 4px 14px -2px rgba(0, 0, 0, 0.4), 0 2px 6px -1px rgba(0, 0, 0, 0.25);
722
+ }
723
+
724
+ /* System dark theme preference when theme="system" */
725
+ @media (prefers-color-scheme: dark) {
726
+ .toastify-toaster.system .toastify-toast {
727
+ background-color: #171717;
728
+ border: 1px solid rgba(38, 38, 38, 0.9);
729
+ color: #f5f5f5;
730
+ box-shadow: 0 4px 14px -2px rgba(0, 0, 0, 0.4), 0 2px 6px -1px rgba(0, 0, 0, 0.25);
731
+ }
732
+ .toastify-toaster.system .toastify-badge {
733
+ background-color: #ffffff;
734
+ color: #0a0a0a;
735
+ }
736
+ .toastify-toaster.system .toastify-title {
737
+ color: #f5f5f5;
738
+ }
739
+ .toastify-toaster.system .toastify-description {
740
+ color: #a3a3a3;
741
+ }
742
+ .toastify-toaster.system .toastify-btn-cancel {
743
+ color: #a3a3a3;
744
+ }
745
+ .toastify-toaster.system .toastify-btn-cancel:hover {
746
+ background-color: #262626;
747
+ color: #f5f5f5;
748
+ }
749
+ .toastify-toaster.system .toastify-btn-action {
750
+ background-color: #f5f5f5;
751
+ color: #171717;
752
+ box-shadow: inset 0 -2px 4px rgba(0, 0, 0, 0.22), 0 1px 2px rgba(0, 0, 0, 0.15);
753
+ }
754
+ .toastify-toaster.system .toastify-btn-action:hover {
755
+ background-color: #e5e5e5;
756
+ }
757
+ }
758
+
759
+ /* Badge Icon Wrapper */
760
+ .toastify-badge {
761
+ display: flex;
762
+ height: 20px;
763
+ width: 20px;
764
+ flex-shrink: 0;
765
+ align-items: center;
766
+ justify-content: center;
767
+ border-radius: 9999px;
768
+ background-color: #171717;
769
+ color: #ffffff;
770
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
771
+ }
772
+
773
+ .toastify-toaster.dark .toastify-badge,
774
+ [data-theme="dark"] .toastify-badge,
775
+ .dark .toastify-badge {
776
+ background-color: #ffffff;
777
+ color: #0a0a0a;
778
+ }
779
+
780
+ /* Content Area */
781
+ .toastify-content {
782
+ display: flex;
783
+ min-width: 0;
784
+ flex: 1 1 0%;
785
+ align-items: center;
786
+ gap: 12px;
787
+ }
788
+
789
+ .toastify-text-group {
790
+ display: flex;
791
+ min-width: 0;
792
+ flex-direction: column;
793
+ justify-content: center;
794
+ }
795
+
796
+ .toastify-title {
797
+ overflow: hidden;
798
+ text-overflow: ellipsis;
799
+ white-space: nowrap;
800
+ font-size: 13px;
801
+ font-weight: 500;
802
+ line-height: 16px;
803
+ color: #171717;
804
+ }
805
+
806
+ .toastify-toaster.dark .toastify-title,
807
+ [data-theme="dark"] .toastify-title,
808
+ .dark .toastify-title {
809
+ color: #f5f5f5;
810
+ }
811
+
812
+ .toastify-description {
813
+ margin-top: 2px;
814
+ overflow: hidden;
815
+ text-overflow: ellipsis;
816
+ white-space: nowrap;
817
+ font-size: 12px;
818
+ line-height: 16px;
819
+ color: #737373;
820
+ }
821
+
822
+ .toastify-toaster.dark .toastify-description,
823
+ [data-theme="dark"] .toastify-description,
824
+ .dark .toastify-description {
825
+ color: #a3a3a3;
826
+ }
827
+
828
+ /* Action Area */
829
+ .toastify-actions {
830
+ display: flex;
831
+ flex-shrink: 0;
832
+ align-items: center;
833
+ gap: 8px;
834
+ }
835
+
836
+ .toastify-btn-cancel {
837
+ cursor: pointer;
838
+ border: none;
839
+ background: transparent;
840
+ border-radius: 4px;
841
+ padding: 4px 8px;
842
+ font-size: 12px;
843
+ font-weight: 500;
844
+ color: #525252;
845
+ transition: background-color 0.15s, color 0.15s;
846
+ }
847
+
848
+ .toastify-btn-cancel:hover {
849
+ background-color: #f5f5f5;
850
+ color: #171717;
851
+ }
852
+
853
+ .toastify-toaster.dark .toastify-btn-cancel,
854
+ [data-theme="dark"] .toastify-btn-cancel,
855
+ .dark .toastify-btn-cancel {
856
+ color: #a3a3a3;
857
+ }
858
+
859
+ .toastify-toaster.dark .toastify-btn-cancel:hover,
860
+ [data-theme="dark"] .toastify-btn-cancel:hover,
861
+ .dark .toastify-btn-cancel:hover {
862
+ background-color: #262626;
863
+ color: #f5f5f5;
864
+ }
865
+
866
+ .toastify-btn-action {
867
+ cursor: pointer;
868
+ border: none;
869
+ border-radius: 4px;
870
+ padding: 4px 10px;
871
+ font-size: 12px;
872
+ font-weight: 500;
873
+ background-color: #171717;
874
+ color: #ffffff;
875
+ transition: background-color 0.15s, box-shadow 0.15s;
876
+ box-shadow: inset 0 -2px 4px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.08);
877
+ }
878
+
879
+ .toastify-btn-action:hover {
880
+ background-color: #262626;
881
+ }
882
+
883
+ .toastify-btn-action:active {
884
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
885
+ }
886
+
887
+ .toastify-toaster.dark .toastify-btn-action,
888
+ [data-theme="dark"] .toastify-btn-action,
889
+ .dark .toastify-btn-action {
890
+ background-color: #f5f5f5;
891
+ color: #171717;
892
+ box-shadow: inset 0 -2px 4px rgba(0, 0, 0, 0.22), 0 1px 2px rgba(0, 0, 0, 0.15);
893
+ }
894
+
895
+ .toastify-toaster.dark .toastify-btn-action:hover,
896
+ [data-theme="dark"] .toastify-btn-action:hover,
897
+ .dark .toastify-btn-action:hover {
898
+ background-color: #e5e5e5;
899
+ }
900
+
901
+ .toastify-toaster.dark .toastify-btn-action:active,
902
+ [data-theme="dark"] .toastify-btn-action:active,
903
+ .dark .toastify-btn-action:active {
904
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25);
905
+ }
906
+ `;
591
907
  var positionClasses = {
592
- "top-left": "top-6 left-6",
593
- "top-center": "top-6 left-0 right-0 mx-auto",
594
- "top-right": "top-6 right-6",
595
- "bottom-left": "bottom-6 left-6",
596
- "bottom-center": "bottom-6 left-0 right-0 mx-auto",
597
- "bottom-right": "bottom-6 right-6"
908
+ "top-left": "toastify-pos-top-left top-6 left-6",
909
+ "top-center": "toastify-pos-top-center top-6 left-0 right-0 mx-auto",
910
+ "top-right": "toastify-pos-top-right top-6 right-6",
911
+ "bottom-left": "toastify-pos-bottom-left bottom-6 left-6",
912
+ "bottom-center": "toastify-pos-bottom-center bottom-6 left-0 right-0 mx-auto",
913
+ "bottom-right": "toastify-pos-bottom-right bottom-6 right-6"
598
914
  };
599
915
  function ToasterItem({
600
916
  toast: toast2,
@@ -612,20 +928,20 @@ function ToasterItem({
612
928
  onDismiss
613
929
  }) {
614
930
  const itemDuration = toast2.type === "loading" ? false : toast2.duration !== void 0 ? toast2.duration : toastOptions?.duration !== void 0 ? toastOptions.duration : autoClose ?? duration;
615
- const onDismissRef = (0, import_react5.useRef)(onDismiss);
616
- (0, import_react5.useEffect)(() => {
931
+ const onDismissRef = react$1.useRef(onDismiss);
932
+ react$1.useEffect(() => {
617
933
  onDismissRef.current = onDismiss;
618
934
  }, [onDismiss]);
619
- const [isDismissing, setIsDismissing] = (0, import_react5.useState)(false);
935
+ const [isDismissing, setIsDismissing] = react$1.useState(false);
620
936
  const handleDismiss = () => {
621
937
  setIsDismissing(true);
622
938
  onDismissRef.current();
623
939
  };
624
- const remainingTimeRef = (0, import_react5.useRef)(itemDuration);
625
- (0, import_react5.useEffect)(() => {
940
+ const remainingTimeRef = react$1.useRef(itemDuration);
941
+ react$1.useEffect(() => {
626
942
  remainingTimeRef.current = itemDuration;
627
943
  }, [itemDuration]);
628
- (0, import_react5.useEffect)(() => {
944
+ react$1.useEffect(() => {
629
945
  if (itemDuration === false || isHovered) {
630
946
  return;
631
947
  }
@@ -642,7 +958,7 @@ function ToasterItem({
642
958
  }
643
959
  };
644
960
  }, [isHovered, itemDuration]);
645
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
961
+ return /* @__PURE__ */ jsxRuntime.jsx(
646
962
  ToastAnimation,
647
963
  {
648
964
  animation,
@@ -654,7 +970,7 @@ function ToasterItem({
654
970
  isDismissing,
655
971
  onDismiss: handleDismiss,
656
972
  springConfig,
657
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
973
+ children: /* @__PURE__ */ jsxRuntime.jsx(
658
974
  Toast,
659
975
  {
660
976
  toast: toast2,
@@ -679,13 +995,14 @@ function Toaster({
679
995
  animation = "stack",
680
996
  springConfig,
681
997
  icons,
998
+ unstyled = false,
682
999
  toastOptions
683
1000
  }) {
684
- const [toasts2, setToasts] = (0, import_react5.useState)([]);
685
- const [isHovered, setIsHovered] = (0, import_react5.useState)(false);
686
- const [hoverExpandedCount, setHoverExpandedCount] = (0, import_react5.useState)(null);
687
- const leaveTimeoutRef = (0, import_react5.useRef)(null);
688
- (0, import_react5.useEffect)(() => toastStore.subscribe(setToasts), []);
1001
+ const [toasts2, setToasts] = react$1.useState([]);
1002
+ const [isHovered, setIsHovered] = react$1.useState(false);
1003
+ const [hoverExpandedCount, setHoverExpandedCount] = react$1.useState(null);
1004
+ const leaveTimeoutRef = react$1.useRef(null);
1005
+ react$1.useEffect(() => toastStore.subscribe(setToasts), []);
689
1006
  const isTop = position.startsWith("top");
690
1007
  const hasToasts = toasts2.length > 0;
691
1008
  const activeCount = Math.min(toasts2.length, visibleToasts);
@@ -705,75 +1022,83 @@ function Toaster({
705
1022
  setHoverExpandedCount(null);
706
1023
  }, 140);
707
1024
  };
708
- (0, import_react5.useEffect)(() => {
1025
+ react$1.useEffect(() => {
709
1026
  return () => {
710
1027
  if (leaveTimeoutRef.current) {
711
1028
  window.clearTimeout(leaveTimeoutRef.current);
712
1029
  }
713
1030
  };
714
1031
  }, []);
715
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
716
- import_react4.motion.div,
717
- {
718
- "data-toastify-toaster": "true",
719
- role: "region",
720
- "aria-label": "Notifications",
721
- "aria-live": "polite",
722
- tabIndex: -1,
723
- className: `toastify-toaster fixed z-50 w-[356px] max-w-[calc(100vw-32px)] ${hasToasts ? "pointer-events-auto" : "pointer-events-none"} ${positionClasses[position]} ${theme === "dark" ? "dark" : ""} ${className ?? ""}`,
724
- style,
725
- animate: {
726
- height: containerHeight
727
- },
728
- transition: {
729
- type: "spring",
730
- stiffness: 220,
731
- damping: 26,
732
- mass: 1,
733
- ...springConfig
734
- },
735
- onMouseEnter: handleMouseEnter,
736
- onMouseLeave: handleMouseLeave,
737
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
738
- "div",
739
- {
740
- className: `relative w-full h-full flex ${isTop ? "flex-col" : "flex-col-reverse"}`,
741
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react4.AnimatePresence, { children: toasts2.slice(0, visibleToasts).map((toastItem, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
742
- ToasterItem,
743
- {
744
- toast: toastItem,
745
- index,
746
- totalToasts: toasts2.length,
747
- isHovered,
748
- position,
749
- duration,
750
- autoClose,
751
- closeOnClick,
752
- animation,
753
- springConfig,
754
- icons,
755
- toastOptions,
756
- onDismiss: () => toastStore.remove(toastItem.id)
757
- },
758
- toastItem.id
759
- )) })
760
- }
761
- )
762
- }
763
- );
1032
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1033
+ !unstyled && /* @__PURE__ */ jsxRuntime.jsx(
1034
+ "style",
1035
+ {
1036
+ "data-toastify-styles": "",
1037
+ dangerouslySetInnerHTML: { __html: toastifyStyles }
1038
+ }
1039
+ ),
1040
+ /* @__PURE__ */ jsxRuntime.jsx(
1041
+ react.motion.div,
1042
+ {
1043
+ "data-toastify-toaster": "true",
1044
+ role: "region",
1045
+ "aria-label": "Notifications",
1046
+ "aria-live": "polite",
1047
+ tabIndex: -1,
1048
+ className: `toastify-toaster fixed z-50 w-[356px] max-w-[calc(100vw-32px)] ${hasToasts ? "toastify-pointer-auto pointer-events-auto" : "toastify-pointer-none pointer-events-none"} ${positionClasses[position]} ${theme === "dark" ? "dark" : theme === "system" ? "system" : ""} ${className ?? ""}`,
1049
+ style,
1050
+ animate: {
1051
+ height: containerHeight
1052
+ },
1053
+ transition: {
1054
+ type: "spring",
1055
+ stiffness: 220,
1056
+ damping: 26,
1057
+ mass: 1,
1058
+ ...springConfig
1059
+ },
1060
+ onMouseEnter: handleMouseEnter,
1061
+ onMouseLeave: handleMouseLeave,
1062
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1063
+ "div",
1064
+ {
1065
+ className: `toastify-list relative w-full h-full flex ${isTop ? "toastify-list-col flex-col" : "toastify-list-col-reverse flex-col-reverse"}`,
1066
+ children: /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: toasts2.slice(0, visibleToasts).map((toastItem, index) => /* @__PURE__ */ jsxRuntime.jsx(
1067
+ ToasterItem,
1068
+ {
1069
+ toast: toastItem,
1070
+ index,
1071
+ totalToasts: toasts2.length,
1072
+ isHovered,
1073
+ position,
1074
+ duration,
1075
+ autoClose,
1076
+ closeOnClick,
1077
+ animation,
1078
+ springConfig,
1079
+ icons,
1080
+ toastOptions,
1081
+ onDismiss: () => toastStore.remove(toastItem.id)
1082
+ },
1083
+ toastItem.id
1084
+ )) })
1085
+ }
1086
+ )
1087
+ }
1088
+ )
1089
+ ] });
764
1090
  }
765
1091
  var ToastContainer = Toaster;
766
- // Annotate the CommonJS export names for ESM import in node:
767
- 0 && (module.exports = {
768
- DefaultToastIcon,
769
- FadeAnimation,
770
- FolderStackAnimation,
771
- SlideAnimation,
772
- Toast,
773
- ToastAnimation,
774
- ToastContainer,
775
- Toaster,
776
- defaultSpring,
777
- toast,
778
- toastStore
779
- });
1092
+
1093
+ exports.DefaultToastIcon = DefaultToastIcon;
1094
+ exports.FadeAnimation = FadeAnimation;
1095
+ exports.FolderStackAnimation = FolderStackAnimation;
1096
+ exports.SlideAnimation = SlideAnimation;
1097
+ exports.Toast = Toast;
1098
+ exports.ToastAnimation = ToastAnimation;
1099
+ exports.ToastContainer = ToastContainer;
1100
+ exports.Toaster = Toaster;
1101
+ exports.defaultSpring = defaultSpring;
1102
+ exports.toast = toast;
1103
+ exports.toastStore = toastStore;
1104
+ exports.toastifyStyles = toastifyStyles;