d9-toast 2.6.45 → 3.6.47

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.
@@ -0,0 +1,69 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ type ToastType = "default" | "success" | "error" | "info" | "warning" | "loading" | "submit";
5
+ type ToastTheme = "light" | "dark" | "colored";
6
+ type ToastPosition = "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center" | "center-top" | "center-bottom";
7
+ interface ToastAction {
8
+ text: string;
9
+ className?: string;
10
+ callback?: (toast: {
11
+ id: string;
12
+ }) => void;
13
+ }
14
+ interface ToastAudioOptions {
15
+ enabled?: boolean;
16
+ volume?: number;
17
+ audioFile?: string;
18
+ cooldown?: number;
19
+ }
20
+ interface ToastOptions {
21
+ message?: string | React.ReactNode;
22
+ type?: ToastType;
23
+ duration?: number;
24
+ position?: ToastPosition;
25
+ theme?: ToastTheme;
26
+ actions?: ToastAction[];
27
+ className?: string;
28
+ title?: boolean;
29
+ progress?: boolean;
30
+ closable?: boolean;
31
+ autoClose?: boolean;
32
+ pauseOnHover?: boolean;
33
+ pauseOnFocusLoss?: boolean;
34
+ rtl?: boolean;
35
+ expand?: boolean | "hover";
36
+ audio?: ToastAudioOptions;
37
+ }
38
+ interface PromiseMessages<T> {
39
+ loading: string | React.ReactNode;
40
+ success: string | React.ReactNode | ((value: T) => string | React.ReactNode);
41
+ error: string | React.ReactNode | ((error: any) => string | React.ReactNode);
42
+ }
43
+ interface ToastCallable {
44
+ (message: string | React.ReactNode, options?: ToastOptions): string | undefined;
45
+ sounds: {
46
+ default: string;
47
+ success: string;
48
+ warning: string;
49
+ error: string;
50
+ info: string;
51
+ };
52
+ success(message: string | React.ReactNode, options?: ToastOptions): string | undefined;
53
+ error(message: string | React.ReactNode, options?: ToastOptions): string | undefined;
54
+ info(message: string | React.ReactNode, options?: ToastOptions): string | undefined;
55
+ warning(message: string | React.ReactNode, options?: ToastOptions): string | undefined;
56
+ promise<T>(promise: Promise<T> | (() => Promise<T>), messages: PromiseMessages<T>, options?: ToastOptions): Promise<T>;
57
+ dismiss(id: string): void;
58
+ dismissAll(): void;
59
+ }
60
+ interface ToastProviderProps {
61
+ children: React.ReactNode;
62
+ }
63
+
64
+ declare const toast: ToastCallable;
65
+ declare const ToastProvider: React__default.FC<{
66
+ children: React__default.ReactNode;
67
+ }>;
68
+
69
+ export { type ToastAction, type ToastAudioOptions, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastTheme, type ToastType, toast };
package/dist/index.js CHANGED
@@ -1 +1,3 @@
1
- export { ToastProvider, toast } from "./ToastContext.js";
1
+ import ke,{memo,useState,useRef,useEffect,useMemo,useCallback}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var te=s=>s.startsWith("top")?"top":s.startsWith("bottom")?"bottom":s==="center"?"center":s==="center-top"?"top":s==="center-bottom"?"bottom":"top",G=20,oe=(s,r,l)=>Math.abs(l)<Math.abs(r)?false:s.startsWith("top")?l<-G:s.startsWith("bottom")?l>G:s.startsWith("center")?Math.abs(l)>G:false;var be=({name:s,className:r=" "})=>{var a;return (a={success:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{fontSize:"20px",backgroundColor:"transparent",flexShrink:0},children:jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 1.25C6.063 1.25 1.25 6.063 1.25 12S6.063 22.75 12 22.75S22.75 17.937 22.75 12S17.937 1.25 12 1.25M7.53 11.97a.75.75 0 0 0-1.06 1.06l3 3a.75.75 0 0 0 1.06 0l7-7a.75.75 0 0 0-1.06-1.06L10 14.44z",clipRule:"evenodd"})}),error:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsx("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1 4h-2v-2h2z"})}),info:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11s11-4.925 11-11S18.075 1 12 1m-.5 5a1 1 0 1 0 0 2h.5a1 1 0 1 0 0-2zM10 10a1 1 0 1 0 0 2h1v3h-1a1 1 0 1 0 0 2h4a1 1 0 1 0 0-2h-1v-4a1 1 0 0 0-1-1z",clipRule:"evenodd"})}),warning:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.616 3.642c1.058-1.839 3.71-1.839 4.768 0l8.043 13.988c1.054 1.833-.27 4.12-2.384 4.12H3.957c-2.115 0-3.438-2.287-2.384-4.12zM12 8.25a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75m.568 9.25a.75.75 0 0 0-1.115-1.003l-.01.011a.75.75 0 0 0 1.114 1.004z",clipRule:"evenodd"})}),loading:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",children:[jsxs("path",{strokeDasharray:"16",strokeDashoffset:"16",d:"M12 3c4.97 0 9 4.03 9 9",children:[jsx("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"0.3s",values:"16;0"}),jsx("animateTransform",{attributeName:"transform",dur:"1.5s",repeatCount:"indefinite",type:"rotate",values:"0 12 12;360 12 12"})]}),jsx("path",{strokeDasharray:"64",strokeDashoffset:"64",strokeOpacity:".3",d:"M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9Z",children:jsx("animate",{fill:"freeze",attributeName:"stroke-dashoffset",dur:"1.2s",values:"64;0"})})]})}),submit:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",children:[jsx("path",{strokeDasharray:"2 4",strokeDashoffset:"6",d:"M12 21c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9",children:jsx("animate",{attributeName:"stroke-dashoffset",dur:"0.6s",repeatCount:"indefinite",values:"6;0"})}),jsx("path",{strokeDasharray:"32",strokeDashoffset:"32",d:"M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9",children:jsx("animate",{fill:"freeze",attributeName:"stroke-dashoffset",begin:"0.1s",dur:"0.4s",values:"32;0"})}),jsx("path",{strokeDasharray:"10",strokeDashoffset:"10",d:"M12 16v-7.5",children:jsx("animate",{fill:"freeze",attributeName:"stroke-dashoffset",begin:"0.5s",dur:"0.2s",values:"10;0"})}),jsx("path",{strokeDasharray:"6",strokeDashoffset:"6",d:"M12 8.5l3.5 3.5M12 8.5l-3.5 3.5",children:jsx("animate",{fill:"freeze",attributeName:"stroke-dashoffset",begin:"0.7s",dur:"0.2s",values:"6;0"})})]})}),X:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em",className:r,style:{backgroundColor:"transparent",fontSize:"20px",flexShrink:0},children:jsxs("g",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",children:[jsx("path",{d:"M5.47 5.47a.75.75 0 0 1 1.06 0l12 12a.75.75 0 1 1-1.06 1.06l-12-12a.75.75 0 0 1 0-1.06"}),jsx("path",{d:"M18.53 5.47a.75.75 0 0 1 0 1.06l-12 12a.75.75 0 0 1-1.06-1.06l12-12a.75.75 0 0 1 1.06 0"})]})})}[s])!=null?a:null},X=memo(be);var xe=({id:s,message:r,stackIndex:l=0,type:a="success",theme:f="light",position:T="top-right",className:p="",rtl:U=false,expand:Y=false,duration:E=3e3,actions:k=[],remove:x,isStackHovered:A,progress:P=false,autoClose:w=true,closable:z=false,title:$=false,pauseOnHover:o=true,pauseOnFocusLoss:t=true})=>{let[e,c]=useState(false),[y,h]=useState(false),[S,J]=useState("enter"),C=useRef(null),I=useRef(0),L=useRef(0),N=useRef(0),R=useRef(0);useEffect(()=>{h(true);},[]);let v=Y==="hover"?A:Y,B=a==="error"?"alert":"status",W=useMemo(()=>te(T),[T]),V=S==="exit"?`toast--exit-${W}`:`toast--enter-${W}`,M=useCallback(()=>{S!=="exit"&&(J("exit"),C.current=setTimeout(()=>x(),350));},[x,S]),Z=useCallback(()=>{w&&c(true);},[w]),q=useCallback(()=>{w&&c(false);},[w]),de=useCallback(d=>{let m=d.touches[0];I.current=m.clientX,L.current=m.clientY;},[]),me=useCallback(d=>{let m=d.touches[0];N.current=m.clientX-I.current,R.current=m.clientY-L.current;},[]),fe=useCallback(()=>{!v&&l>0||(oe(T,N.current,R.current)&&M(),N.current=0,R.current=0);},[T,v,l,M]),pe=useMemo(()=>k.length===0?null:k.slice(0,2).map((d,m)=>{let ge=k.length===1?`action-btnA__${a}`:m===0?`action-btnB__${a}`:`action-btnA__${a}`,Te=`action-btn ${f==="colored"?f:ge} ${d.className||""}`.trim();return jsx("button",{"aria-label":`Action ${d.text}`,onClick:()=>{var ee;return (ee=d.callback)==null?void 0:ee.call(d,{id:s})},className:Te,children:d.text},m)}),[k,a,s,f]),he=o?Z:void 0,ve=o?q:void 0;return useEffect(()=>{if(typeof window=="undefined")return;let d=()=>t&&Z(),m=()=>t&&q();return t&&(window.addEventListener("blur",d),window.addEventListener("focus",m)),()=>{C.current&&clearTimeout(C.current),t&&(window.removeEventListener("blur",d),window.removeEventListener("focus",m));}},[t,Z,q]),y?jsx("div",{className:`toastWrapper ${v?"expanded":"stacked"} ${V}`,dir:U?"rtl":"ltr",style:{bottom:T.includes("bottom")&&!v?"0%":"",zIndex:100-l,pointerEvents:"none"},children:jsxs("div",{"data-stack":v?0:l,role:B,"aria-live":B==="alert"?"assertive":"polite","aria-atomic":"true",tabIndex:0,"aria-hidden":!v&&l>0,style:{pointerEvents:S==="exit"?"none":"auto"},className:`d9-toast toast ${f==="colored"?a:f} ${p}`,onMouseEnter:he,onMouseLeave:ve,onTouchStart:de,onTouchMove:me,onTouchEnd:fe,children:[$&&jsxs("div",{className:`toastHeader ${a}`,children:[jsxs("div",{className:"title",children:[a!=="default"&&jsx(X,{name:a||"success"})," ",jsx("p",{children:a.toUpperCase()})]}),z&&jsx("button",{className:"close-button","aria-label":"Close button",onClick:()=>M(),children:jsx(X,{name:"X"})})]}),typeof r=="string"?jsxs("div",{className:"toast-message__container",children:[jsxs("div",{className:"toast-message",children:[!$&&a!=="default"&&jsx(X,{name:a||"success",className:a}),jsx("p",{children:r||"No messages"})]}),z&&!$&&jsx("button",{className:"close-button","aria-label":"Close button",onClick:()=>M(),children:jsx(X,{name:"X"})})]}):jsx("div",{style:{padding:"4px"},children:r||"No messages"}),k.length>0&&jsx("div",{className:"toastActions",children:pe}),E!==0&&w&&jsx("div",{className:`progress-container ${a}`,style:{opacity:P?1:0,height:P?"4px":"0px",transition:"opacity 0.2s ease"},children:jsx("div",{className:`toast-progress ${a}`,onAnimationEnd:M,style:{animationDuration:`${E}ms`,animationPlayState:e?"paused":"running",transformOrigin:U?"right":"left"}})})]})}):null},ne=ke.memo(xe);var ue={default:"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/default.mp3",success:"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/success.mp3",warning:"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/warning.mp3",error:"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/errors.mp3",info:"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/info.mp3"},ce={},O={audioFile:ue.default,volume:.6,enabled:true,cooldown:500},i=null,j=()=>{console.warn("D9-Toast: ToastProvider is not mounted. Ensure it wraps your app.");},g=((s,r={})=>i?i.showToast({type:"default",title:false,progress:false,duration:3e3,message:s,...r}):j());g.sounds=ue;g.success=(s,r={})=>i?i.showToast({type:"success",message:s,...r}):j();g.error=(s,r={})=>i?i.showToast({type:"error",message:s,...r}):j();g.info=(s,r={})=>i?i.showToast({type:"info",message:s,...r}):j();g.warning=(s,r={})=>i?i.showToast({type:"warning",message:s,...r}):j();g.promise=(s,r,l={})=>{let a={loading:"Loading...",success:"Success",error:"Error"},f=r!=null?r:a;return i?i.promiseToast(s,f,l):Promise.reject(new Error("D9-Toast: ToastProvider is not mounted. Ensure it wraps your app."))};g.dismiss=s=>i==null?void 0:i.removeToast(s);g.dismissAll=()=>i==null?void 0:i.removeToastAll();var ye=g,Me=({children:s})=>{let[r,l]=useState([]),[a,f]=useState(false),T=useRef(0),p=useRef(null),U=useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{f(true);},50);},[]),Y=useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{f(false);},50);},[]);useEffect(()=>()=>{p.current&&clearTimeout(p.current);},[]);let E=useCallback(({audioFile:o,volume:t=.6})=>{if(!(!o||typeof window=="undefined"))try{let e=ce[o];e||(e=new Audio(o),e.preload="auto",ce[o]=e),e.currentTime=0,e.volume=t,e.play().catch(()=>{});}catch(e){console.error("Audio play error:",e);}},[]),k=()=>{var o,t;return typeof crypto!="undefined"&&crypto.randomUUID?(t=(o=crypto.randomUUID)==null?void 0:o.call(crypto))!=null?t:`${Date.now()}-${Math.random()}`:Date.now().toString()+Math.random().toString(36)},x=useCallback(o=>{var C,I,L,N,R,v,B,W,V;let t={id:k(),...o,audio:{enabled:(I=(C=o.audio)==null?void 0:C.enabled)!=null?I:O.enabled,volume:(N=(L=o.audio)==null?void 0:L.volume)!=null?N:O.volume,audioFile:(v=(R=o.audio)==null?void 0:R.audioFile)!=null?v:O.audioFile,cooldown:(W=(B=o.audio)==null?void 0:B.cooldown)!=null?W:O.cooldown}};l(M=>[t,...M].slice(0,4));let{audio:e,type:c}=t,y=Date.now(),h=Number((V=e==null?void 0:e.cooldown)!=null?V:O.cooldown),S=y-T.current>=h,J=c==="error";return e!=null&&e.enabled&&(e!=null&&e.audioFile)&&(S||J)&&(T.current=y,E({audioFile:e.audioFile,volume:e.volume})),t==null?void 0:t.id},[E]),A=useCallback(o=>{l(t=>t.filter(c=>c.id!==o));},[]),P=useCallback((o,t)=>{l(e=>e.map(c=>c.id===o?{...c,...t}:c));},[]),w=useCallback((o,t,e={})=>{let c=x({type:"loading",message:t.loading,autoClose:false,...e}),y=typeof o=="function"?o():o;return Promise.resolve(y).then(h=>(P(c,{type:"success",message:typeof t.success=="function"?t.success(h):t.success,closable:true,autoClose:true,duration:3e3}),h)).catch(h=>{throw P(c,{type:"error",message:typeof t.error=="function"?t.error(h):t.error,closable:true,autoClose:true,duration:3e3}),h}),y},[x,P]),z=useCallback(()=>{l([]);},[]),$=r.reduce((o,t)=>{let e=t.position||"top-right";return o[e]||(o[e]=[]),o[e].push(t),o},{});return useEffect(()=>(i={showToast:x,removeToast:A,removeToastAll:z,promiseToast:w},()=>{i=null;}),[x,A,z,w]),jsxs(Fragment,{children:[s,Object.entries($).map(([o,t])=>jsx("div",{className:`toastViewport ${o}`,onMouseEnter:U,onMouseLeave:Y,children:jsx("div",{className:"toastContainer",children:t.map((e,c)=>jsx(ne,{...e,stackIndex:c,isStackHovered:a,remove:()=>A(e.id)},e.id))})},o))]})};
2
+ export{Me as ToastProvider,ye as toast};//# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ToastHelper.ts","../src/Icons.tsx","../src/Toast.tsx","../src/ToastContext.tsx"],"names":["getAnimationDirection","position","SWIPE_THRESHOLD","isSwipeAllowed","dx","dy","Icons","name","className","_a","jsx","jsxs","Icons_default","memo","Toast","id","message","stackIndex","type","theme","rtl","expand","duration","actions","remove","isStackHovered","progress","autoClose","closable","title","pauseOnHover","pauseOnFocusLoss","isPaused","setIsPaused","useState","isMounted","setIsMounted","phase","setPhase","timeoutRef","useRef","touchStartX","touchStartY","touchDeltaX","touchDeltaY","useEffect","shouldExpand","ariaRole","direction","useMemo","animationClass","triggerExit","useCallback","handlePause","handleResume","onTouchStart","e","t","onTouchMove","onTouchEnd","actionButtons","a","idx","btnType","classNameStr","handleMouseEnter","handleMouseLeave","handleBlur","handleFocus","Toast_default","React","sounds","audioCache","audioSettings","toastRef","warn","toastBase","msg","opts","promise","messages","defaultMessages","finalMessages","toast","ToastProvider","children","toasts","setToasts","isHovering","setIsHovering","lastSoundTimeRef","hoverTimeoutRef","playAudio","audioFile","volume","audio","err","generateId","_b","showToast","_c","_d","_e","_f","_g","_h","_i","newToast","prev","now","cooldown","canPlaySound","bypassCooldown","removeToast","updateToast","updates","promiseToast","promiseOrFn","options","res","removeToastAll","groupedToasts","acc","Fragment","positionToasts","index"],"mappings":"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","file":"index.js","sourcesContent":["import { ToastPosition } from \"./types\";\r\n\r\ntype AnimationDirection = \"top\" | \"bottom\" | \"center\";\r\n\r\nexport const getAnimationDirection = (\r\n position: ToastPosition,\r\n): AnimationDirection => {\r\n if (position.startsWith(\"top\")) return \"top\";\r\n if (position.startsWith(\"bottom\")) return \"bottom\";\r\n\r\n if (position === \"center\") return \"center\";\r\n if (position === \"center-top\") return \"top\";\r\n if (position === \"center-bottom\") return \"bottom\";\r\n\r\n return \"top\";\r\n};\r\n\r\nconst SWIPE_THRESHOLD = 20;\r\n\r\nexport const isSwipeAllowed = (\r\n position: ToastPosition,\r\n dx: number,\r\n dy: number,\r\n): boolean => {\r\n if (Math.abs(dy) < Math.abs(dx)) return false;\r\n\r\n if (position.startsWith(\"top\")) return dy < -SWIPE_THRESHOLD;\r\n if (position.startsWith(\"bottom\")) return dy > SWIPE_THRESHOLD;\r\n if (position.startsWith(\"center\")) return Math.abs(dy) > SWIPE_THRESHOLD;\r\n\r\n return false;\r\n};\r\n","\"use client\";\r\n\r\nimport { JSX, memo } from \"react\";\r\n\r\ntype IconsProp = {\r\n name: string;\r\n className?: string;\r\n};\r\n\r\nconst Icons = ({ name, className = \" \" }: IconsProp) => {\r\n const icons: Record<string, JSX.Element> = {\r\n success: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n fontSize: \"20px\",\r\n backgroundColor: \"transparent\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n fillRule=\"evenodd\"\r\n d=\"M12 1.25C6.063 1.25 1.25 6.063 1.25 12S6.063 22.75 12 22.75S22.75 17.937 22.75 12S17.937 1.25 12 1.25M7.53 11.97a.75.75 0 0 0-1.06 1.06l3 3a.75.75 0 0 0 1.06 0l7-7a.75.75 0 0 0-1.06-1.06L10 14.44z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n ),\r\n error: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1 4h-2v-2h2z\"\r\n />\r\n </svg>\r\n ),\r\n info: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n fillRule=\"evenodd\"\r\n d=\"M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11s11-4.925 11-11S18.075 1 12 1m-.5 5a1 1 0 1 0 0 2h.5a1 1 0 1 0 0-2zM10 10a1 1 0 1 0 0 2h1v3h-1a1 1 0 1 0 0 2h4a1 1 0 1 0 0-2h-1v-4a1 1 0 0 0-1-1z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n fillRule=\"evenodd\"\r\n d=\"M9.616 3.642c1.058-1.839 3.71-1.839 4.768 0l8.043 13.988c1.054 1.833-.27 4.12-2.384 4.12H3.957c-2.115 0-3.438-2.287-2.384-4.12zM12 8.25a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75m.568 9.25a.75.75 0 0 0-1.115-1.003l-.01.011a.75.75 0 0 0 1.114 1.004z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n ),\r\n loading: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <g\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth=\"2\"\r\n >\r\n <path\r\n strokeDasharray=\"16\"\r\n strokeDashoffset=\"16\"\r\n d=\"M12 3c4.97 0 9 4.03 9 9\"\r\n >\r\n <animate\r\n fill=\"freeze\"\r\n attributeName=\"stroke-dashoffset\"\r\n dur=\"0.3s\"\r\n values=\"16;0\"\r\n />\r\n <animateTransform\r\n attributeName=\"transform\"\r\n dur=\"1.5s\"\r\n repeatCount=\"indefinite\"\r\n type=\"rotate\"\r\n values=\"0 12 12;360 12 12\"\r\n />\r\n </path>\r\n <path\r\n strokeDasharray=\"64\"\r\n strokeDashoffset=\"64\"\r\n strokeOpacity=\".3\"\r\n d=\"M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9Z\"\r\n >\r\n <animate\r\n fill=\"freeze\"\r\n attributeName=\"stroke-dashoffset\"\r\n dur=\"1.2s\"\r\n values=\"64;0\"\r\n />\r\n </path>\r\n </g>\r\n </svg>\r\n ),\r\n submit: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <g\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth=\"2\"\r\n >\r\n <path\r\n strokeDasharray=\"2 4\"\r\n strokeDashoffset=\"6\"\r\n d=\"M12 21c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9\"\r\n >\r\n <animate\r\n attributeName=\"stroke-dashoffset\"\r\n dur=\"0.6s\"\r\n repeatCount=\"indefinite\"\r\n values=\"6;0\"\r\n />\r\n </path>\r\n <path\r\n strokeDasharray=\"32\"\r\n strokeDashoffset=\"32\"\r\n d=\"M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9\"\r\n >\r\n <animate\r\n fill=\"freeze\"\r\n attributeName=\"stroke-dashoffset\"\r\n begin=\"0.1s\"\r\n dur=\"0.4s\"\r\n values=\"32;0\"\r\n />\r\n </path>\r\n <path strokeDasharray=\"10\" strokeDashoffset=\"10\" d=\"M12 16v-7.5\">\r\n <animate\r\n fill=\"freeze\"\r\n attributeName=\"stroke-dashoffset\"\r\n begin=\"0.5s\"\r\n dur=\"0.2s\"\r\n values=\"10;0\"\r\n />\r\n </path>\r\n <path\r\n strokeDasharray=\"6\"\r\n strokeDashoffset=\"6\"\r\n d=\"M12 8.5l3.5 3.5M12 8.5l-3.5 3.5\"\r\n >\r\n <animate\r\n fill=\"freeze\"\r\n attributeName=\"stroke-dashoffset\"\r\n begin=\"0.7s\"\r\n dur=\"0.2s\"\r\n values=\"6;0\"\r\n />\r\n </path>\r\n </g>\r\n </svg>\r\n ),\r\n X: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n className={className}\r\n style={{\r\n backgroundColor: \"transparent\",\r\n fontSize: \"20px\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <g fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\">\r\n <path d=\"M5.47 5.47a.75.75 0 0 1 1.06 0l12 12a.75.75 0 1 1-1.06 1.06l-12-12a.75.75 0 0 1 0-1.06\" />\r\n <path d=\"M18.53 5.47a.75.75 0 0 1 0 1.06l-12 12a.75.75 0 0 1-1.06-1.06l12-12a.75.75 0 0 1 1.06 0\" />\r\n </g>\r\n </svg>\r\n ),\r\n };\r\n\r\n return icons[name] ?? null;\r\n};\r\nexport default memo(Icons);\r\n","\"use client\";\r\n\r\nimport React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport { getAnimationDirection, isSwipeAllowed } from \"./ToastHelper\";\r\nimport Icons from \"./Icons\";\r\nimport { ToastOptions } from \"./types\";\r\n\r\ninterface ToastProp extends ToastOptions {\r\n id: string;\r\n stackIndex?: number;\r\n remove: () => void;\r\n isStackHovered: boolean;\r\n}\r\n\r\nconst Toast: React.FC<ToastProp> = ({\r\n id,\r\n message,\r\n stackIndex = 0,\r\n type = \"success\",\r\n theme = \"light\",\r\n position = \"top-right\",\r\n className = \"\",\r\n rtl = false,\r\n expand = false,\r\n duration = 3000,\r\n actions = [],\r\n remove,\r\n isStackHovered,\r\n progress = false,\r\n autoClose = true,\r\n closable = false,\r\n title = false,\r\n pauseOnHover = true,\r\n pauseOnFocusLoss = true,\r\n}) => {\r\n // const [exiting, setExiting] = useState(false);\r\n const [isPaused, setIsPaused] = useState(false);\r\n const [isMounted, setIsMounted] = useState(false);\r\n const [phase, setPhase] = useState<\"enter\" | \"exit\">(\"enter\");\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const touchStartX = useRef(0);\r\n const touchStartY = useRef(0);\r\n const touchDeltaX = useRef(0);\r\n const touchDeltaY = useRef(0);\r\n\r\n // For SSR Safety Guard.\r\n useEffect(() => {\r\n setIsMounted(true);\r\n }, []);\r\n\r\n const shouldExpand = expand === \"hover\" ? isStackHovered : expand;\r\n const ariaRole = type === \"error\" ? \"alert\" : \"status\";\r\n const direction = useMemo(() => getAnimationDirection(position), [position]);\r\n const animationClass =\r\n phase === \"exit\" ? `toast--exit-${direction}` : `toast--enter-${direction}`;\r\n\r\n // --- Helpers Fun ---\r\n\r\n // for exit\r\n const triggerExit = useCallback(() => {\r\n if (phase === \"exit\") return;\r\n setPhase(\"exit\");\r\n timeoutRef.current = setTimeout(() => remove(), 350); // Set and match exit animation duration.\r\n }, [remove, phase]);\r\n\r\n // for pause.\r\n const handlePause = useCallback(() => {\r\n if (autoClose) setIsPaused(true);\r\n }, [autoClose]);\r\n\r\n // for resume.\r\n const handleResume = useCallback(() => {\r\n if (autoClose) setIsPaused(false);\r\n }, [autoClose]);\r\n\r\n // Touch handlers...\r\n const onTouchStart = useCallback((e: React.TouchEvent) => {\r\n const t = e.touches[0];\r\n touchStartX.current = t.clientX;\r\n touchStartY.current = t.clientY;\r\n }, []);\r\n\r\n const onTouchMove = useCallback((e: React.TouchEvent) => {\r\n const t = e.touches[0];\r\n touchDeltaX.current = t.clientX - touchStartX.current;\r\n touchDeltaY.current = t.clientY - touchStartY.current;\r\n }, []);\r\n\r\n const onTouchEnd = useCallback(() => {\r\n if (!shouldExpand && stackIndex > 0) return;\r\n\r\n if (isSwipeAllowed(position, touchDeltaX.current, touchDeltaY.current)) {\r\n triggerExit();\r\n }\r\n\r\n touchDeltaX.current = 0;\r\n touchDeltaY.current = 0;\r\n }, [position, shouldExpand, stackIndex, triggerExit]);\r\n\r\n // Toast actions...\r\n const actionButtons = useMemo(() => {\r\n if (actions.length === 0) return null;\r\n\r\n return actions.slice(0, 2).map((a, idx) => {\r\n // Dynamic class names..\r\n const btnType =\r\n actions.length === 1\r\n ? `action-btnA__${type}`\r\n : idx === 0\r\n ? `action-btnB__${type}`\r\n : `action-btnA__${type}`;\r\n\r\n const classNameStr =\r\n `action-btn ${theme === \"colored\" ? theme : btnType} ${\r\n a.className || \"\"\r\n }`.trim();\r\n return (\r\n <button\r\n aria-label={`Action ${a.text}`}\r\n key={idx}\r\n onClick={() => a.callback?.({ id })}\r\n className={classNameStr}\r\n >\r\n {a.text}\r\n </button>\r\n );\r\n });\r\n }, [actions, type, id, theme]);\r\n\r\n const handleMouseEnter = pauseOnHover ? handlePause : undefined;\r\n const handleMouseLeave = pauseOnHover ? handleResume : undefined;\r\n\r\n // Start auto-close timer.\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n // pause/resume when window focus changes.\r\n const handleBlur = () => pauseOnFocusLoss && handlePause();\r\n const handleFocus = () => pauseOnFocusLoss && handleResume();\r\n\r\n if (pauseOnFocusLoss) {\r\n window.addEventListener(\"blur\", handleBlur);\r\n window.addEventListener(\"focus\", handleFocus);\r\n }\r\n\r\n return () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n\r\n if (pauseOnFocusLoss) {\r\n window.removeEventListener(\"blur\", handleBlur);\r\n window.removeEventListener(\"focus\", handleFocus);\r\n }\r\n };\r\n }, [pauseOnFocusLoss, handlePause, handleResume]);\r\n\r\n if (!isMounted) return null;\r\n\r\n return (\r\n <div\r\n className={`toastWrapper ${shouldExpand ? \"expanded\" : \"stacked\"} ${animationClass}`}\r\n dir={rtl ? \"rtl\" : \"ltr\"}\r\n style={{\r\n bottom: position.includes(\"bottom\") && !shouldExpand ? \"0%\" : \"\",\r\n zIndex: 100 - stackIndex,\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <div\r\n data-stack={shouldExpand ? 0 : stackIndex}\r\n role={ariaRole}\r\n aria-live={ariaRole === \"alert\" ? \"assertive\" : \"polite\"}\r\n aria-atomic=\"true\"\r\n tabIndex={0}\r\n aria-hidden={!shouldExpand && stackIndex > 0}\r\n style={{\r\n pointerEvents: phase === \"exit\" ? \"none\" : \"auto\",\r\n }}\r\n className={`d9-toast toast ${theme === \"colored\" ? type : theme} ${className}`}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n onTouchStart={onTouchStart}\r\n onTouchMove={onTouchMove}\r\n onTouchEnd={onTouchEnd}\r\n >\r\n {/* Header */}\r\n {title && (\r\n <div className={`toastHeader ${type}`}>\r\n <div className=\"title\">\r\n {type !== \"default\" && <Icons name={type || \"success\"} />}{\" \"}\r\n <p>{type.toUpperCase()}</p>\r\n </div>\r\n\r\n {closable && (\r\n <button\r\n className=\"close-button\"\r\n aria-label=\"Close button\"\r\n onClick={() => triggerExit()}\r\n >\r\n <Icons name={\"X\"} />\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Message */}\r\n {typeof message === \"string\" ? (\r\n <div className=\"toast-message__container\">\r\n <div className=\"toast-message\">\r\n {!title && type !== \"default\" && (\r\n <Icons name={type || \"success\"} className={type} />\r\n )}\r\n <p>{message || \"No messages\"}</p>\r\n </div>\r\n {closable && !title && (\r\n <button\r\n className=\"close-button\"\r\n aria-label=\"Close button\"\r\n onClick={() => triggerExit()}\r\n >\r\n <Icons name={\"X\"} />\r\n </button>\r\n )}\r\n </div>\r\n ) : (\r\n <div style={{ padding: \"4px\" }}>{message || \"No messages\"}</div>\r\n )}\r\n\r\n {/* Actions */}\r\n {actions.length > 0 && (\r\n <div className=\"toastActions\">{actionButtons}</div>\r\n )}\r\n\r\n {/* Progress Bar */}\r\n {duration !== 0 && autoClose && (\r\n <div\r\n className={`progress-container ${type}`}\r\n style={{\r\n opacity: progress ? 1 : 0,\r\n height: progress ? \"4px\" : \"0px\",\r\n transition: \"opacity 0.2s ease\",\r\n }}\r\n >\r\n <div\r\n className={`toast-progress ${type}`}\r\n onAnimationEnd={triggerExit}\r\n style={{\r\n animationDuration: `${duration}ms`,\r\n animationPlayState: isPaused ? \"paused\" : \"running\",\r\n transformOrigin: rtl ? \"right\" : \"left\",\r\n }}\r\n ></div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default React.memo(Toast);\r\n","\"use client\";\r\n\r\nimport React, { useCallback, useRef, useState, useEffect } from \"react\";\r\nimport Toast from \"./Toast\";\r\nimport {\r\n PromiseMessages,\r\n ToastCallable,\r\n ToastOptions,\r\n ToastPosition,\r\n} from \"./types\";\r\n\r\ninterface ToastItem extends ToastOptions {\r\n id: string;\r\n}\r\n\r\n// Audio.\r\nconst sounds = {\r\n default:\r\n \"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/default.mp3\",\r\n success:\r\n \"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/success.mp3\",\r\n warning:\r\n \"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/warning.mp3\",\r\n error:\r\n \"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/errors.mp3\",\r\n info: \"https://cdn.jsdelivr.net/gh/psathul073/d9-toast-assets@main/info.mp3\",\r\n};\r\n\r\nconst audioCache: Record<string, HTMLAudioElement> = {}; // Cache for audio objects..\r\n\r\nconst audioSettings = {\r\n audioFile: sounds.default,\r\n volume: 0.6,\r\n enabled: true,\r\n cooldown: 500,\r\n};\r\n\r\ninterface ToastRef {\r\n showToast: (toast: ToastOptions) => string;\r\n removeToast: (id: string) => void;\r\n removeToastAll: () => void;\r\n promiseToast: <T>(\r\n promise: Promise<T> | (() => Promise<T>),\r\n messages: PromiseMessages<T>,\r\n options?: ToastOptions,\r\n ) => Promise<T>;\r\n}\r\n\r\n// INTERNAL reference...\r\nlet toastRef: ToastRef | null = null;\r\n\r\n// For public toast API.\r\nconst warn = () => {\r\n console.warn(\r\n \"D9-Toast: ToastProvider is not mounted. Ensure it wraps your app.\",\r\n );\r\n return undefined;\r\n};\r\n\r\n/** * CALLABLE API CORE */\r\nconst toastBase: ToastCallable = ((msg, opts = {}) => {\r\n return toastRef\r\n ? toastRef.showToast({\r\n type: \"default\",\r\n title: false,\r\n progress: false,\r\n duration: 3000,\r\n message: msg,\r\n ...opts,\r\n })\r\n : warn();\r\n}) as ToastCallable;\r\n\r\ntoastBase.sounds = sounds;\r\n\r\ntoastBase.success = (msg, opts = {}) =>\r\n toastRef\r\n ? toastRef.showToast({ type: \"success\", message: msg, ...opts })\r\n : warn();\r\n\r\ntoastBase.error = (msg, opts = {}) =>\r\n toastRef\r\n ? toastRef.showToast({ type: \"error\", message: msg, ...opts })\r\n : warn();\r\n\r\ntoastBase.info = (msg, opts = {}) =>\r\n toastRef\r\n ? toastRef.showToast({ type: \"info\", message: msg, ...opts })\r\n : warn();\r\n\r\ntoastBase.warning = (msg, opts = {}) =>\r\n toastRef\r\n ? toastRef.showToast({ type: \"warning\", message: msg, ...opts })\r\n : warn();\r\n\r\ntoastBase.promise = <T,>(\r\n promise: Promise<T> | (() => Promise<T>),\r\n messages: PromiseMessages<T>,\r\n opts: ToastOptions = {},\r\n): Promise<T> => {\r\n const defaultMessages: PromiseMessages<T> = {\r\n loading: \"Loading...\",\r\n success: \"Success\",\r\n error: \"Error\",\r\n };\r\n\r\n const finalMessages = messages ?? defaultMessages;\r\n\r\n return toastRef\r\n ? toastRef.promiseToast(promise, finalMessages, opts)\r\n : Promise.reject(\r\n new Error(\r\n \"D9-Toast: ToastProvider is not mounted. Ensure it wraps your app.\",\r\n ),\r\n );\r\n};\r\n\r\ntoastBase.dismiss = (id) => toastRef?.removeToast(id);\r\ntoastBase.dismissAll = () => toastRef?.removeToastAll();\r\n\r\nexport const toast = toastBase;\r\n\r\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\r\n children,\r\n}) => {\r\n const [toasts, setToasts] = useState<ToastItem[]>([]);\r\n const [isHovering, setIsHovering] = useState<boolean>(false);\r\n const lastSoundTimeRef = useRef<number>(0);\r\n const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const handleMouseEnter = useCallback(() => {\r\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);\r\n hoverTimeoutRef.current = setTimeout(() => {\r\n setIsHovering(true);\r\n }, 50);\r\n }, []);\r\n\r\n const handleMouseLeave = useCallback(() => {\r\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);\r\n hoverTimeoutRef.current = setTimeout(() => {\r\n setIsHovering(false);\r\n }, 50);\r\n }, []);\r\n\r\n // Cleanup\r\n useEffect(() => {\r\n return () => {\r\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);\r\n };\r\n }, []);\r\n\r\n // Audio player..\r\n const playAudio = useCallback(\r\n ({ audioFile, volume = 0.6 }: { audioFile: string; volume?: number }) => {\r\n if (!audioFile || typeof window === \"undefined\") return;\r\n\r\n try {\r\n // Check cache..\r\n let audio = audioCache[audioFile];\r\n if (!audio) {\r\n audio = new Audio(audioFile);\r\n audio.preload = \"auto\";\r\n audioCache[audioFile] = audio;\r\n }\r\n // Reset time to allow rapid replay...\r\n audio.currentTime = 0;\r\n audio.volume = volume;\r\n audio.play().catch(() => {});\r\n } catch (err) {\r\n console.error(\"Audio play error:\", err);\r\n }\r\n },\r\n [],\r\n );\r\n\r\n // Generate unique ID safely\r\n const generateId = () =>\r\n typeof crypto !== \"undefined\" && crypto.randomUUID\r\n ? (crypto.randomUUID?.() ?? `${Date.now()}-${Math.random()}`)\r\n : Date.now().toString() + Math.random().toString(36);\r\n\r\n // Show toast..\r\n const showToast = useCallback(\r\n (toast: ToastOptions): string => {\r\n const newToast: ToastItem = {\r\n id: generateId(),\r\n ...toast,\r\n audio: {\r\n enabled: toast.audio?.enabled ?? audioSettings.enabled,\r\n volume: toast.audio?.volume ?? audioSettings.volume,\r\n audioFile: toast.audio?.audioFile ?? audioSettings.audioFile,\r\n cooldown: toast.audio?.cooldown ?? audioSettings.cooldown,\r\n },\r\n };\r\n // Limit to last 10 toasts to prevent memory overflow...\r\n setToasts((prev) => [newToast, ...prev].slice(0, 4));\r\n\r\n const { audio, type } = newToast;\r\n const now = Date.now();\r\n const cooldown = Number(audio?.cooldown ?? audioSettings.cooldown);\r\n const canPlaySound = now - lastSoundTimeRef.current >= cooldown;\r\n const bypassCooldown = type === \"error\"; // Bypass error toast\r\n\r\n // Play audio whenever a new toast appears.\r\n if (\r\n audio?.enabled &&\r\n audio?.audioFile &&\r\n (canPlaySound || bypassCooldown)\r\n ) {\r\n lastSoundTimeRef.current = now;\r\n playAudio({\r\n audioFile: audio.audioFile,\r\n volume: audio.volume,\r\n });\r\n }\r\n\r\n return newToast?.id;\r\n },\r\n [playAudio],\r\n );\r\n\r\n // Remove toast\r\n const removeToast = useCallback((id: string) => {\r\n setToasts((prev) => {\r\n const newToasts = prev.filter((t) => t.id !== id);\r\n return newToasts;\r\n });\r\n }, []);\r\n\r\n // Update toast\r\n const updateToast = useCallback((id: string, updates: Partial<ToastItem>) => {\r\n setToasts((prev) =>\r\n prev.map((t) => (t.id === id ? { ...t, ...updates } : t)),\r\n );\r\n }, []);\r\n\r\n // Promise toast..\r\n const promiseToast = useCallback(\r\n <T,>(\r\n promiseOrFn: Promise<T> | (() => Promise<T>),\r\n messages: PromiseMessages<T>,\r\n options: ToastOptions = {},\r\n ): Promise<T> => {\r\n const id = showToast({\r\n type: \"loading\",\r\n message: messages.loading,\r\n autoClose: false,\r\n ...options,\r\n });\r\n\r\n const promise =\r\n typeof promiseOrFn === \"function\" ? promiseOrFn() : promiseOrFn;\r\n\r\n Promise.resolve(promise)\r\n .then((res) => {\r\n updateToast(id, {\r\n type: \"success\",\r\n message:\r\n typeof messages.success === \"function\"\r\n ? messages.success(res)\r\n : messages.success,\r\n closable: true,\r\n autoClose: true, // Re-enable autoClose for success...\r\n duration: 3000, // Reset duration..\r\n });\r\n\r\n return res;\r\n })\r\n .catch((err) => {\r\n updateToast(id, {\r\n type: \"error\",\r\n message:\r\n typeof messages.error === \"function\"\r\n ? messages.error(err)\r\n : messages.error,\r\n closable: true,\r\n autoClose: true,\r\n duration: 3000,\r\n });\r\n\r\n throw err;\r\n });\r\n\r\n return promise;\r\n },\r\n [showToast, updateToast],\r\n );\r\n\r\n // Remove all toast.\r\n const removeToastAll = useCallback(() => {\r\n setToasts([]);\r\n }, []);\r\n\r\n // Group toasts by there positions..\r\n const groupedToasts = toasts.reduce<\r\n Partial<Record<ToastPosition, ToastItem[]>>\r\n >((acc, toast) => {\r\n const position = toast.position || \"top-right\";\r\n if (!acc[position]) {\r\n acc[position] = [];\r\n }\r\n acc[position].push(toast);\r\n return acc;\r\n }, {});\r\n\r\n // Connect context >>> toast API (ONCE).\r\n useEffect(() => {\r\n toastRef = {\r\n showToast,\r\n removeToast,\r\n removeToastAll,\r\n promiseToast,\r\n };\r\n\r\n return () => {\r\n toastRef = null;\r\n };\r\n }, [showToast, removeToast, removeToastAll, promiseToast]);\r\n\r\n return (\r\n <>\r\n {children}\r\n {/* Render separate containers for each position */}\r\n {Object.entries(groupedToasts).map(([position, positionToasts]) => (\r\n <div\r\n key={position}\r\n className={`toastViewport ${position}`}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n <div className=\"toastContainer\">\r\n {positionToasts.map((toast, index) => (\r\n <Toast\r\n key={toast.id}\r\n {...toast}\r\n stackIndex={index}\r\n isStackHovered={isHovering}\r\n remove={() => removeToast(toast.id)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n </>\r\n );\r\n};\r\n"]}
package/dist/toast.css CHANGED
@@ -537,7 +537,7 @@
537
537
  }
