react-strawberry-toast 1.2.2 → 1.3.0

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
@@ -49,6 +49,8 @@ function App() {
49
49
  | position | Global toast's Position | top-left, top-center, top-right, bottom-left, bottom-center, bottom-right | top-center |
50
50
  | containerId | ToastContainer's unique id | String | |
51
51
  | reverse | Direction when toast appear | Boolean | false |
52
+ | className | Class of ToastContainer | String | |
53
+ | style | Style of ToastContainer | Object | |
52
54
  | gap | Gap Between toasts | Number | 9 |
53
55
  | pauseOnActivate | Pause Toast timer when blur events occurs | Boolean | true |
54
56
 
@@ -61,6 +63,7 @@ function App() {
61
63
  | position | Position per toast | top-left, top-center, top-right, bottom-left, bottom-center, bottom-right | top-center |
62
64
  | containerId | ID shown in the Toast Container Unique ID | String | |
63
65
  | pauseOnHover | Option that sets the timer to stop or not when a hover event occurs | Boolean | true |
66
+ | icon | The icon to be displayed in the toast | ReactNode | |
64
67
  | toastType | Toast Type | default, custom, success, error, loading, warn | default |
65
68
  | timeOut | Time for toast to disappear | Number | 3000 |
66
69
  | removeTimeOut | Time for toast to remove In Toast List | Number | 200 |
@@ -16,6 +16,7 @@ interface ToastBaseState {
16
16
  updated: number | null;
17
17
  }
18
18
  interface Options extends BaseOptions {
19
+ icon?: ReactNode;
19
20
  position?: Position | null;
20
21
  containerId?: string | null;
21
22
  pauseOnHover?: boolean;
@@ -16,6 +16,7 @@ interface ToastBaseState {
16
16
  updated: number | null;
17
17
  }
18
18
  interface Options extends BaseOptions {
19
+ icon?: ReactNode;
19
20
  position?: Position | null;
20
21
  containerId?: string | null;
21
22
  pauseOnHover?: boolean;
package/dist/index.d.mts CHANGED
@@ -16,6 +16,7 @@ interface ToastBaseState {
16
16
  updated: number | null;
17
17
  }
18
18
  interface Options extends BaseOptions {
19
+ icon?: ReactNode;
19
20
  position?: Position | null;
20
21
  containerId?: string | null;
21
22
  pauseOnHover?: boolean;
@@ -75,13 +76,15 @@ declare const toast: {
75
76
  };
76
77
 
77
78
  interface ToastContainerProps {
79
+ className?: string;
80
+ style?: React.CSSProperties;
78
81
  position?: Position;
79
82
  containerId?: string;
80
83
  reverse?: boolean;
81
84
  gap?: number;
82
85
  pauseOnActivate?: boolean;
83
86
  }
84
- declare function ToastContainer({ position: globalPosition, containerId, gap, reverse, pauseOnActivate, }: ToastContainerProps): React.JSX.Element;
87
+ declare function ToastContainer({ className, style, position: globalPosition, containerId, gap, reverse, pauseOnActivate, }: ToastContainerProps): React.JSX.Element;
85
88
 
86
89
  declare const useToasts: () => Array<NonHeadlessToastState>;
87
90
 
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ interface ToastBaseState {
16
16
  updated: number | null;
17
17
  }
18
18
  interface Options extends BaseOptions {
19
+ icon?: ReactNode;
19
20
  position?: Position | null;
20
21
  containerId?: string | null;
21
22
  pauseOnHover?: boolean;
@@ -75,13 +76,15 @@ declare const toast: {
75
76
  };
76
77
 
77
78
  interface ToastContainerProps {
79
+ className?: string;
80
+ style?: React.CSSProperties;
78
81
  position?: Position;
79
82
  containerId?: string;
80
83
  reverse?: boolean;
81
84
  gap?: number;
82
85
  pauseOnActivate?: boolean;
83
86
  }
84
- declare function ToastContainer({ position: globalPosition, containerId, gap, reverse, pauseOnActivate, }: ToastContainerProps): React.JSX.Element;
87
+ declare function ToastContainer({ className, style, position: globalPosition, containerId, gap, reverse, pauseOnActivate, }: ToastContainerProps): React.JSX.Element;
85
88
 
86
89
  declare const useToasts: () => Array<NonHeadlessToastState>;
87
90
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- "use strict";var G=Object.create;var P=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,Q=Object.prototype.hasOwnProperty;var Z=(t,e)=>{for(var r in e)P(t,r,{get:e[r],enumerable:!0})},V=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let d of J(e))!Q.call(t,d)&&d!==r&&P(t,d,{get:()=>e[d],enumerable:!(a=q(e,d))||a.enumerable});return t};var H=(t,e,r)=>(r=t!=null?G(K(t)):{},V(e||!t||!t.__esModule?P(r,"default",{value:t,enumerable:!0}):r,t)),R=t=>V(P({},"__esModule",{value:!0}),t);var nt={};Z(nt,{ToastContainer:()=>at,toast:()=>s,toastStore:()=>f,useToasts:()=>W});module.exports=R(nt);var Y=()=>{let t=0;return()=>String(t++)};var k=class{state=[];listeners=new Set;activatedToasts=new Set;toastTimers=new Map;constructor(){}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}setState(e){this.state=typeof e=="function"?e(this.state):e,this.listeners.forEach(r=>r())}getSnapShot(){return this.state}};var x="react-strawberry-toast";var X=t=>{let e=o=>{let i=t.toastTimers.get(o);clearTimeout(i),t.toastTimers.delete(o)},r=o=>{t.activatedToasts.add(o)},a=o=>t.activatedToasts.has(o),d=(o,i=200)=>{a(o)&&(t.activatedToasts.delete(o),setTimeout(()=>{t.state=t.state.filter(u=>u.toastId!==o),t.setState([...t.state])},i),e(o))},c=()=>{t.setState([])},y=(o,i,u)=>{t.state=t.state.map(v=>v.toastId===o?{...v,...u,updated:new Date().getTime(),data:i}:v),t.setState([...t.state])},n=o=>{let i=new Date().getTime();t.state=t.state.map(u=>u.toastId===o?{...u,pausedAt:i}:u),e(o),t.setState([...t.state])},p=(o,i)=>{let u=setTimeout(()=>{var _;t.state=t.state.map(S=>S.toastId===o?{...S,isVisible:!1}:S),t.setState([...t.state]);let v=(_=t.state.find(S=>S.toastId===o))==null?void 0:_.removeTimeOut;d(o,v)},i>2147483647?2147483647:i);t.toastTimers.set(o,u)};return{setActive:r,isActive:a,disappear:p,resume:o=>{if(t.toastTimers.has(o))return;let i=t.state.find(v=>v.toastId===o);if(!i)return;let u=i.createdAt+(i.timeOut||3e3)-(i.pausedAt||0);p(o,u)},pause:n,replace:y,remove:d,allClear:c}};var f=new k,tt=Y(),I=(t="default")=>(e,r={})=>{let{timeOut:a=3e3,removeTimeOut:d=200,pauseOnHover:c=!0,toastId:y}=r,n=y||tt();if(s.isActive(n))throw new Error("A duplicate custom ID is not available.");let p=new Date().getTime(),T={updated:null,pausedAt:null,containerId:r.containerId||null,position:r.position||null,timeOut:a>2147483647?2147483647:a,toastId:n,data:e,createdAt:p,toastType:t,pauseOnHover:c,removeTimeOut:d,isVisible:!0};return f.state.push(T),f.setState([...f.state]),n},s=(t,e={})=>I()(t,e),g=X(f);s.setActive=g.setActive;s.isActive=g.isActive;s.disappear=g.disappear;s.resume=g.resume;s.pause=g.pause;s.replace=g.replace;s.remove=g.remove;s.allClear=g.allClear;s.success=I("success");s.error=I("error");s.warn=I("warn");s.loading=I("loading");s.custom=I("custom");s.promise=(t,e,r={})=>{let{loading:a,success:d,error:c}=e,y=s.loading(a,{...r,timeOut:2147483647});t.then(n=>{s.replace(y,typeof d=="function"?d(n):d,{...r,timeOut:r.timeOut||3e3,toastType:"success"})}).catch(n=>{s.replace(y,typeof c=="function"?c(n):c,{...r,timeOut:r.timeOut||3e3,toastType:"error"})})};var h=H(require("react"));var l=H(require("react"));var $=require("react");function C({condition:t,children:e}){let r=$.Children.toArray(e);if(r.length>2)throw new Error("The number of children exceeds two.");return r.find(a=>t?a.key===".0":a.key===".1")}function M({children:t}){return t}function N({children:t}){return t}var B=({isVisible:t,position:e})=>t?/top/i.test(e)?`${x}__fade-in`:`${x}__fade-in-reverse`:/bottom/i.test(e)?`${x}__fade-out-reverse`:`${x}__fade-out`;var b=H(require("react"));function et(){return b.default.createElement("svg",{stroke:"none",fill:"none",strokeWidth:"2",viewBox:"0 0 24 24",strokeLinecap:"round",strokeLinejoin:"round",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},b.default.createElement("path",{stroke:"none",d:"M0 0h24v24H0z"}),b.default.createElement("path",{d:"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z",strokeWidth:"0",fill:"#1ab173"}))}function ot(){return b.default.createElement("svg",{stroke:"none",fill:"#eb2639",strokeWidth:"2",viewBox:"0 0 24 24",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},b.default.createElement("path",{d:"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z"}))}function st(){return b.default.createElement("svg",{stroke:"none",fill:"#fcba03",strokeWidth:"0",viewBox:"0 0 1024 1024",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},b.default.createElement("path",{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"}))}var A={success:et,error:ot,loading:()=>b.default.createElement("div",{className:`${x}__loading`}),warn:st};function L({toastProps:t,pauseOnActivate:e,...r}){let{toastId:a,isVisible:d,timeOut:c,containerId:y,updated:n,toastType:p,position:T,data:o,pauseOnHover:i}=t,u=B({isVisible:d,position:T}),v=typeof o=="function"?o({toastId:a,close:()=>s.disappear(a,0),immediatelyClose:()=>{s.disappear(a,0),s.remove(a,0)},icons:{success:l.default.createElement(A.success,null),error:l.default.createElement(A.error,null),warn:l.default.createElement(A.warn,null),loading:l.default.createElement(A.loading,null)},isVisible:d}):o,_=()=>{i&&s.pause(a)},S=()=>{i&&s.resume(a)};(0,l.useEffect)(()=>{if(!e)return;let O=()=>{s.resume(a)},U=()=>{s.pause(a)};return window.addEventListener("focus",O),window.addEventListener("blur",U),()=>{window.removeEventListener("focus",O),window.removeEventListener("blur",U)}},[]),(0,l.useEffect)(()=>{s.isActive(a)||(s.setActive(a),s.disappear(a,c))},[a]),(0,l.useEffect)(()=>{if(n!==null){let O=c>=2147483647?3e3:c;s.disappear(a,O)}},[n]);let z=p==="custom"||p==="default"?null:A[p];return l.default.createElement("div",{...r},l.default.createElement(C,{condition:p!=="custom"},l.default.createElement(M,null,l.default.createElement("div",{role:"alert",className:p==="custom"?"":u,"data-testid":`container-${y}`,onMouseEnter:_,onMouseLeave:S,style:{boxSizing:"border-box",backgroundColor:"white",padding:"12px 14px 12px 12px",display:"flex",alignItems:"center",gap:5,borderRadius:8,boxShadow:"2px 4px 10px rgba(0, 0, 0, 0.1)"}},z&&l.default.createElement("span",{style:{minWidth:20,maxWidth:20}},l.default.createElement(z,null)),v)),l.default.createElement(N,null,v)))}var j=require("react");var W=()=>(0,j.useSyncExternalStore)(f.subscribe.bind(f),f.getSnapShot.bind(f),f.getSnapShot.bind(f));var F=({position:t,reverse:e=!1})=>/top/i.test(t)?e?"column-reverse":"column":/bottom/i.test(t)?e?"column":"column-reverse":"column";var m=16,rt={"top-left":{top:m,left:m},"top-center":{top:m,left:"50%",transform:"translateX(-50%)"},"top-right":{top:m,right:m},"bottom-left":{bottom:m,left:m},"bottom-center":{bottom:m,left:"50%",transform:"translateX(-50%)"},"bottom-right":{bottom:m,right:m}};function at({position:t="top-center",containerId:e="",gap:r=9,reverse:a=!1,pauseOnActivate:d=!0}){let c=W(),y=c.filter(n=>n.containerId===null).reduce((n,p)=>{let T=p.position||t;return p.position=T,n[T]=n[T]||[],n[T].push(p),n},{});return h.default.createElement(C,{condition:!!e},h.default.createElement(M,null,h.default.createElement("div",{style:{position:"absolute",zIndex:9999,pointerEvents:"none"}},h.default.createElement("div",{style:{pointerEvents:"auto",display:"flex",flexDirection:a?"column-reverse":"column",gap:r}},c.filter(n=>n.containerId===e).map(n=>h.default.createElement(L,{key:n.toastId,pauseOnActivate:d,toastProps:n,style:{display:"flex"}}))))),h.default.createElement(N,null,h.default.createElement("div",{style:{position:"fixed",zIndex:9999,top:m,left:m,right:m,bottom:m,pointerEvents:"none"}},Object.entries(y).map(([n,p])=>{let T=rt[n],o=F({position:n,reverse:a});return h.default.createElement("div",{key:n,"data-testid":n,style:{pointerEvents:"auto",position:"fixed",display:"flex",flexDirection:o,gap:r,...T}},p.map(i=>h.default.createElement(L,{key:i.toastId,toastProps:i,pauseOnActivate:d,style:{display:"flex",justifyContent:"center"}})))}))))}
2
+ "use strict";var j=Object.create;var I=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var K=(t,o)=>{for(var e in o)I(t,e,{get:o[e],enumerable:!0})},L=(t,o,e,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of q(o))!J.call(t,n)&&n!==e&&I(t,n,{get:()=>o[n],enumerable:!(i=G(o,n))||i.enumerable});return t};var M=(t,o,e)=>(e=t!=null?j(F(t)):{},L(o||!t||!t.__esModule?I(e,"default",{value:t,enumerable:!0}):e,t)),Q=t=>L(I({},"__esModule",{value:!0}),t);var at={};K(at,{ToastContainer:()=>rt,toast:()=>a,toastStore:()=>f,useToasts:()=>C});module.exports=Q(at);var H=()=>{let t=0;return()=>String(t++)};var P=class{state=[];listeners=new Set;activatedToasts=new Set;toastTimers=new Map;constructor(){}subscribe(o){return this.listeners.add(o),()=>{this.listeners.delete(o)}}setState(o){this.state=typeof o=="function"?o(this.state):o,this.listeners.forEach(e=>e())}getSnapShot(){return this.state}};var p="react-strawberry-toast";var D=t=>{let o=r=>{let s=t.toastTimers.get(r);clearTimeout(s),t.toastTimers.delete(r)},e=r=>{t.activatedToasts.add(r)},i=r=>t.activatedToasts.has(r),n=(r,s=200)=>{i(r)&&(t.activatedToasts.delete(r),setTimeout(()=>{t.state=t.state.filter(c=>c.toastId!==r),t.setState([...t.state])},s),o(r))},l=()=>{t.setState([])},y=(r,s,c)=>{t.state=t.state.map(v=>v.toastId===r?{...v,...c,updated:new Date().getTime(),data:s}:v),t.setState([...t.state])},m=r=>{let s=new Date().getTime();t.state=t.state.map(c=>c.toastId===r?{...c,pausedAt:s}:c),o(r),t.setState([...t.state])},u=(r,s)=>{let c=setTimeout(()=>{var A;t.state=t.state.map(w=>w.toastId===r?{...w,isVisible:!1}:w),t.setState([...t.state]);let v=(A=t.state.find(w=>w.toastId===r))==null?void 0:A.removeTimeOut;n(r,v)},s>2147483647?2147483647:s);t.toastTimers.set(r,c)};return{setActive:e,isActive:i,disappear:u,resume:r=>{if(t.toastTimers.has(r))return;let s=t.state.find(v=>v.toastId===r);if(!s)return;let c=s.createdAt+(s.timeOut||3e3)-(s.pausedAt||0);u(r,c)},pause:m,replace:y,remove:n,allClear:l}};var f=new P,Z=H(),g=(t="default")=>(o,e={})=>{let{timeOut:i=3e3,removeTimeOut:n=200,pauseOnHover:l=!0,toastId:y}=e,m=y||Z();if(a.isActive(m))throw new Error("A duplicate custom ID is not available.");let u=new Date().getTime(),d={updated:null,pausedAt:null,icon:e.icon||null,containerId:e.containerId||null,position:e.position||null,timeOut:i>2147483647?2147483647:i,toastId:m,data:o,createdAt:u,toastType:t,pauseOnHover:l,removeTimeOut:n,isVisible:!0};return f.state.push(d),f.setState([...f.state]),m},a=(t,o={})=>g()(t,o),h=D(f);a.setActive=h.setActive;a.isActive=h.isActive;a.disappear=h.disappear;a.resume=h.resume;a.pause=h.pause;a.replace=h.replace;a.remove=h.remove;a.allClear=h.allClear;a.success=g("success");a.error=g("error");a.warn=g("warn");a.loading=g("loading");a.custom=g("custom");a.promise=(t,o,e={})=>{let{loading:i,success:n,error:l}=o,y=a.loading(i,{...e,timeOut:2147483647});t.then(m=>{a.replace(y,typeof n=="function"?n(m):n,{...e,timeOut:e.timeOut||3e3,toastType:"success"})}).catch(m=>{a.replace(y,typeof l=="function"?l(m):l,{...e,timeOut:e.timeOut||3e3,toastType:"error"})})};var O=M(require("react"));var _=M(require("react"));var z=require("react");function W({condition:t,children:o}){let e=z.Children.toArray(o);if(e.length>2)throw new Error("The number of children exceeds two.");return e.find(i=>t?i.key===".0":i.key===".1")}function Y({children:t}){return t}function U({children:t}){return t}var V=({isVisible:t,position:o})=>t?/top/i.test(o)?`${p}__fade-in`:`${p}__fade-in-reverse`:/bottom/i.test(o)?`${p}__fade-out-reverse`:`${p}__fade-out`;var T=M(require("react"));function tt(){return T.default.createElement("svg",{stroke:"none",fill:"none",strokeWidth:"2",viewBox:"0 0 24 24",strokeLinecap:"round",strokeLinejoin:"round",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},T.default.createElement("path",{stroke:"none",d:"M0 0h24v24H0z"}),T.default.createElement("path",{d:"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z",strokeWidth:"0",fill:"#1ab173"}))}function et(){return T.default.createElement("svg",{stroke:"none",fill:"#eb2639",strokeWidth:"2",viewBox:"0 0 24 24",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},T.default.createElement("path",{d:"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z"}))}function ot(){return T.default.createElement("svg",{stroke:"none",fill:"#fcba03",strokeWidth:"0",viewBox:"0 0 1024 1024",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},T.default.createElement("path",{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"}))}var S={success:T.default.createElement(tt,null),error:T.default.createElement(et,null),loading:T.default.createElement("div",{className:`${p}__loading`}),warn:T.default.createElement(ot,null)};function X({toastProps:t,pauseOnActivate:o}){let{toastId:e,isVisible:i,timeOut:n,containerId:l,icon:y,updated:m,toastType:u,position:d,data:r,pauseOnHover:s}=t,c=V({isVisible:i,position:d}),v=typeof r=="function"?r({toastId:e,close:()=>a.disappear(e,0),immediatelyClose:()=>{a.disappear(e,0),a.remove(e,0)},icons:{success:S.success,error:S.error,warn:S.warn,loading:S.loading},isVisible:i}):r,A=()=>{s&&a.pause(e)},w=()=>{s&&a.resume(e)};(0,_.useEffect)(()=>{if(!o)return;let E=()=>{a.resume(e)},$=()=>{a.pause(e)};return window.addEventListener("focus",E),window.addEventListener("blur",$),()=>{window.removeEventListener("focus",E),window.removeEventListener("blur",$)}},[]),(0,_.useEffect)(()=>{a.isActive(e)||(a.setActive(e),a.disappear(e,n))},[e]),(0,_.useEffect)(()=>{if(m!==null){let E=n>=2147483647?3e3:n;a.disappear(e,E)}},[m]);let N=y||(u==="custom"||u==="default"?null:S[u]);return _.default.createElement("div",{role:"alert",className:`${p}__toast${/center/i.test(d)&&!l?"-center":""} ${u==="custom"?"":c}`,"data-testid":`container-${l||"default"}`,onMouseEnter:A,onMouseLeave:w},_.default.createElement(W,{condition:u!=="custom"},_.default.createElement(Y,null,_.default.createElement("div",{className:`${p}__toast-content`},N&&_.default.createElement("span",{className:`${p}__toast-icon`},N),v)),_.default.createElement(U,null,v)))}var B=require("react");var C=()=>(0,B.useSyncExternalStore)(f.subscribe.bind(f),f.getSnapShot.bind(f),f.getSnapShot.bind(f));var R=({position:t,reverse:o=!1})=>/top/i.test(t)?o?"column-reverse":"column":/bottom/i.test(t)?o?"column":"column-reverse":"column";function rt({className:t,style:o,position:e="top-center",containerId:i="",gap:n=9,reverse:l=!1,pauseOnActivate:y=!0}){let u=C().reduce((d,r)=>{let s=r.position||e;return r.position=s,d[s]=d[s]||[],d[s].push(r),d},{});return O.default.createElement("div",{id:`${p}__root`},Object.entries(u).map(([d,r])=>{let s=R({position:d,reverse:l});return O.default.createElement("div",{key:d,"data-testid":d,className:`${`${p}__z9999`} ${t||`${p}__toast-container ${p}__${d}`}`,style:o||{flexDirection:s,gap:n}},r.filter(c=>i?c.containerId===i:!c.containerId).map(c=>O.default.createElement(X,{key:c.toastId,toastProps:c,pauseOnActivate:y})))}))}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var z=()=>{let t=0;return()=>String(t++)};var P=class{state=[];listeners=new Set;activatedToasts=new Set;toastTimers=new Map;constructor(){}subscribe(r){return this.listeners.add(r),()=>{this.listeners.delete(r)}}setState(r){this.state=typeof r=="function"?r(this.state):r,this.listeners.forEach(n=>n())}getSnapShot(){return this.state}};var x="react-strawberry-toast";var U=t=>{let r=e=>{let i=t.toastTimers.get(e);clearTimeout(i),t.toastTimers.delete(e)},n=e=>{t.activatedToasts.add(e)},a=e=>t.activatedToasts.has(e),p=(e,i=200)=>{a(e)&&(t.activatedToasts.delete(e),setTimeout(()=>{t.state=t.state.filter(m=>m.toastId!==e),t.setState([...t.state])},i),r(e))},l=()=>{t.setState([])},y=(e,i,m)=>{t.state=t.state.map(v=>v.toastId===e?{...v,...m,updated:new Date().getTime(),data:i}:v),t.setState([...t.state])},s=e=>{let i=new Date().getTime();t.state=t.state.map(m=>m.toastId===e?{...m,pausedAt:i}:m),r(e),t.setState([...t.state])},d=(e,i)=>{let m=setTimeout(()=>{var _;t.state=t.state.map(S=>S.toastId===e?{...S,isVisible:!1}:S),t.setState([...t.state]);let v=(_=t.state.find(S=>S.toastId===e))==null?void 0:_.removeTimeOut;p(e,v)},i>2147483647?2147483647:i);t.toastTimers.set(e,m)};return{setActive:n,isActive:a,disappear:d,resume:e=>{if(t.toastTimers.has(e))return;let i=t.state.find(v=>v.toastId===e);if(!i)return;let m=i.createdAt+(i.timeOut||3e3)-(i.pausedAt||0);d(e,m)},pause:s,replace:y,remove:p,allClear:l}};var f=new P,$=z(),I=(t="default")=>(r,n={})=>{let{timeOut:a=3e3,removeTimeOut:p=200,pauseOnHover:l=!0,toastId:y}=n,s=y||$();if(o.isActive(s))throw new Error("A duplicate custom ID is not available.");let d=new Date().getTime(),u={updated:null,pausedAt:null,containerId:n.containerId||null,position:n.position||null,timeOut:a>2147483647?2147483647:a,toastId:s,data:r,createdAt:d,toastType:t,pauseOnHover:l,removeTimeOut:p,isVisible:!0};return f.state.push(u),f.setState([...f.state]),s},o=(t,r={})=>I()(t,r),w=U(f);o.setActive=w.setActive;o.isActive=w.isActive;o.disappear=w.disappear;o.resume=w.resume;o.pause=w.pause;o.replace=w.replace;o.remove=w.remove;o.allClear=w.allClear;o.success=I("success");o.error=I("error");o.warn=I("warn");o.loading=I("loading");o.custom=I("custom");o.promise=(t,r,n={})=>{let{loading:a,success:p,error:l}=r,y=o.loading(a,{...n,timeOut:2147483647});t.then(s=>{o.replace(y,typeof p=="function"?p(s):p,{...n,timeOut:n.timeOut||3e3,toastType:"success"})}).catch(s=>{o.replace(y,typeof l=="function"?l(s):l,{...n,timeOut:n.timeOut||3e3,toastType:"error"})})};import h from"react";import T,{useEffect as H}from"react";import{Children as B}from"react";function k({condition:t,children:r}){let n=B.toArray(r);if(n.length>2)throw new Error("The number of children exceeds two.");return n.find(a=>t?a.key===".0":a.key===".1")}function C({children:t}){return t}function M({children:t}){return t}var V=({isVisible:t,position:r})=>t?/top/i.test(r)?`${x}__fade-in`:`${x}__fade-in-reverse`:/bottom/i.test(r)?`${x}__fade-out-reverse`:`${x}__fade-out`;import g from"react";function j(){return g.createElement("svg",{stroke:"none",fill:"none",strokeWidth:"2",viewBox:"0 0 24 24",strokeLinecap:"round",strokeLinejoin:"round",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},g.createElement("path",{stroke:"none",d:"M0 0h24v24H0z"}),g.createElement("path",{d:"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z",strokeWidth:"0",fill:"#1ab173"}))}function F(){return g.createElement("svg",{stroke:"none",fill:"#eb2639",strokeWidth:"2",viewBox:"0 0 24 24",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},g.createElement("path",{d:"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z"}))}function G(){return g.createElement("svg",{stroke:"none",fill:"#fcba03",strokeWidth:"0",viewBox:"0 0 1024 1024",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},g.createElement("path",{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"}))}var A={success:j,error:F,loading:()=>g.createElement("div",{className:`${x}__loading`}),warn:G};function D({toastProps:t,pauseOnActivate:r,...n}){let{toastId:a,isVisible:p,timeOut:l,containerId:y,updated:s,toastType:d,position:u,data:e,pauseOnHover:i}=t,m=V({isVisible:p,position:u}),v=typeof e=="function"?e({toastId:a,close:()=>o.disappear(a,0),immediatelyClose:()=>{o.disappear(a,0),o.remove(a,0)},icons:{success:T.createElement(A.success,null),error:T.createElement(A.error,null),warn:T.createElement(A.warn,null),loading:T.createElement(A.loading,null)},isVisible:p}):e,_=()=>{i&&o.pause(a)},S=()=>{i&&o.resume(a)};H(()=>{if(!r)return;let O=()=>{o.resume(a)},W=()=>{o.pause(a)};return window.addEventListener("focus",O),window.addEventListener("blur",W),()=>{window.removeEventListener("focus",O),window.removeEventListener("blur",W)}},[]),H(()=>{o.isActive(a)||(o.setActive(a),o.disappear(a,l))},[a]),H(()=>{if(s!==null){let O=l>=2147483647?3e3:l;o.disappear(a,O)}},[s]);let L=d==="custom"||d==="default"?null:A[d];return T.createElement("div",{...n},T.createElement(k,{condition:d!=="custom"},T.createElement(C,null,T.createElement("div",{role:"alert",className:d==="custom"?"":m,"data-testid":`container-${y}`,onMouseEnter:_,onMouseLeave:S,style:{boxSizing:"border-box",backgroundColor:"white",padding:"12px 14px 12px 12px",display:"flex",alignItems:"center",gap:5,borderRadius:8,boxShadow:"2px 4px 10px rgba(0, 0, 0, 0.1)"}},L&&T.createElement("span",{style:{minWidth:20,maxWidth:20}},T.createElement(L,null)),v)),T.createElement(M,null,v)))}import{useSyncExternalStore as q}from"react";var Y=()=>q(f.subscribe.bind(f),f.getSnapShot.bind(f),f.getSnapShot.bind(f));var X=({position:t,reverse:r=!1})=>/top/i.test(t)?r?"column-reverse":"column":/bottom/i.test(t)?r?"column":"column-reverse":"column";var c=16,J={"top-left":{top:c,left:c},"top-center":{top:c,left:"50%",transform:"translateX(-50%)"},"top-right":{top:c,right:c},"bottom-left":{bottom:c,left:c},"bottom-center":{bottom:c,left:"50%",transform:"translateX(-50%)"},"bottom-right":{bottom:c,right:c}};function Mt({position:t="top-center",containerId:r="",gap:n=9,reverse:a=!1,pauseOnActivate:p=!0}){let l=Y(),y=l.filter(s=>s.containerId===null).reduce((s,d)=>{let u=d.position||t;return d.position=u,s[u]=s[u]||[],s[u].push(d),s},{});return h.createElement(k,{condition:!!r},h.createElement(C,null,h.createElement("div",{style:{position:"absolute",zIndex:9999,pointerEvents:"none"}},h.createElement("div",{style:{pointerEvents:"auto",display:"flex",flexDirection:a?"column-reverse":"column",gap:n}},l.filter(s=>s.containerId===r).map(s=>h.createElement(D,{key:s.toastId,pauseOnActivate:p,toastProps:s,style:{display:"flex"}}))))),h.createElement(M,null,h.createElement("div",{style:{position:"fixed",zIndex:9999,top:c,left:c,right:c,bottom:c,pointerEvents:"none"}},Object.entries(y).map(([s,d])=>{let u=J[s],e=X({position:s,reverse:a});return h.createElement("div",{key:s,"data-testid":s,style:{pointerEvents:"auto",position:"fixed",display:"flex",flexDirection:e,gap:n,...u}},d.map(i=>h.createElement(D,{key:i.toastId,toastProps:i,pauseOnActivate:p,style:{display:"flex",justifyContent:"center"}})))}))))}export{Mt as ToastContainer,o as toast,f as toastStore,Y as useToasts};
2
+ var N=()=>{let t=0;return()=>String(t++)};var I=class{state=[];listeners=new Set;activatedToasts=new Set;toastTimers=new Map;constructor(){}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}setState(a){this.state=typeof a=="function"?a(this.state):a,this.listeners.forEach(o=>o())}getSnapShot(){return this.state}};var c="react-strawberry-toast";var $=t=>{let a=e=>{let s=t.toastTimers.get(e);clearTimeout(s),t.toastTimers.delete(e)},o=e=>{t.activatedToasts.add(e)},i=e=>t.activatedToasts.has(e),d=(e,s=200)=>{i(e)&&(t.activatedToasts.delete(e),setTimeout(()=>{t.state=t.state.filter(n=>n.toastId!==e),t.setState([...t.state])},s),a(e))},l=()=>{t.setState([])},f=(e,s,n)=>{t.state=t.state.map(_=>_.toastId===e?{..._,...n,updated:new Date().getTime(),data:s}:_),t.setState([...t.state])},m=e=>{let s=new Date().getTime();t.state=t.state.map(n=>n.toastId===e?{...n,pausedAt:s}:n),a(e),t.setState([...t.state])},u=(e,s)=>{let n=setTimeout(()=>{var A;t.state=t.state.map(h=>h.toastId===e?{...h,isVisible:!1}:h),t.setState([...t.state]);let _=(A=t.state.find(h=>h.toastId===e))==null?void 0:A.removeTimeOut;d(e,_)},s>2147483647?2147483647:s);t.toastTimers.set(e,n)};return{setActive:o,isActive:i,disappear:u,resume:e=>{if(t.toastTimers.has(e))return;let s=t.state.find(_=>_.toastId===e);if(!s)return;let n=s.createdAt+(s.timeOut||3e3)-(s.pausedAt||0);u(e,n)},pause:m,replace:f,remove:d,allClear:l}};var T=new I,V=N(),x=(t="default")=>(a,o={})=>{let{timeOut:i=3e3,removeTimeOut:d=200,pauseOnHover:l=!0,toastId:f}=o,m=f||V();if(r.isActive(m))throw new Error("A duplicate custom ID is not available.");let u=new Date().getTime(),p={updated:null,pausedAt:null,icon:o.icon||null,containerId:o.containerId||null,position:o.position||null,timeOut:i>2147483647?2147483647:i,toastId:m,data:a,createdAt:u,toastType:t,pauseOnHover:l,removeTimeOut:d,isVisible:!0};return T.state.push(p),T.setState([...T.state]),m},r=(t,a={})=>x()(t,a),b=$(T);r.setActive=b.setActive;r.isActive=b.isActive;r.disappear=b.disappear;r.resume=b.resume;r.pause=b.pause;r.replace=b.replace;r.remove=b.remove;r.allClear=b.allClear;r.success=x("success");r.error=x("error");r.warn=x("warn");r.loading=x("loading");r.custom=x("custom");r.promise=(t,a,o={})=>{let{loading:i,success:d,error:l}=a,f=r.loading(i,{...o,timeOut:2147483647});t.then(m=>{r.replace(f,typeof d=="function"?d(m):d,{...o,timeOut:o.timeOut||3e3,toastType:"success"})}).catch(m=>{r.replace(f,typeof l=="function"?l(m):l,{...o,timeOut:o.timeOut||3e3,toastType:"error"})})};import M from"react";import S,{useEffect as O}from"react";import{Children as X}from"react";function L({condition:t,children:a}){let o=X.toArray(a);if(o.length>2)throw new Error("The number of children exceeds two.");return o.find(i=>t?i.key===".0":i.key===".1")}function H({children:t}){return t}function D({children:t}){return t}var z=({isVisible:t,position:a})=>t?/top/i.test(a)?`${c}__fade-in`:`${c}__fade-in-reverse`:/bottom/i.test(a)?`${c}__fade-out-reverse`:`${c}__fade-out`;import y from"react";function B(){return y.createElement("svg",{stroke:"none",fill:"none",strokeWidth:"2",viewBox:"0 0 24 24",strokeLinecap:"round",strokeLinejoin:"round",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},y.createElement("path",{stroke:"none",d:"M0 0h24v24H0z"}),y.createElement("path",{d:"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z",strokeWidth:"0",fill:"#1ab173"}))}function R(){return y.createElement("svg",{stroke:"none",fill:"#eb2639",strokeWidth:"2",viewBox:"0 0 24 24",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},y.createElement("path",{d:"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z"}))}function j(){return y.createElement("svg",{stroke:"none",fill:"#fcba03",strokeWidth:"0",viewBox:"0 0 1024 1024",height:"22",width:"22",xmlns:"http://www.w3.org/2000/svg"},y.createElement("path",{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"}))}var g={success:y.createElement(B,null),error:y.createElement(R,null),loading:y.createElement("div",{className:`${c}__loading`}),warn:y.createElement(j,null)};function W({toastProps:t,pauseOnActivate:a}){let{toastId:o,isVisible:i,timeOut:d,containerId:l,icon:f,updated:m,toastType:u,position:p,data:e,pauseOnHover:s}=t,n=z({isVisible:i,position:p}),_=typeof e=="function"?e({toastId:o,close:()=>r.disappear(o,0),immediatelyClose:()=>{r.disappear(o,0),r.remove(o,0)},icons:{success:g.success,error:g.error,warn:g.warn,loading:g.loading},isVisible:i}):e,A=()=>{s&&r.pause(o)},h=()=>{s&&r.resume(o)};O(()=>{if(!a)return;let E=()=>{r.resume(o)},C=()=>{r.pause(o)};return window.addEventListener("focus",E),window.addEventListener("blur",C),()=>{window.removeEventListener("focus",E),window.removeEventListener("blur",C)}},[]),O(()=>{r.isActive(o)||(r.setActive(o),r.disappear(o,d))},[o]),O(()=>{if(m!==null){let E=d>=2147483647?3e3:d;r.disappear(o,E)}},[m]);let k=f||(u==="custom"||u==="default"?null:g[u]);return S.createElement("div",{role:"alert",className:`${c}__toast${/center/i.test(p)&&!l?"-center":""} ${u==="custom"?"":n}`,"data-testid":`container-${l||"default"}`,onMouseEnter:A,onMouseLeave:h},S.createElement(L,{condition:u!=="custom"},S.createElement(H,null,S.createElement("div",{className:`${c}__toast-content`},k&&S.createElement("span",{className:`${c}__toast-icon`},k),_)),S.createElement(D,null,_)))}import{useSyncExternalStore as G}from"react";var Y=()=>G(T.subscribe.bind(T),T.getSnapShot.bind(T),T.getSnapShot.bind(T));var U=({position:t,reverse:a=!1})=>/top/i.test(t)?a?"column-reverse":"column":/bottom/i.test(t)?a?"column":"column-reverse":"column";function Mt({className:t,style:a,position:o="top-center",containerId:i="",gap:d=9,reverse:l=!1,pauseOnActivate:f=!0}){let u=Y().reduce((p,e)=>{let s=e.position||o;return e.position=s,p[s]=p[s]||[],p[s].push(e),p},{});return M.createElement("div",{id:`${c}__root`},Object.entries(u).map(([p,e])=>{let s=U({position:p,reverse:l});return M.createElement("div",{key:p,"data-testid":p,className:`${`${c}__z9999`} ${t||`${c}__toast-container ${c}__${p}`}`,style:a||{flexDirection:s,gap:d}},e.filter(n=>i?n.containerId===i:!n.containerId).map(n=>M.createElement(W,{key:n.toastId,toastProps:n,pauseOnActivate:f})))}))}export{Mt as ToastContainer,r as toast,T as toastStore,Y as useToasts};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @keyframes l3{to{transform:rotate(1turn)}}@keyframes react-strawberry-toast_fade-in{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes react-strawberry-toast_fade-out{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@keyframes react-strawberry-toast_fade-in-reverse{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes react-strawberry-toast_fade-out-reverse{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.react-strawberry-toast__fade-in{animation:react-strawberry-toast_fade-in .3s ease-out}.react-strawberry-toast__fade-out{animation:react-strawberry-toast_fade-out .3s ease-out}.react-strawberry-toast__fade-in-reverse{animation:react-strawberry-toast_fade-in-reverse .3s ease-out}.react-strawberry-toast__fade-out-reverse{animation:react-strawberry-toast_fade-out-reverse .3s ease-out}.react-strawberry-toast__loading{width:15px;padding:3px;aspect-ratio:1;border-radius:50%;background:#6b6875;--_m: conic-gradient(#0000 10%, #000), linear-gradient(#000 0 0) content-box;-webkit-mask:var(--_m);mask:var(--_m);-webkit-mask-composite:source-out;mask-composite:subtract;animation:l3 1s infinite linear}
1
+ @keyframes l3{to{transform:rotate(1turn)}}@keyframes react-strawberry-toast_fade-in{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes react-strawberry-toast_fade-out{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@keyframes react-strawberry-toast_fade-in-reverse{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes react-strawberry-toast_fade-out-reverse{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.react-strawberry-toast__z9999{z-index:9999}.react-strawberry-toast__toast-container{pointer-events:auto;position:fixed;z-index:9999;display:flex}.react-strawberry-toast__top-left{top:16px;left:16px}.react-strawberry-toast__top-center{top:16px;left:50%;transform:translate(-50%)}.react-strawberry-toast__top-right{top:16px;right:16px}.react-strawberry-toast__bottom-left{bottom:16px;left:16px}.react-strawberry-toast__bottom-center{bottom:16px;left:50%;transform:translate(-50%)}.react-strawberry-toast__bottom-right{bottom:16px;right:16px}.react-strawberry-toast__toast{display:flex}.react-strawberry-toast__toast-center{display:flex;justify-content:center}.react-strawberry-toast__toast-content{box-sizing:border-box;background-color:#fff;padding:10px;display:flex;align-items:center;gap:5px;border-radius:8px;box-shadow:2px 4px 10px #0000001a;min-height:47px}.react-strawberry-toast__toast-icon{width:20px}.react-strawberry-toast__fade-in{animation:react-strawberry-toast_fade-in .3s ease-out}.react-strawberry-toast__fade-out{animation:react-strawberry-toast_fade-out .3s ease-out}.react-strawberry-toast__fade-in-reverse{animation:react-strawberry-toast_fade-in-reverse .3s ease-out}.react-strawberry-toast__fade-out-reverse{animation:react-strawberry-toast_fade-out-reverse .3s ease-out}.react-strawberry-toast__loading{width:18px;padding:3.5px;aspect-ratio:1;border-radius:50%;background:#6f6f70;--_m: conic-gradient(#0000 10%, #000), linear-gradient(#000 0 0) content-box;-webkit-mask:var(--_m);mask:var(--_m);-webkit-mask-composite:source-out;mask-composite:subtract;animation:l3 1s infinite linear}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-strawberry-toast",
3
3
  "description": "A simple and customizable React toast library",
4
- "version": "1.2.2",
4
+ "version": "1.3.0",
5
5
  "author": "dkpark10",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -57,21 +57,21 @@
57
57
  "test:ui": "vitest --ui",
58
58
  "test:coverage": "vitest --coverage",
59
59
  "prepare": "husky install",
60
- "deploy": "pnpm run build && npm publish --access=public"
60
+ "deploy": "pnpm run test && pnpm run build && npm publish --access=public"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@commitlint/cli": "^19.6.1",
64
64
  "@commitlint/config-conventional": "^19.6.0",
65
65
  "@testing-library/jest-dom": "^6.6.3",
66
66
  "@testing-library/react": "^15.0.7",
67
- "@types/react": "^18.3.12",
68
- "@types/react-dom": "^18.3.1",
67
+ "@types/react": "^18",
68
+ "@types/react-dom": "^18",
69
69
  "concurrently": "^9.1.0",
70
70
  "esbuild-sass-plugin": "^3.3.1",
71
71
  "husky": "^8",
72
72
  "jsdom": "^24.0.0",
73
- "react": "^18.2.0",
74
- "react-dom": "^18.2.0",
73
+ "react": "^18",
74
+ "react-dom": "^18",
75
75
  "rollup-preserve-directives": "^1.1.3",
76
76
  "sass": "^1.83.0",
77
77
  "tsup": "^8.3.5",