react-toast-msg 2.5.6 → 2.5.8

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/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # React Toast MSG - (SudhuCodes)
1
+ ![banner](https://rtm.sudhucodes.com/opengraph-image.png)
2
+
3
+ # React Toast MSG
2
4
 
3
5
  A lightweight and customizable React toast notification library.
4
6
 
@@ -6,135 +8,4 @@ A lightweight and customizable React toast notification library.
6
8
  ![License](https://img.shields.io/npm/l/react-toast-msg)
7
9
  ![Downloads](https://img.shields.io/npm/dt/react-toast-msg)
8
10
 
9
- ![React Toast MSG](https://github.com/user-attachments/assets/c91fd623-a733-4634-88b7-2bb0f30366ff 'React Toast MSG')
10
-
11
- ---
12
-
13
- ## Features
14
-
15
- - Lightweight & fast
16
- - Tailwind CSS based styling
17
- - Global & per-toast configuration
18
- - Multiple toast variants
19
- - Auto close with animation
20
- - Manual close button support
21
-
22
- ## Installation
23
-
24
- ```bash
25
- npm i react-toast-msg
26
- ```
27
-
28
- ## Install Tailwind CSS
29
-
30
- Make sure you have Tailwind CSS installed in your project.
31
-
32
- ### Import CSS
33
-
34
- In your global CSS file (e.g., `index.css` or `App.css`), import the library's CSS:
35
-
36
- ```css
37
- @import 'react-toast-msg/style.css';
38
- ```
39
-
40
- ---
41
-
42
- ## Usage
43
-
44
- ### 1. Add `ToastContainer` at the root of your application:
45
-
46
- ```jsx
47
- import { toast, ToastContainer } from 'react-toast-msg';
48
-
49
- export default function Example() {
50
- return (
51
- <>
52
- <ToastContainer autoClose={3000} closeButton={true} />
53
- <button onClick={() => toast('Default toast')}>Default</button>
54
- <button onClick={() => toast.success('Success toast')}>Success</button>
55
- {/* rest */}
56
- <button onClick={() => toast.success('Success toast', { duration: 5000, closeButton: false })}>
57
- Success with duration
58
- </button>
59
- </>
60
- );
61
- }
62
- ```
63
-
64
- ---
65
-
66
- ## Custom Auto-Close Duration
67
-
68
- You can now define a custom timeout per toast.
69
-
70
- | Usage Example | Description |
71
- | ----------------------------------------------- | ------------------------------------ |
72
- | `toast('Message')` | Default timeout |
73
- | `toast('Message', { duration: 1000 })` | Closes after 1000ms (1 second) |
74
- | `toast.success('Saved')` | Success toast |
75
- | `toast.success('Saved', { duration: 5000 })` | Success toast closes after 5 seconds |
76
- | `toast.error('Error', { closeButton: true })` | Error toast with close button |
77
- | `toast.warning('Warn', { closeButton: false })` | Warning without close button |
78
-
79
- > Per-toast options always override ToastContainer defaults.
80
-
81
- ### Example:
82
-
83
- ```jsx
84
- <button onClick={() => toast('This will close in 1 second', { duration: 1000 })}>
85
- Show 1s Toast
86
- </button>
87
-
88
- <button onClick={() => toast.success('Success - 5s', { duration: 5000 })}>
89
- Show 5s Success Toast
90
- </button>
91
- ```
92
-
93
- ---
94
-
95
- ## ToastContainer Props
96
-
97
- | Prop | Type | Default | Description |
98
- | ----------- | ------- | ------- | ------------------------------------------------- |
99
- | autoClose | number | 3000 | Default close time in milliseconds for all toasts |
100
- | closeButton | boolean | false | Close button visibility for all toasts |
101
-
102
- Usage:
103
-
104
- ```jsx
105
- <ToastContainer autoClose={3000} closeButton={false} /> // Default
106
- ```
107
-
108
- ---
109
-
110
- ## Available Toast Variants
111
-
112
- ```js
113
- toast('Default message');
114
- toast.success('Success message');
115
- toast.error('Error occurred');
116
- toast.warning('Warning message');
117
- ```
118
-
119
- ---
120
-
121
- ## Contributing
122
-
123
- Contributions are welcome. You can:
124
-
125
- - Report issues
126
- - Suggest features
127
- - Submit pull requests
128
- - Improve documentation or code quality
129
-
130
- Repository: [https://github.com/sudhucodes/react-toast-msg](https://github.com/sudhucodes/react-toast-msg)
131
-
132
- ---
133
-
134
- ## License
135
-
136
- react-toast-msg is [MIT licensed](./LICENSE).
137
-
138
- ---
139
-
140
- <p align="center"> <sub>© 2025 SudhuCodes — All rights reserved.</sub> </p>
11
+ Learn more: [Documentation](https://rtm.sudhucodes.com/docs)
package/dist/index.d.mts CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
 
3
- type ToastType = 'success' | 'error' | 'warning' | 'default';
3
+ type ToastType = 'success' | 'error' | 'warning' | 'default' | 'loading';
4
4
  type ToastOptions = {
5
+ id?: string | number;
5
6
  type?: ToastType;
6
7
  duration?: number;
7
8
  closeButton?: boolean;
@@ -12,11 +13,17 @@ interface ToastContainerProps {
12
13
  }
13
14
 
14
15
  declare function ToastContainer({ autoClose, closeButton }: ToastContainerProps): react_jsx_runtime.JSX.Element;
15
- declare function toast(message: string, options?: ToastOptions): void;
16
+ declare function toast(message: string, options?: ToastOptions): string | number | undefined;
16
17
  declare namespace toast {
17
- var success: (message: string, options?: ToastOptions) => void;
18
- var error: (message: string, options?: ToastOptions) => void;
19
- var warning: (message: string, options?: ToastOptions) => void;
18
+ var success: (message: string, options?: ToastOptions) => string | number | undefined;
19
+ var error: (message: string, options?: ToastOptions) => string | number | undefined;
20
+ var warning: (message: string, options?: ToastOptions) => string | number | undefined;
21
+ var loading: (message: string, options?: ToastOptions) => string | number | undefined;
22
+ var promise: <T>(promise: Promise<T>, data: {
23
+ loading: string;
24
+ success: string | ((data: T) => string);
25
+ error: string | ((err: unknown) => string);
26
+ }, options?: ToastOptions) => Promise<T>;
20
27
  }
21
28
 
22
29
  export { ToastContainer, type ToastType, toast };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
 
3
- type ToastType = 'success' | 'error' | 'warning' | 'default';
3
+ type ToastType = 'success' | 'error' | 'warning' | 'default' | 'loading';
4
4
  type ToastOptions = {
5
+ id?: string | number;
5
6
  type?: ToastType;
6
7
  duration?: number;
7
8
  closeButton?: boolean;
@@ -12,11 +13,17 @@ interface ToastContainerProps {
12
13
  }
13
14
 
14
15
  declare function ToastContainer({ autoClose, closeButton }: ToastContainerProps): react_jsx_runtime.JSX.Element;
15
- declare function toast(message: string, options?: ToastOptions): void;
16
+ declare function toast(message: string, options?: ToastOptions): string | number | undefined;
16
17
  declare namespace toast {
17
- var success: (message: string, options?: ToastOptions) => void;
18
- var error: (message: string, options?: ToastOptions) => void;
19
- var warning: (message: string, options?: ToastOptions) => void;
18
+ var success: (message: string, options?: ToastOptions) => string | number | undefined;
19
+ var error: (message: string, options?: ToastOptions) => string | number | undefined;
20
+ var warning: (message: string, options?: ToastOptions) => string | number | undefined;
21
+ var loading: (message: string, options?: ToastOptions) => string | number | undefined;
22
+ var promise: <T>(promise: Promise<T>, data: {
23
+ loading: string;
24
+ success: string | ((data: T) => string);
25
+ error: string | ((err: unknown) => string);
26
+ }, options?: ToastOptions) => Promise<T>;
20
27
  }
21
28
 
22
29
  export { ToastContainer, type ToastType, toast };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- "use strict";var O=Object.create;var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var k=(t,e)=>{for(var s in e)d(t,s,{get:e[s],enumerable:!0})},b=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of S(e))!E.call(t,o)&&o!==s&&d(t,o,{get:()=>e[o],enumerable:!(r=R(e,o))||r.enumerable});return t};var F=(t,e,s)=>(s=t!=null?O(V(t)):{},b(e||!t||!t.__esModule?d(s,"default",{value:t,enumerable:!0}):s,t)),W=t=>b(d({},"__esModule",{value:!0}),t);var q={};k(q,{ToastContainer:()=>L,toast:()=>i});module.exports=W(q);var v=require("react");var f=require("react");var C=require("tailwind-merge"),Z=F(require("clsx"));function n(...t){return(0,C.twMerge)((0,Z.default)(t))}var c=require("react/jsx-runtime");function P({message:t,type:e="default",icon:s,leaving:r,setToasts:o,id:w,closeButton:T}){let[x,p]=(0,f.useState)(!1);(0,f.useEffect)(()=>{requestAnimationFrame(()=>p(!0))},[]);let m=()=>{p(!1),setTimeout(()=>{o==null||o(h=>h.filter(a=>a.id!==w))},300)};return(0,c.jsxs)("div",{className:n("pointer-events-auto relative flex max-w-80 min-w-62 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-sm text-zinc-800 transition-all duration-300 ease-out",x&&!r?"translate-y-0 opacity-100":"translate-y-10 opacity-0",e==="default"?"px-4":"px-3"),children:[s,t,T&&(0,c.jsx)("button",{onClick:m,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:(0,c.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:(0,c.jsx)("path",{d:"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z"})})})]})}var l=require("react/jsx-runtime"),z=({className:t})=>(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-5.5",t),height:24,width:24,children:(0,l.jsx)("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"})}),M=({className:t})=>(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-5.5",t),height:24,width:24,children:(0,l.jsx)("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),N=({className:t})=>(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-5.5",t),height:24,width:24,children:(0,l.jsx)("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})});var g=require("react/jsx-runtime");function B(t){switch(t){case"success":return(0,g.jsx)(z,{});case"error":return(0,g.jsx)(M,{});case"warning":return(0,g.jsx)(N,{});default:return null}}var I=require("react/jsx-runtime"),y=null;function L({autoClose:t=3e3,closeButton:e=!1}){let[s,r]=(0,v.useState)([]);return(0,v.useEffect)(()=>{y=(o,w={})=>{let{type:T="default",duration:x,closeButton:p}=w,m=Date.now(),h=x||t;r(a=>[...a,{id:m,message:o,type:T,leaving:!1,closeButton:p!=null?p:e}]),setTimeout(()=>{r(a=>a.map(u=>u.id===m?{...u,leaving:!0}:u)),setTimeout(()=>{r(a=>a.filter(u=>u.id!==m))},300)},h)}},[t,e]),(0,I.jsx)("div",{className:n("pointer-events-none fixed inset-0 z-9999 flex flex-col items-end justify-end gap-2 p-4 text-sm"),children:s.map(o=>(0,I.jsx)(P,{id:o.id,message:o.message,setToasts:r,type:o.type,icon:B(o.type),leaving:o.leaving,closeButton:o.closeButton},o.id))})}function i(t,e){y&&y(t,e)}i.success=(t,e)=>i(t,{...e,type:"success"});i.error=(t,e)=>i(t,{...e,type:"error"});i.warning=(t,e)=>i(t,{...e,type:"warning"});0&&(module.exports={ToastContainer,toast});
2
+ "use strict";var B=Object.create;var v=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var F=(t,e)=>{for(var n in e)v(t,n,{get:e[n],enumerable:!0})},L=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of E(e))!D.call(t,o)&&o!==n&&v(t,o,{get:()=>e[o],enumerable:!(i=V(e,o))||i.enumerable});return t};var H=(t,e,n)=>(n=t!=null?B(W(t)):{},L(e||!t||!t.__esModule?v(n,"default",{value:t,enumerable:!0}):n,t)),q=t=>L(v({},"__esModule",{value:!0}),t);var A={};F(A,{ToastContainer:()=>R,toast:()=>r});module.exports=q(A);var x=require("react");var T=require("react");var P=require("tailwind-merge"),z=H(require("clsx"));function l(...t){return(0,P.twMerge)((0,z.default)(t))}var d=require("react/jsx-runtime");function C({message:t,type:e="default",icon:n,leaving:i,setToasts:o,id:p,closeButton:m}){let[y,a]=(0,T.useState)(!1);(0,T.useEffect)(()=>{requestAnimationFrame(()=>a(!0))},[]);let f=()=>{a(!1),setTimeout(()=>{o==null||o(c=>c.filter(I=>I.id!==p))},300)};return(0,d.jsxs)("div",{className:l("pointer-events-auto relative flex max-w-80 min-w-62 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-sm text-zinc-800 transition-all duration-300 ease-out",y&&!i?"translate-y-0 opacity-100":"translate-y-10 opacity-0",e==="default"?"px-4":"px-3"),children:[n,t,m&&(0,d.jsx)("button",{onClick:f,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:(0,d.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:(0,d.jsx)("path",{d:"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z"})})})]})}var s=require("react/jsx-runtime"),Z=({className:t})=>(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:l("size-5.5",t),height:24,width:24,children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"})}),k=({className:t})=>(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:l("size-5.5",t),height:24,width:24,children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),N=({className:t})=>(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:l("size-5.5",t),height:24,width:24,children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),O=({className:t})=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:l("size-5.5 animate-spin",t),children:[(0,s.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),(0,s.jsx)("path",{d:"M12 6l0 -3"}),(0,s.jsx)("path",{d:"M16.25 7.75l2.15 -2.15"}),(0,s.jsx)("path",{d:"M18 12l3 0"}),(0,s.jsx)("path",{d:"M16.25 16.25l2.15 2.15"}),(0,s.jsx)("path",{d:"M12 18l0 3"}),(0,s.jsx)("path",{d:"M7.75 16.25l-2.15 2.15"}),(0,s.jsx)("path",{d:"M6 12l-3 0"}),(0,s.jsx)("path",{d:"M7.75 7.75l-2.15 -2.15"})]});var h=require("react/jsx-runtime");function S(t){switch(t){case"success":return(0,h.jsx)(Z,{});case"error":return(0,h.jsx)(k,{});case"warning":return(0,h.jsx)(N,{});case"loading":return(0,h.jsx)(O,{});default:return null}}var b=require("react/jsx-runtime"),M=null;function R({autoClose:t=3e3,closeButton:e=!1}){let[n,i]=(0,x.useState)([]);return(0,x.useEffect)(()=>{M=(o,p={})=>{let{type:m="default",duration:y,closeButton:a,id:f}=p,c=f!=null?f:Date.now(),I=y||t;return i(g=>g.find(w=>w.id===c)?g.map(w=>w.id===c?{...w,message:o,type:m,leaving:!1,closeButton:a!=null?a:e}:w):[...g,{id:c,message:o,type:m,leaving:!1,closeButton:a!=null?a:e}]),m!=="loading"&&setTimeout(()=>{i(g=>g.map(u=>u.id===c?{...u,leaving:!0}:u)),setTimeout(()=>{i(g=>g.filter(u=>u.id!==c))},300)},I),c}},[t,e]),(0,b.jsx)("div",{className:l("pointer-events-none fixed inset-0 z-9999 flex flex-col items-end justify-end gap-2 p-4 text-sm"),children:n.map(o=>(0,b.jsx)(C,{id:o.id,message:o.message,setToasts:i,type:o.type,icon:S(o.type),leaving:o.leaving,closeButton:o.closeButton},o.id))})}function r(t,e){if(M)return M(t,e)}r.success=(t,e)=>r(t,{...e,type:"success"});r.error=(t,e)=>r(t,{...e,type:"error"});r.warning=(t,e)=>r(t,{...e,type:"warning"});r.loading=(t,e)=>r(t,{...e,type:"loading"});r.promise=(t,e,n)=>{let i=Date.now().toString()+Math.random().toString(36).substring(2);return r(e.loading,{...n,type:"loading",id:i,duration:1/0}),t.then(o=>{let p=typeof e.success=="function"?e.success(o):e.success;r(p,{...n,type:"success",id:i})}).catch(o=>{let p=typeof e.error=="function"?e.error(o):e.error;r(p,{...n,type:"error",id:i})}),t};0&&(module.exports={ToastContainer,toast});
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useState as B,useEffect as L}from"react";import{useEffect as z,useState as M}from"react";import{twMerge as Z}from"tailwind-merge";import P from"clsx";function s(...t){return Z(P(t))}import{jsx as v,jsxs as N}from"react/jsx-runtime";function x({message:t,type:o="default",icon:m,leaving:i,setToasts:e,id:u,closeButton:d}){let[f,a]=M(!1);z(()=>{requestAnimationFrame(()=>a(!0))},[]);let p=()=>{a(!1),setTimeout(()=>{e==null||e(g=>g.filter(r=>r.id!==u))},300)};return N("div",{className:s("pointer-events-auto relative flex max-w-80 min-w-62 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-sm text-zinc-800 transition-all duration-300 ease-out",f&&!i?"translate-y-0 opacity-100":"translate-y-10 opacity-0",o==="default"?"px-4":"px-3"),children:[m,t,d&&v("button",{onClick:p,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:v("path",{d:"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z"})})})]})}import{jsx as l}from"react/jsx-runtime";var h=({className:t})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:s("size-5.5",t),height:24,width:24,children:l("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"})}),y=({className:t})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:s("size-5.5",t),height:24,width:24,children:l("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),I=({className:t})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:s("size-5.5",t),height:24,width:24,children:l("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})});import{jsx as w}from"react/jsx-runtime";function b(t){switch(t){case"success":return w(h,{});case"error":return w(y,{});case"warning":return w(I,{});default:return null}}import{jsx as C}from"react/jsx-runtime";var T=null;function O({autoClose:t=3e3,closeButton:o=!1}){let[m,i]=B([]);return L(()=>{T=(e,u={})=>{let{type:d="default",duration:f,closeButton:a}=u,p=Date.now(),g=f||t;i(r=>[...r,{id:p,message:e,type:d,leaving:!1,closeButton:a!=null?a:o}]),setTimeout(()=>{i(r=>r.map(c=>c.id===p?{...c,leaving:!0}:c)),setTimeout(()=>{i(r=>r.filter(c=>c.id!==p))},300)},g)}},[t,o]),C("div",{className:s("pointer-events-none fixed inset-0 z-9999 flex flex-col items-end justify-end gap-2 p-4 text-sm"),children:m.map(e=>C(x,{id:e.id,message:e.message,setToasts:i,type:e.type,icon:b(e.type),leaving:e.leaving,closeButton:e.closeButton},e.id))})}function n(t,o){T&&T(t,o)}n.success=(t,o)=>n(t,{...o,type:"success"});n.error=(t,o)=>n(t,{...o,type:"error"});n.warning=(t,o)=>n(t,{...o,type:"warning"});export{O as ToastContainer,n as toast};
2
+ import{useState as R,useEffect as B}from"react";import{useEffect as k,useState as N}from"react";import{twMerge as C}from"tailwind-merge";import Z from"clsx";function a(...t){return C(Z(t))}import{jsx as T,jsxs as O}from"react/jsx-runtime";function y({message:t,type:e="default",icon:c,leaving:r,setToasts:o,id:p,closeButton:d}){let[h,i]=N(!1);k(()=>{requestAnimationFrame(()=>i(!0))},[]);let m=()=>{i(!1),setTimeout(()=>{o==null||o(l=>l.filter(v=>v.id!==p))},300)};return O("div",{className:a("pointer-events-auto relative flex max-w-80 min-w-62 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-sm text-zinc-800 transition-all duration-300 ease-out",h&&!r?"translate-y-0 opacity-100":"translate-y-10 opacity-0",e==="default"?"px-4":"px-3"),children:[c,t,d&&T("button",{onClick:m,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:T("path",{d:"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z"})})})]})}import{jsx as s,jsxs as S}from"react/jsx-runtime";var I=({className:t})=>s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:a("size-5.5",t),height:24,width:24,children:s("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"})}),M=({className:t})=>s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:a("size-5.5",t),height:24,width:24,children:s("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),b=({className:t})=>s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:a("size-5.5",t),height:24,width:24,children:s("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"})}),L=({className:t})=>S("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:a("size-5.5 animate-spin",t),children:[s("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s("path",{d:"M12 6l0 -3"}),s("path",{d:"M16.25 7.75l2.15 -2.15"}),s("path",{d:"M18 12l3 0"}),s("path",{d:"M16.25 16.25l2.15 2.15"}),s("path",{d:"M12 18l0 3"}),s("path",{d:"M7.75 16.25l-2.15 2.15"}),s("path",{d:"M6 12l-3 0"}),s("path",{d:"M7.75 7.75l-2.15 -2.15"})]});import{jsx as w}from"react/jsx-runtime";function P(t){switch(t){case"success":return w(I,{});case"error":return w(M,{});case"warning":return w(b,{});case"loading":return w(L,{});default:return null}}import{jsx as z}from"react/jsx-runtime";var x=null;function V({autoClose:t=3e3,closeButton:e=!1}){let[c,r]=R([]);return B(()=>{x=(o,p={})=>{let{type:d="default",duration:h,closeButton:i,id:m}=p,l=m!=null?m:Date.now(),v=h||t;return r(g=>g.find(f=>f.id===l)?g.map(f=>f.id===l?{...f,message:o,type:d,leaving:!1,closeButton:i!=null?i:e}:f):[...g,{id:l,message:o,type:d,leaving:!1,closeButton:i!=null?i:e}]),d!=="loading"&&setTimeout(()=>{r(g=>g.map(u=>u.id===l?{...u,leaving:!0}:u)),setTimeout(()=>{r(g=>g.filter(u=>u.id!==l))},300)},v),l}},[t,e]),z("div",{className:a("pointer-events-none fixed inset-0 z-9999 flex flex-col items-end justify-end gap-2 p-4 text-sm"),children:c.map(o=>z(y,{id:o.id,message:o.message,setToasts:r,type:o.type,icon:P(o.type),leaving:o.leaving,closeButton:o.closeButton},o.id))})}function n(t,e){if(x)return x(t,e)}n.success=(t,e)=>n(t,{...e,type:"success"});n.error=(t,e)=>n(t,{...e,type:"error"});n.warning=(t,e)=>n(t,{...e,type:"warning"});n.loading=(t,e)=>n(t,{...e,type:"loading"});n.promise=(t,e,c)=>{let r=Date.now().toString()+Math.random().toString(36).substring(2);return n(e.loading,{...c,type:"loading",id:r,duration:1/0}),t.then(o=>{let p=typeof e.success=="function"?e.success(o):e.success;n(p,{...c,type:"success",id:r})}).catch(o=>{let p=typeof e.error=="function"?e.error(o):e.error;n(p,{...c,type:"error",id:r})}),t};export{V as ToastContainer,n as toast};
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "react-toast-msg",
3
- "version": "2.5.6",
3
+ "version": "2.5.8",
4
4
  "description": "A lightweight, customizable React toast notification library with zero-config and fast setup.",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
8
8
  "scripts": {
9
- "dev": "tsup --watch",
9
+ "dev": "tsup --watch ./src",
10
10
  "prettier": "prettier --write src",
11
11
  "build": "pnpm build:ts && pnpm build:css",
12
12
  "build:ts": "tsup",
@@ -60,7 +60,6 @@
60
60
  },
61
61
  "dependencies": {
62
62
  "clsx": "^2.1.1",
63
- "docstra": "^1.9.7",
64
63
  "tailwind-merge": "^3.4.0"
65
64
  }
66
65
  }