538
538
  to {
539
539
  opacity: 0.85;
540
- transform: scale(0.90) translateY(-100%);
540
+ transform: scale(0.9) translateY(-100%);
541
541
  }
542
542
  }
543
543
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d9-toast",
3
- "version": "2.6.45",
3
+ "version": "3.6.47",
4
4
  "description": "Customizable toast notifications for React",
5
5
  "homepage": "https://psathul073.github.io/d9-toast-docs/",
6
6
  "repository": {
@@ -15,11 +15,13 @@
15
15
  "url": "https://rzp.io/rzp/eVnJ0oP"
16
16
  },
17
17
  "main": "dist/index.js",
18
+ "module": "dist/index.js",
18
19
  "type": "module",
20
+ "types": "dist/index.d.ts",
19
21
  "exports": {
20
22
  ".": {
21
23
  "import": "./dist/index.js",
22
- "types": "./dist/d9-toast.d.ts"
24
+ "types": "./dist/index.d.ts"
23
25
  },
24
26
  "./toast.css": "./dist/toast.css"
25
27
  },
@@ -29,10 +31,9 @@
29
31
  "sideEffects": [
30
32
  "./dist/toast.css"
31
33
  ],
32
- "types": "dist/d9-toast.d.ts",
33
34
  "scripts": {
34
- "build:js": "npx babel src --out-dir dist --copy-files",
35
- "build": "npm run build:js"
35
+ "build": "tsup && npm run copy-css",
36
+ "copy-css": "cpy src/toast.css dist --flat"
36
37
  },
