react-toast-msg 2.2.6 → 2.5.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 +7 -6
- package/dist/index.d.mts +2 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.js +1 -2
- package/dist/index.mjs +1 -2
- package/dist/style.css +1 -0
- package/package.json +12 -11
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ A lightweight and customizable React toast notification library.
|
|
|
15
15
|
```bash
|
|
16
16
|
npm i react-toast-msg
|
|
17
17
|
```
|
|
18
|
+
|
|
18
19
|
---
|
|
19
20
|
|
|
20
21
|
## Usage
|
|
@@ -27,7 +28,7 @@ import { toast, ToastContainer } from 'react-toast-msg';
|
|
|
27
28
|
export default function Example() {
|
|
28
29
|
return (
|
|
29
30
|
<>
|
|
30
|
-
<ToastContainer autoClose={3000}
|
|
31
|
+
<ToastContainer autoClose={3000} closeButton={true} />
|
|
31
32
|
|
|
32
33
|
<button onClick={() => toast('Default toast')}>Default</button>
|
|
33
34
|
<button onClick={() => toast.success('Success toast')}>Success</button>
|
|
@@ -71,15 +72,15 @@ You can now define a custom timeout per toast.
|
|
|
71
72
|
|
|
72
73
|
## ToastContainer Props
|
|
73
74
|
|
|
74
|
-
| Prop
|
|
75
|
-
|
|
|
76
|
-
| autoClose
|
|
77
|
-
|
|
|
75
|
+
| Prop | Type | Default | Description |
|
|
76
|
+
| ----------- | ------- | ------- | ------------------------------------------------- |
|
|
77
|
+
| autoClose | number | 3000 | Default close time in milliseconds for all toasts |
|
|
78
|
+
| closeButton | boolean | false | Close button visibility for all toasts |
|
|
78
79
|
|
|
79
80
|
Usage:
|
|
80
81
|
|
|
81
82
|
```jsx
|
|
82
|
-
<ToastContainer autoClose={3000}
|
|
83
|
+
<ToastContainer autoClose={3000} closeButton={false} /> // Default
|
|
83
84
|
```
|
|
84
85
|
|
|
85
86
|
---
|
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
3
|
type ToastType = 'success' | 'error' | 'warning' | 'default';
|
|
4
|
-
type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
5
4
|
interface ToastContainerProps {
|
|
6
5
|
autoClose?: number;
|
|
7
|
-
|
|
6
|
+
closeButton?: boolean;
|
|
8
7
|
}
|
|
9
8
|
|
|
10
|
-
declare function ToastContainer({ autoClose,
|
|
9
|
+
declare function ToastContainer({ autoClose, closeButton }: ToastContainerProps): react_jsx_runtime.JSX.Element;
|
|
11
10
|
declare function toast(message: string, type?: ToastType | number, duration?: number): void;
|
|
12
11
|
declare namespace toast {
|
|
13
12
|
var success: (message: string, duration?: number) => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
3
|
type ToastType = 'success' | 'error' | 'warning' | 'default';
|
|
4
|
-
type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
5
4
|
interface ToastContainerProps {
|
|
6
5
|
autoClose?: number;
|
|
7
|
-
|
|
6
|
+
closeButton?: boolean;
|
|
8
7
|
}
|
|
9
8
|
|
|
10
|
-
declare function ToastContainer({ autoClose,
|
|
9
|
+
declare function ToastContainer({ autoClose, closeButton }: ToastContainerProps): react_jsx_runtime.JSX.Element;
|
|
11
10
|
declare function toast(message: string, type?: ToastType | number, duration?: number): void;
|
|
12
11
|
declare namespace toast {
|
|
13
12
|
var success: (message: string, duration?: number) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var
|
|
3
|
-
`);var f=require("react");function m(t){return t?t.split(" ").filter(Boolean).map(o=>`rtm-${o}`).join(" "):""}var b=require("react/jsx-runtime");function x({message:t,type:o="default",icon:r,leaving:a,position:e}){return(0,b.jsxs)("div",{className:m(`toast toast-${o} ${a?"toast-exit":"toast-enter"}-${e}`),children:[r,t]})}var n=require("react/jsx-runtime"),y=({size:t=24,strokeWidth:o=2})=>(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:12,cy:12,r:10}),(0,n.jsx)("path",{d:"m9 12 2 2 4-4"})]}),w=({size:t=24,strokeWidth:o=2})=>(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-circle-x-icon lucide-circle-x",children:[(0,n.jsx)("circle",{cx:12,cy:12,r:10}),(0,n.jsx)("path",{d:"m15 9-6 6"}),(0,n.jsx)("path",{d:"m9 9 6 6"})]}),T=({size:t=24,strokeWidth:o=2})=>(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-triangle-alert-icon lucide-triangle-alert",children:[(0,n.jsx)("path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}),(0,n.jsx)("path",{d:"M12 9v4"}),(0,n.jsx)("path",{d:"M12 17h.01"})]});var l=require("react/jsx-runtime");function v(t){switch(t){case"success":return(0,l.jsx)(y,{size:20});case"error":return(0,l.jsx)(w,{size:20});case"warning":return(0,l.jsx)(T,{size:18});default:return null}}var g=require("react/jsx-runtime"),p=null;function k({autoClose:t=3e3,position:o="top-right"}){let[r,a]=(0,f.useState)([]);return(0,f.useEffect)(()=>{p=(e,h="default",E)=>{let d=Date.now(),I=E||t;a(s=>[...s,{id:d,message:e,type:h,leaving:!1}]),setTimeout(()=>{a(s=>s.map(c=>c.id===d?{...c,leaving:!0}:c)),setTimeout(()=>{a(s=>s.filter(c=>c.id!==d))},400)},I)}},[t,o]),(0,g.jsx)("div",{className:m(`toast-container toast-container-${o}`),children:r.map(e=>(0,g.jsx)(x,{message:e.message,type:e.type,icon:v(e.type),leaving:e.leaving,position:o},e.id))})}function i(t,o,r){p&&(typeof o=="number"?p(t,"default",o):p(t,o,r))}i.success=(t,o)=>i(t,"success",o);i.error=(t,o)=>i(t,"error",o);i.warning=(t,o)=>i(t,"warning",o);0&&(module.exports={ToastContainer,toast});
|
|
2
|
+
"use strict";var R=Object.create;var f=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var k=(e,o)=>{for(var r in o)f(e,r,{get:o[r],enumerable:!0})},b=(e,o,r,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of B(o))!E.call(e,t)&&t!==r&&f(e,t,{get:()=>o[t],enumerable:!(s=S(o,t))||s.enumerable});return e};var F=(e,o,r)=>(r=e!=null?R(V(e)):{},b(o||!e||!e.__esModule?f(r,"default",{value:e,enumerable:!0}):r,e)),W=e=>b(f({},"__esModule",{value:!0}),e);var q={};k(q,{ToastContainer:()=>N,toast:()=>a});module.exports=W(q);var w=require("react");var d=require("react");var h=require("tailwind-merge"),I=F(require("clsx"));function n(...e){return(0,h.twMerge)((0,I.default)(e))}var p=require("react/jsx-runtime");function C({message:e,type:o="default",icon:r,leaving:s,setToasts:t,id:T,closeButton:x}){let[m,u]=(0,d.useState)(!1);(0,d.useEffect)(()=>{requestAnimationFrame(()=>u(!0))},[]);let i=()=>{u(!1),setTimeout(()=>{t==null||t(l=>l.filter(L=>L.id!==T))},300)};return(0,p.jsxs)("div",{className:n("pointer-events-auto relative flex min-w-62 max-w-80 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-zinc-800 transition-all duration-300 ease-out",m&&!s?"translate-y-0 opacity-100":"translate-y-10 opacity-0",o==="default"?"px-4":"px-3"),children:[r,e,x&&(0,p.jsx)("button",{onClick:i,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:(0,p.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:(0,p.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 c=require("react/jsx-runtime"),Z=({className:e})=>(0,c.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-6",e),children:(0,c.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"})}),P=({className:e})=>(0,c.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-6",e),children:(0,c.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"})}),z=({className:e})=>(0,c.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:n("size-6",e),children:(0,c.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 M(e){switch(e){case"success":return(0,g.jsx)(Z,{});case"error":return(0,g.jsx)(P,{});case"warning":return(0,g.jsx)(z,{});default:return null}}var y=require("react/jsx-runtime"),v=null;function N({autoClose:e=3e3,closeButton:o=!1}){let[r,s]=(0,w.useState)([]);return(0,w.useEffect)(()=>{v=(t,T="default",x)=>{let m=Date.now(),u=x||e;s(i=>[...i,{id:m,message:t,type:T,leaving:!1}]),setTimeout(()=>{s(i=>i.map(l=>l.id===m?{...l,leaving:!0}:l)),setTimeout(()=>{s(i=>i.filter(l=>l.id!==m))},300)},u)}},[e]),(0,y.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:r.map(t=>(0,y.jsx)(C,{id:t.id,message:t.message,setToasts:s,type:t.type,icon:M(t.type),leaving:t.leaving,closeButton:o},t.id))})}function a(e,o,r){v&&(typeof o=="number"?v(e,"default",o):v(e,o,r))}a.success=(e,o)=>a(e,"success",o);a.error=(e,o)=>a(e,"error",o);a.warning=(e,o)=>a(e,"warning",o);0&&(module.exports={ToastContainer,toast});
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
function
|
|
3
|
-
`);import{useState as I,useEffect as L}from"react";function m(t){return t?t.split(" ").filter(Boolean).map(o=>`rtm-${o}`).join(" "):""}import{jsxs as E}from"react/jsx-runtime";function g({message:t,type:o="default",icon:r,leaving:i,position:e}){return E("div",{className:m(`toast toast-${o} ${i?"toast-exit":"toast-enter"}-${e}`),children:[r,t]})}import{jsx as n,jsxs as f}from"react/jsx-runtime";var h=({size:t=24,strokeWidth:o=2})=>f("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",children:[n("circle",{cx:12,cy:12,r:10}),n("path",{d:"m9 12 2 2 4-4"})]}),x=({size:t=24,strokeWidth:o=2})=>f("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-circle-x-icon lucide-circle-x",children:[n("circle",{cx:12,cy:12,r:10}),n("path",{d:"m15 9-6 6"}),n("path",{d:"m9 9 6 6"})]}),b=({size:t=24,strokeWidth:o=2})=>f("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-triangle-alert-icon lucide-triangle-alert",children:[n("path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}),n("path",{d:"M12 9v4"}),n("path",{d:"M12 17h.01"})]});import{jsx as d}from"react/jsx-runtime";function y(t){switch(t){case"success":return d(h,{size:20});case"error":return d(x,{size:20});case"warning":return d(b,{size:18});default:return null}}import{jsx as w}from"react/jsx-runtime";var l=null;function z({autoClose:t=3e3,position:o="top-right"}){let[r,i]=I([]);return L(()=>{l=(e,u="default",T)=>{let p=Date.now(),v=T||t;i(s=>[...s,{id:p,message:e,type:u,leaving:!1}]),setTimeout(()=>{i(s=>s.map(c=>c.id===p?{...c,leaving:!0}:c)),setTimeout(()=>{i(s=>s.filter(c=>c.id!==p))},400)},v)}},[t,o]),w("div",{className:m(`toast-container toast-container-${o}`),children:r.map(e=>w(g,{message:e.message,type:e.type,icon:y(e.type),leaving:e.leaving,position:o},e.id))})}function a(t,o,r){l&&(typeof o=="number"?l(t,"default",o):l(t,o,r))}a.success=(t,o)=>a(t,"success",o);a.error=(t,o)=>a(t,"error",o);a.warning=(t,o)=>a(t,"warning",o);export{z as ToastContainer,a as toast};
|
|
2
|
+
import{useState as N,useEffect as L}from"react";import{useEffect as P,useState as z}from"react";import{twMerge as C}from"tailwind-merge";import Z from"clsx";function r(...e){return C(Z(e))}import{jsx as g,jsxs as M}from"react/jsx-runtime";function w({message:e,type:o="default",icon:c,leaving:i,setToasts:t,id:f,closeButton:d}){let[p,m]=z(!1);P(()=>{requestAnimationFrame(()=>m(!0))},[]);let s=()=>{m(!1),setTimeout(()=>{t==null||t(n=>n.filter(I=>I.id!==f))},300)};return M("div",{className:r("pointer-events-auto relative flex min-w-62 max-w-80 items-center gap-1 rounded-lg border border-gray-200/70 bg-white py-3 text-zinc-800 transition-all duration-300 ease-out",p&&!i?"translate-y-0 opacity-100":"translate-y-10 opacity-0",o==="default"?"px-4":"px-3"),children:[c,e,d&&g("button",{onClick:s,className:"absolute -top-2 -right-2 cursor-pointer rounded-full border border-gray-200/70 bg-white p-px text-zinc-500",children:g("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",className:"size-3",children:g("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 T=({className:e})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:r("size-6",e),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"})}),x=({className:e})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:r("size-6",e),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"})}),y=({className:e})=>l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:r("size-6",e),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 v}from"react/jsx-runtime";function b(e){switch(e){case"success":return v(T,{});case"error":return v(x,{});case"warning":return v(y,{});default:return null}}import{jsx as h}from"react/jsx-runtime";var u=null;function R({autoClose:e=3e3,closeButton:o=!1}){let[c,i]=N([]);return L(()=>{u=(t,f="default",d)=>{let p=Date.now(),m=d||e;i(s=>[...s,{id:p,message:t,type:f,leaving:!1}]),setTimeout(()=>{i(s=>s.map(n=>n.id===p?{...n,leaving:!0}:n)),setTimeout(()=>{i(s=>s.filter(n=>n.id!==p))},300)},m)}},[e]),h("div",{className:r("pointer-events-none fixed inset-0 z-9999 flex flex-col items-end justify-end gap-2 p-4 text-sm"),children:c.map(t=>h(w,{id:t.id,message:t.message,setToasts:i,type:t.type,icon:b(t.type),leaving:t.leaving,closeButton:o},t.id))})}function a(e,o,c){u&&(typeof o=="number"?u(e,"default",o):u(e,o,c))}a.success=(e,o)=>a(e,"success",o);a.error=(e,o)=>a(e,"error",o);a.warning=(e,o)=>a(e,"warning",o);export{R as ToastContainer,a as toast};
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@source '.';
|
package/package.json
CHANGED
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-toast-msg",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
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": "
|
|
9
|
+
"dev": "tsup --watch",
|
|
10
10
|
"prettier": "prettier --write src",
|
|
11
|
-
"build": "
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"printWidth": 120,
|
|
15
|
-
"semi": true,
|
|
16
|
-
"tabWidth": 4,
|
|
17
|
-
"singleQuote": true,
|
|
18
|
-
"trailingComma": "none",
|
|
19
|
-
"arrowParens": "avoid"
|
|
11
|
+
"build": "pnpm build:ts && pnpm build:css",
|
|
12
|
+
"build:ts": "tsup",
|
|
13
|
+
"build:css": "pnpx @tailwindcss/cli -i ./src/style.css -o ./dist/style.css"
|
|
20
14
|
},
|
|
21
15
|
"main": "dist/index.js",
|
|
22
16
|
"module": "dist/index.mjs",
|
|
@@ -47,11 +41,18 @@
|
|
|
47
41
|
"react-dom": "^18 || ^19"
|
|
48
42
|
},
|
|
49
43
|
"devDependencies": {
|
|
44
|
+
"@tailwindcss/cli": "^4.1.18",
|
|
50
45
|
"@types/react": "^19.2.2",
|
|
51
46
|
"@types/react-dom": "^19.2.2",
|
|
52
47
|
"@vitejs/plugin-react": "^4.3.4",
|
|
53
48
|
"prettier": "^3.6.2",
|
|
49
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
50
|
+
"tailwindcss": "^4.1.18",
|
|
54
51
|
"tsup": "^8.5.0",
|
|
55
52
|
"typescript": "^5.9.3"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"clsx": "^2.1.1",
|
|
56
|
+
"tailwind-merge": "^3.4.0"
|
|
56
57
|
}
|
|
57
58
|
}
|