react-toast-msg 0.0.1 → 0.1.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 +82 -0
- package/dist/index.es.js +136 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.js +140 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -11
package/README.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# 🚀 react-toast-msg
|
|
2
|
+
|
|
3
|
+
A lightweight, zero-config, customizable React toast notification library — just plug and play.
|
|
4
|
+
|
|
5
|
+
## ✨ Features
|
|
6
|
+
|
|
7
|
+
- ⚡ Extremely fast and minimal
|
|
8
|
+
- 📦 Tree-shakable and zero external CSS
|
|
9
|
+
- 🧩 Works with both `import` and `require`
|
|
10
|
+
- 🎨 Easy to style with utility classes
|
|
11
|
+
- ✅ Works with React 18+
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 📦 Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install react-toast-msg
|
|
19
|
+
# or
|
|
20
|
+
yarn add react-toast-msg
|
|
21
|
+
````
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 🔧 Usage
|
|
26
|
+
|
|
27
|
+
### 1. Add the `ToastContainer` at the root of your app (once):
|
|
28
|
+
|
|
29
|
+
```jsx
|
|
30
|
+
import { ToastContainer, toast } from 'react-toast-msg';
|
|
31
|
+
|
|
32
|
+
function App() {
|
|
33
|
+
return (
|
|
34
|
+
<>
|
|
35
|
+
<ToastContainer />
|
|
36
|
+
<button onClick={() => toast('This is a toast!')}>Show Toast</button>
|
|
37
|
+
</>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🪄 Variants
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
toast('Default toast');
|
|
48
|
+
toast.success('Success message!');
|
|
49
|
+
toast.error('Something went wrong!');
|
|
50
|
+
toast.info('Some useful info');
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 🎨 Customization (Coming Soon)
|
|
56
|
+
|
|
57
|
+
Style your toasts with Tailwind, classNames, or inline styles. Theme support and placement config coming in the next release.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 🔌 API
|
|
62
|
+
|
|
63
|
+
| Function | Description |
|
|
64
|
+
| -------------------- | ------------------ |
|
|
65
|
+
| `toast(msg)` | Show a basic toast |
|
|
66
|
+
| `toast.success(msg)` | Success variant |
|
|
67
|
+
| `toast.error(msg)` | Error variant |
|
|
68
|
+
| `toast.info(msg)` | Info variant |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 📚 License
|
|
73
|
+
|
|
74
|
+
MIT © [Sudhanshu Kumar](https://github.com/sudhucodes)
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 🌐 Links
|
|
79
|
+
|
|
80
|
+
* 📁 [GitHub Repo](https://github.com/sudhucodes/react-toast-msg)
|
|
81
|
+
* 🐞 [Issue Tracker](https://github.com/sudhucodes/react-toast-msg/issues)
|
|
82
|
+
* 📦 [npm Package](https://www.npmjs.com/package/react-toast-msg)
|
package/dist/index.es.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function _arrayLikeToArray(r, a) {
|
|
4
|
+
(null == a || a > r.length) && (a = r.length);
|
|
5
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
6
|
+
return n;
|
|
7
|
+
}
|
|
8
|
+
function _arrayWithHoles(r) {
|
|
9
|
+
if (Array.isArray(r)) return r;
|
|
10
|
+
}
|
|
11
|
+
function _arrayWithoutHoles(r) {
|
|
12
|
+
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
|
13
|
+
}
|
|
14
|
+
function _iterableToArray(r) {
|
|
15
|
+
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
16
|
+
}
|
|
17
|
+
function _iterableToArrayLimit(r, l) {
|
|
18
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
19
|
+
if (null != t) {
|
|
20
|
+
var e,
|
|
21
|
+
n,
|
|
22
|
+
i,
|
|
23
|
+
u,
|
|
24
|
+
a = [],
|
|
25
|
+
f = !0,
|
|
26
|
+
o = !1;
|
|
27
|
+
try {
|
|
28
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
29
|
+
if (Object(t) !== t) return;
|
|
30
|
+
f = !1;
|
|
31
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
32
|
+
} catch (r) {
|
|
33
|
+
o = !0, n = r;
|
|
34
|
+
} finally {
|
|
35
|
+
try {
|
|
36
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
37
|
+
} finally {
|
|
38
|
+
if (o) throw n;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return a;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function _nonIterableRest() {
|
|
45
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
46
|
+
}
|
|
47
|
+
function _nonIterableSpread() {
|
|
48
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
49
|
+
}
|
|
50
|
+
function _slicedToArray(r, e) {
|
|
51
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
52
|
+
}
|
|
53
|
+
function _toConsumableArray(r) {
|
|
54
|
+
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
55
|
+
}
|
|
56
|
+
function _unsupportedIterableToArray(r, a) {
|
|
57
|
+
if (r) {
|
|
58
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
59
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
60
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function ToastContainer() {
|
|
65
|
+
var _useState = useState([]),
|
|
66
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
67
|
+
toasts = _useState2[0],
|
|
68
|
+
setToasts = _useState2[1];
|
|
69
|
+
useEffect(function () {
|
|
70
|
+
_register(function (toast) {
|
|
71
|
+
setToasts(function (prev) {
|
|
72
|
+
return [].concat(_toConsumableArray(prev), [toast]);
|
|
73
|
+
});
|
|
74
|
+
setTimeout(function () {
|
|
75
|
+
setToasts(function (prev) {
|
|
76
|
+
return prev.slice(1);
|
|
77
|
+
});
|
|
78
|
+
}, 3000);
|
|
79
|
+
});
|
|
80
|
+
}, []);
|
|
81
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
82
|
+
style: {
|
|
83
|
+
position: 'fixed',
|
|
84
|
+
top: 20,
|
|
85
|
+
left: '50%',
|
|
86
|
+
transform: 'translateX(-50%)',
|
|
87
|
+
zIndex: 9999,
|
|
88
|
+
display: 'flex',
|
|
89
|
+
flexDirection: 'column',
|
|
90
|
+
gap: '8px',
|
|
91
|
+
width: 'auto',
|
|
92
|
+
maxWidth: '90vw'
|
|
93
|
+
}
|
|
94
|
+
}, toasts.map(function (t, i) {
|
|
95
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
96
|
+
key: i,
|
|
97
|
+
style: {
|
|
98
|
+
padding: '10px 20px',
|
|
99
|
+
borderRadius: 4,
|
|
100
|
+
color: '#000',
|
|
101
|
+
backgroundColor: t.type === 'success' ? '#d4edda' : t.type === 'error' ? '#f8d7da' : '#fff',
|
|
102
|
+
boxShadow: '0 2px 6px rgba(0,0,0,0.15)',
|
|
103
|
+
minWidth: 200,
|
|
104
|
+
maxWidth: 400
|
|
105
|
+
}
|
|
106
|
+
}, t.message);
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
var addToast;
|
|
111
|
+
var toast = {
|
|
112
|
+
show: function show(message) {
|
|
113
|
+
addToast && addToast({
|
|
114
|
+
message: message,
|
|
115
|
+
type: 'default'
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
success: function success(message) {
|
|
119
|
+
addToast && addToast({
|
|
120
|
+
message: message,
|
|
121
|
+
type: 'success'
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
error: function error(message) {
|
|
125
|
+
addToast && addToast({
|
|
126
|
+
message: message,
|
|
127
|
+
type: 'error'
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
function _register(fn) {
|
|
132
|
+
addToast = fn;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export { ToastContainer, _register, toast };
|
|
136
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/ToastContainer.jsx","../src/index.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport { _register } from './index.js';\r\n\r\nexport default function ToastContainer() {\r\n const [toasts, setToasts] = useState([]);\r\n\r\n useEffect(() => {\r\n _register((toast) => {\r\n setToasts((prev) => [...prev, toast]);\r\n setTimeout(() => {\r\n setToasts((prev) => prev.slice(1));\r\n }, 3000);\r\n });\r\n }, []);\r\n\r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: 20,\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n zIndex: 9999,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n width: 'auto',\r\n maxWidth: '90vw',\r\n }}>\r\n {toasts.map((t, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n padding: '10px 20px',\r\n borderRadius: 4,\r\n color: '#000',\r\n backgroundColor:\r\n t.type === 'success' ? '#d4edda' :\r\n t.type === 'error' ? '#f8d7da' :\r\n '#fff',\r\n boxShadow: '0 2px 6px rgba(0,0,0,0.15)',\r\n minWidth: 200,\r\n maxWidth: 400,\r\n }}\r\n >\r\n {t.message}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import ToastContainer from './ToastContainer.jsx';\r\n\r\nlet addToast;\r\n\r\nconst toast = {\r\n show(message) {\r\n addToast && addToast({ message, type: 'default' });\r\n },\r\n success(message) {\r\n addToast && addToast({ message, type: 'success' });\r\n },\r\n error(message) {\r\n addToast && addToast({ message, type: 'error' });\r\n },\r\n};\r\n\r\nfunction _register(fn) {\r\n addToast = fn;\r\n}\r\n\r\nexport { ToastContainer, toast, _register };\r\n"],"names":["ToastContainer","_useState","useState","_useState2","_slicedToArray","toasts","setToasts","useEffect","_register","toast","prev","concat","_toConsumableArray","setTimeout","slice","React","createElement","style","position","top","left","transform","zIndex","display","flexDirection","gap","width","maxWidth","map","t","i","key","padding","borderRadius","color","backgroundColor","type","boxShadow","minWidth","message","addToast","show","success","error","fn"],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function _arrayLikeToArray(r, a) {
|
|
6
|
+
(null == a || a > r.length) && (a = r.length);
|
|
7
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
8
|
+
return n;
|
|
9
|
+
}
|
|
10
|
+
function _arrayWithHoles(r) {
|
|
11
|
+
if (Array.isArray(r)) return r;
|
|
12
|
+
}
|
|
13
|
+
function _arrayWithoutHoles(r) {
|
|
14
|
+
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
|
15
|
+
}
|
|
16
|
+
function _iterableToArray(r) {
|
|
17
|
+
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
18
|
+
}
|
|
19
|
+
function _iterableToArrayLimit(r, l) {
|
|
20
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
21
|
+
if (null != t) {
|
|
22
|
+
var e,
|
|
23
|
+
n,
|
|
24
|
+
i,
|
|
25
|
+
u,
|
|
26
|
+
a = [],
|
|
27
|
+
f = !0,
|
|
28
|
+
o = !1;
|
|
29
|
+
try {
|
|
30
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
31
|
+
if (Object(t) !== t) return;
|
|
32
|
+
f = !1;
|
|
33
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
34
|
+
} catch (r) {
|
|
35
|
+
o = !0, n = r;
|
|
36
|
+
} finally {
|
|
37
|
+
try {
|
|
38
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
39
|
+
} finally {
|
|
40
|
+
if (o) throw n;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return a;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function _nonIterableRest() {
|
|
47
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
+
}
|
|
49
|
+
function _nonIterableSpread() {
|
|
50
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
51
|
+
}
|
|
52
|
+
function _slicedToArray(r, e) {
|
|
53
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
54
|
+
}
|
|
55
|
+
function _toConsumableArray(r) {
|
|
56
|
+
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
57
|
+
}
|
|
58
|
+
function _unsupportedIterableToArray(r, a) {
|
|
59
|
+
if (r) {
|
|
60
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
61
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
62
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function ToastContainer() {
|
|
67
|
+
var _useState = React.useState([]),
|
|
68
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
69
|
+
toasts = _useState2[0],
|
|
70
|
+
setToasts = _useState2[1];
|
|
71
|
+
React.useEffect(function () {
|
|
72
|
+
_register(function (toast) {
|
|
73
|
+
setToasts(function (prev) {
|
|
74
|
+
return [].concat(_toConsumableArray(prev), [toast]);
|
|
75
|
+
});
|
|
76
|
+
setTimeout(function () {
|
|
77
|
+
setToasts(function (prev) {
|
|
78
|
+
return prev.slice(1);
|
|
79
|
+
});
|
|
80
|
+
}, 3000);
|
|
81
|
+
});
|
|
82
|
+
}, []);
|
|
83
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
84
|
+
style: {
|
|
85
|
+
position: 'fixed',
|
|
86
|
+
top: 20,
|
|
87
|
+
left: '50%',
|
|
88
|
+
transform: 'translateX(-50%)',
|
|
89
|
+
zIndex: 9999,
|
|
90
|
+
display: 'flex',
|
|
91
|
+
flexDirection: 'column',
|
|
92
|
+
gap: '8px',
|
|
93
|
+
width: 'auto',
|
|
94
|
+
maxWidth: '90vw'
|
|
95
|
+
}
|
|
96
|
+
}, toasts.map(function (t, i) {
|
|
97
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
98
|
+
key: i,
|
|
99
|
+
style: {
|
|
100
|
+
padding: '10px 20px',
|
|
101
|
+
borderRadius: 4,
|
|
102
|
+
color: '#000',
|
|
103
|
+
backgroundColor: t.type === 'success' ? '#d4edda' : t.type === 'error' ? '#f8d7da' : '#fff',
|
|
104
|
+
boxShadow: '0 2px 6px rgba(0,0,0,0.15)',
|
|
105
|
+
minWidth: 200,
|
|
106
|
+
maxWidth: 400
|
|
107
|
+
}
|
|
108
|
+
}, t.message);
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var addToast;
|
|
113
|
+
var toast = {
|
|
114
|
+
show: function show(message) {
|
|
115
|
+
addToast && addToast({
|
|
116
|
+
message: message,
|
|
117
|
+
type: 'default'
|
|
118
|
+
});
|
|
119
|
+
},
|
|
120
|
+
success: function success(message) {
|
|
121
|
+
addToast && addToast({
|
|
122
|
+
message: message,
|
|
123
|
+
type: 'success'
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
error: function error(message) {
|
|
127
|
+
addToast && addToast({
|
|
128
|
+
message: message,
|
|
129
|
+
type: 'error'
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
function _register(fn) {
|
|
134
|
+
addToast = fn;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
exports.ToastContainer = ToastContainer;
|
|
138
|
+
exports._register = _register;
|
|
139
|
+
exports.toast = toast;
|
|
140
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/ToastContainer.jsx","../src/index.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport { _register } from './index.js';\r\n\r\nexport default function ToastContainer() {\r\n const [toasts, setToasts] = useState([]);\r\n\r\n useEffect(() => {\r\n _register((toast) => {\r\n setToasts((prev) => [...prev, toast]);\r\n setTimeout(() => {\r\n setToasts((prev) => prev.slice(1));\r\n }, 3000);\r\n });\r\n }, []);\r\n\r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: 20,\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n zIndex: 9999,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n width: 'auto',\r\n maxWidth: '90vw',\r\n }}>\r\n {toasts.map((t, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n padding: '10px 20px',\r\n borderRadius: 4,\r\n color: '#000',\r\n backgroundColor:\r\n t.type === 'success' ? '#d4edda' :\r\n t.type === 'error' ? '#f8d7da' :\r\n '#fff',\r\n boxShadow: '0 2px 6px rgba(0,0,0,0.15)',\r\n minWidth: 200,\r\n maxWidth: 400,\r\n }}\r\n >\r\n {t.message}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import ToastContainer from './ToastContainer.jsx';\r\n\r\nlet addToast;\r\n\r\nconst toast = {\r\n show(message) {\r\n addToast && addToast({ message, type: 'default' });\r\n },\r\n success(message) {\r\n addToast && addToast({ message, type: 'success' });\r\n },\r\n error(message) {\r\n addToast && addToast({ message, type: 'error' });\r\n },\r\n};\r\n\r\nfunction _register(fn) {\r\n addToast = fn;\r\n}\r\n\r\nexport { ToastContainer, toast, _register };\r\n"],"names":["ToastContainer","_useState","useState","_useState2","_slicedToArray","toasts","setToasts","useEffect","_register","toast","prev","concat","_toConsumableArray","setTimeout","slice","React","createElement","style","position","top","left","transform","zIndex","display","flexDirection","gap","width","maxWidth","map","t","i","key","padding","borderRadius","color","backgroundColor","type","boxShadow","minWidth","message","addToast","show","success","error","fn"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
2
|
+
"name": "react-toast-msg",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A lightweight, customizable React toast notification library with zero-config and fast setup.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.es.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rollup -c"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"react",
|
|
15
|
+
"toast",
|
|
16
|
+
"notification",
|
|
17
|
+
"react-toast",
|
|
18
|
+
"react-toastify",
|
|
19
|
+
"snackbar",
|
|
20
|
+
"react-toast-msg",
|
|
21
|
+
"toast-component"
|
|
22
|
+
],
|
|
23
|
+
"author": "SudhuCodes",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/sudhucodes/react-toast-msg.git"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/sudhucodes/react-toast-msg/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/sudhucodes/react-toast-msg#readme",
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"react": "^18.0.0",
|
|
35
|
+
"react-dom": "^18.0.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@babel/core": "^7.27.3",
|
|
39
|
+
"@babel/preset-env": "^7.27.2",
|
|
40
|
+
"@babel/preset-react": "^7.27.1",
|
|
41
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
42
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
43
|
+
"rollup": "^3.22.0"
|
|
44
|
+
}
|
|
45
|
+
}
|