37
38
  "peerDependencies": {
38
39
  "react": ">=17",
@@ -52,9 +53,10 @@
52
53
  "license": "MIT",
53
54
  "author": "Athul PS",
54
55
  "devDependencies": {
55
- "@babel/cli": "^7.28.3",
56
- "@babel/core": "^7.28.4",
57
- "@babel/preset-env": "^7.28.3",
58
- "@babel/preset-react": "^7.27.1"
56
+ "@types/react": "^19.2.14",
57
+ "@types/react-dom": "^19.2.3",
58
+ "cpy-cli": "^7.0.0",
59
+ "tsup": "^8.5.1",
60
+ "typescript": "^5.9.3"
59
61
  }
60
62
  }
package/dist/Icons.js DELETED
@@ -1,216 +0,0 @@
1
- "use client";
2
-
3
- import { memo } from "react";
4
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- var Icons = function Icons(_ref) {
6
- var _icons$name;
7
- var name = _ref.name,
8
- _ref$className = _ref.className,
9
- className = _ref$className === void 0 ? " " : _ref$className;
10
- var icons = {
11
- success: /*#__PURE__*/_jsx("svg", {
12
- xmlns: "http://www.w3.org/2000/svg",
13
- viewBox: "0 0 24 24",
14
- width: "1em",
15
- height: "1em",
16
- className: className,
17
- style: {
18
- fontSize: "20px",
19
- backgroundColor: "transparent",
20
- flexShrink: 0
21
- },
22
- children: /*#__PURE__*/_jsx("path", {
23
- fill: "currentColor",
24
- fillRule: "evenodd",
25
- d: "M12 1.25C6.063 1.25 1.25 6.063 1.25 12S6.063 22.75 12 22.75S22.75 17.937 22.75 12S17.937 1.25 12 1.25M7.53 11.97a.75.75 0 0 0-1.06 1.06l3 3a.75.75 0 0 0 1.06 0l7-7a.75.75 0 0 0-1.06-1.06L10 14.44z",
26
- clipRule: "evenodd"
27
- })
28
- }),
29
- error: /*#__PURE__*/_jsx("svg", {
30
- xmlns: "http://www.w3.org/2000/svg",
31
- viewBox: "0 0 24 24",
32
- width: "1em",
33
- height: "1em",
34
- className: className,
35
- style: {
36
- backgroundColor: "transparent",
37
- fontSize: "20px",
38
- flexShrink: 0
39
- },
40
- children: /*#__PURE__*/_jsx("path", {
41
- fill: "currentColor",
42
- d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1 4h-2v-2h2z"
43
- })
44
- }),
45
- info: /*#__PURE__*/_jsx("svg", {
46
- xmlns: "http://www.w3.org/2000/svg",
47
- viewBox: "0 0 24 24",
48
- width: "1em",
49
- height: "1em",
50
- className: className,
51
- style: {
52
- backgroundColor: "transparent",
53
- fontSize: "20px",
54
- flexShrink: 0
55
- },
56
- children: /*#__PURE__*/_jsx("path", {
57
- fill: "currentColor",
58
- fillRule: "evenodd",
59
- d: "M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11s11-4.925 11-11S18.075 1 12 1m-.5 5a1 1 0 1 0 0 2h.5a1 1 0 1 0 0-2zM10 10a1 1 0 1 0 0 2h1v3h-1a1 1 0 1 0 0 2h4a1 1 0 1 0 0-2h-1v-4a1 1 0 0 0-1-1z",
60
- clipRule: "evenodd"
61
- })
62
- }),
63
- warning: /*#__PURE__*/_jsx("svg", {
64
- xmlns: "http://www.w3.org/2000/svg",
65
- viewBox: "0 0 24 24",
66
- width: "1em",
67
- height: "1em",
68
- className: className,
69
- style: {
70
- backgroundColor: "transparent",
71
- fontSize: "20px",
72
- flexShrink: 0
73
- },
74
- children: /*#__PURE__*/_jsx("path", {
75
- fill: "currentColor",
76
- fillRule: "evenodd",
77
- d: "M9.616 3.642c1.058-1.839 3.71-1.839 4.768 0l8.043 13.988c1.054 1.833-.27 4.12-2.384 4.12H3.957c-2.115 0-3.438-2.287-2.384-4.12zM12 8.25a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75m.568 9.25a.75.75 0 0 0-1.115-1.003l-.01.011a.75.75 0 0 0 1.114 1.004z",
78
- clipRule: "evenodd"
79
- })
80
- }),
81
- loading: /*#__PURE__*/_jsx("svg", {
82
- xmlns: "http://www.w3.org/2000/svg",
83
- viewBox: "0 0 24 24",
84
- width: "1em",
85
- height: "1em",
86
- className: className,
87
- style: {
88
- backgroundColor: "transparent",
89
- fontSize: "20px",
90
- flexShrink: 0
91
- },
92
- children: /*#__PURE__*/_jsxs("g", {
93
- fill: "none",
94
- stroke: "currentColor",
95
- strokeLinecap: "round",
96
- strokeLinejoin: "round",
97
- strokeWidth: "2",
98
- children: [/*#__PURE__*/_jsxs("path", {
99
- strokeDasharray: "16",
100
- strokeDashoffset: "16",
101
- d: "M12 3c4.97 0 9 4.03 9 9",
102
- children: [/*#__PURE__*/_jsx("animate", {
103
- fill: "freeze",
104
- attributeName: "stroke-dashoffset",
105
- dur: "0.3s",
106
- values: "16;0"
107
- }), /*#__PURE__*/_jsx("animateTransform", {
108
- attributeName: "transform",
109
- dur: "1.5s",
110
- repeatCount: "indefinite",
111
- type: "rotate",
112
- values: "0 12 12;360 12 12"
113
- })]
114
- }), /*#__PURE__*/_jsx("path", {
115
- strokeDasharray: "64",
116
- strokeDashoffset: "64",
117
- strokeOpacity: ".3",
118
- d: "M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9Z",
119
- children: /*#__PURE__*/_jsx("animate", {
120
- fill: "freeze",
121
- attributeName: "stroke-dashoffset",
122
- dur: "1.2s",
123
- values: "64;0"
124
- })
125
- })]
126
- })
127
- }),
128
- submit: /*#__PURE__*/_jsx("svg", {
129
- xmlns: "http://www.w3.org/2000/svg",
130
- viewBox: "0 0 24 24",
131
- width: "1em",
132
- height: "1em",
133
- className: className,
134
- style: {
135
- backgroundColor: "transparent",
136
- fontSize: "20px",
137
- flexShrink: 0
138
- },
139
- children: /*#__PURE__*/_jsxs("g", {
140
- fill: "none",
141
- stroke: "currentColor",
142
- strokeLinecap: "round",
143
- strokeLinejoin: "round",
144
- strokeWidth: "2",
145
- children: [/*#__PURE__*/_jsx("path", {
146
- strokeDasharray: "2 4",
147
- strokeDashoffset: "6",
148
- d: "M12 21c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9",
149
- children: /*#__PURE__*/_jsx("animate", {
150
- attributeName: "stroke-dashoffset",
151
- dur: "0.6s",
152
- repeatCount: "indefinite",
153
- values: "6;0"
154
- })
155
- }), /*#__PURE__*/_jsx("path", {
156
- strokeDasharray: "32",
157
- strokeDashoffset: "32",
158
- d: "M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9",
159
- children: /*#__PURE__*/_jsx("animate", {
160
- fill: "freeze",
161
- attributeName: "stroke-dashoffset",
162
- begin: "0.1s",
163
- dur: "0.4s",
164
- values: "32;0"
165
- })
166
- }), /*#__PURE__*/_jsx("path", {
167
- strokeDasharray: "10",
168
- strokeDashoffset: "10",
169
- d: "M12 16v-7.5",
170
- children: /*#__PURE__*/_jsx("animate", {
171
- fill: "freeze",
172
- attributeName: "stroke-dashoffset",
173
- begin: "0.5s",
174
- dur: "0.2s",
175
- values: "10;0"
176
- })
177
- }), /*#__PURE__*/_jsx("path", {
178
- strokeDasharray: "6",
179
- strokeDashoffset: "6",
180
- d: "M12 8.5l3.5 3.5M12 8.5l-3.5 3.5",
181
- children: /*#__PURE__*/_jsx("animate", {
182
- fill: "freeze",
183
- attributeName: "stroke-dashoffset",
184
- begin: "0.7s",
185
- dur: "0.2s",
186
- values: "6;0"
187
- })
188
- })]
189
- })
190
- }),
191
- X: /*#__PURE__*/_jsx("svg", {
192
- xmlns: "http://www.w3.org/2000/svg",
193
- viewBox: "0 0 24 24",
194
- width: "1em",
195
- height: "1em",
196
- className: className,
197
- style: {
198
- backgroundColor: "transparent",
199
- fontSize: "20px",
200
- flexShrink: 0
201
- },
202
- children: /*#__PURE__*/_jsxs("g", {
203
- fill: "currentColor",
204
- fillRule: "evenodd",
205
- clipRule: "evenodd",
206
- children: [/*#__PURE__*/_jsx("path", {
207
- d: "M5.47 5.47a.75.75 0 0 1 1.06 0l12 12a.75.75 0 1 1-1.06 1.06l-12-12a.75.75 0 0 1 0-1.06"
208
- }), /*#__PURE__*/_jsx("path", {
209
- d: "M18.53 5.47a.75.75 0 0 1 0 1.06l-12 12a.75.75 0 0 1-1.06-1.06l12-12a.75.75 0 0 1 1.06 0"
210
- })]
211
- })
212
- })
213
- };
214
- return (_icons$name = icons[name]) !== null && _icons$name !== void 0 ? _icons$name : null;
215
- };
216
- export default /*#__PURE__*/memo(Icons);