@stokr/components-library 2.3.64 → 2.3.65-beta.10

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.
Files changed (52) hide show
  1. package/dist/components/2FA/main-flow.js +28 -7
  2. package/dist/components/2FA/main-flow.stories.js +144 -15
  3. package/dist/components/AdminDashboard/Table/ReactTable.js +123 -7
  4. package/dist/components/AdminDashboard/Table/ReactTable.stories.js +509 -2
  5. package/dist/components/Chips/Chip.js +1 -2
  6. package/dist/components/Icon/Icon.stories.js +108 -0
  7. package/dist/components/InfoIcon/InfoIcon.js +9 -4
  8. package/dist/components/InfoIcon/InfoIcon.styles.js +3 -3
  9. package/dist/components/Input/Input.js +33 -33
  10. package/dist/components/Input/Input.stories.js +83 -8
  11. package/dist/components/Input/MultiSelect.js +319 -0
  12. package/dist/components/Input/MultiSelect.stories.js +264 -0
  13. package/dist/components/Input/SearchInput.js +78 -0
  14. package/dist/components/Input/SearchInput.stories.js +366 -0
  15. package/dist/components/Input/SearchInput.styles.js +25 -0
  16. package/dist/components/Input/Select.js +51 -28
  17. package/dist/components/Input/Select.stories.js +345 -6
  18. package/dist/components/Modal/SideModal.js +82 -0
  19. package/dist/components/Modal/SideModal.stories.js +342 -0
  20. package/dist/components/Modal/SideModal.styles.js +21 -0
  21. package/dist/components/Payment/PaymentDetailsCard.js +189 -0
  22. package/dist/components/Payment/PaymentDetailsCard.stories.js +198 -0
  23. package/dist/components/Payment/PaymentDisplay.js +2 -12
  24. package/dist/components/ProfileBox/ProfileBox.js +2 -1
  25. package/dist/components/Snackbar/Snackbar.js +193 -0
  26. package/dist/components/Snackbar/Snackbar.stories.js +292 -0
  27. package/dist/components/Snackbar/Snackbar.styles.js +97 -0
  28. package/dist/components/Snackbar/SnackbarProvider.js +81 -0
  29. package/dist/components/Snackbar/index.js +32 -0
  30. package/dist/components/Snackbar/useSnackbar.js +43 -0
  31. package/dist/components/StatusTag/StatusTag.js +175 -0
  32. package/dist/components/StatusTag/StatusTag.stories.js +262 -0
  33. package/dist/components/StatusTag/StatusTag.styles.js +37 -0
  34. package/dist/components/StepsProgress/StepIndicator.js +59 -0
  35. package/dist/components/StepsProgress/StepIndicator.stories.js +153 -0
  36. package/dist/components/StepsProgress/StepIndicator.styles.js +30 -0
  37. package/dist/components/TextLink/TextLink.stories.js +35 -0
  38. package/dist/components/TextLink/TextLink.styles.js +1 -1
  39. package/dist/components/Timeline/Timeline.js +0 -2
  40. package/dist/components/Timeline/TimelineStep.js +2 -2
  41. package/dist/components/logo/Logo.stories.js +260 -0
  42. package/dist/constants/globalVariables.js +41 -2
  43. package/dist/context/Checkbox/CheckboxContext.js +80 -7
  44. package/dist/index.js +66 -0
  45. package/dist/static/images/bmn2-logo.svg +9 -0
  46. package/dist/static/images/document-icon.svg +3 -0
  47. package/dist/static/images/plus-icon.svg +4 -0
  48. package/dist/static/images/search-icon.svg +3 -0
  49. package/dist/static/images/sent-icon.svg +10 -0
  50. package/dist/static/images/transfer-icon.svg +10 -0
  51. package/dist/utils/formatCurrencyValue.js +43 -3
  52. package/package.json +1 -1
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.WithClickAction = exports.TopLeft = exports.TopCenter = exports.Default = exports.CustomDuration = exports.ContainedSnackbar = exports.BottomRight = exports.BottomLeft = exports.BottomCenter = exports.AllVariants = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _SnackbarProvider = require("./SnackbarProvider");
9
+ var _useSnackbar = require("./useSnackbar");
10
+ var _Snackbar = require("./Snackbar");
11
+ var _global = _interopRequireDefault(require("../../styles/global"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ var _default = exports.default = {
20
+ title: 'Components/Snackbar',
21
+ component: _Snackbar.Snackbar,
22
+ decorators: [Story => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_global.default, null), /*#__PURE__*/_react.default.createElement(Story, null))],
23
+ parameters: {
24
+ layout: 'fullscreen'
25
+ }
26
+ }; // Interactive demo with provider
27
+ const SnackbarDemo = _ref => {
28
+ let {
29
+ position
30
+ } = _ref;
31
+ const {
32
+ showSnackbar,
33
+ clearAll
34
+ } = (0, _useSnackbar.useSnackbar)();
35
+ return /*#__PURE__*/_react.default.createElement("div", {
36
+ style: {
37
+ padding: 40
38
+ }
39
+ }, /*#__PURE__*/_react.default.createElement("h2", {
40
+ style: {
41
+ marginBottom: 20
42
+ }
43
+ }, "Snackbar Demo - ", position), /*#__PURE__*/_react.default.createElement("div", {
44
+ style: {
45
+ display: 'flex',
46
+ gap: 10,
47
+ flexWrap: 'wrap'
48
+ }
49
+ }, /*#__PURE__*/_react.default.createElement("button", {
50
+ onClick: () => showSnackbar({
51
+ message: 'Verification to be completed.',
52
+ variant: 'info'
53
+ })
54
+ }, "Show Info"), /*#__PURE__*/_react.default.createElement("button", {
55
+ onClick: () => showSnackbar({
56
+ message: 'Verification not completed.',
57
+ variant: 'error'
58
+ })
59
+ }, "Show Error"), /*#__PURE__*/_react.default.createElement("button", {
60
+ onClick: () => showSnackbar({
61
+ message: 'Verification completed successfully!',
62
+ variant: 'success'
63
+ })
64
+ }, "Show Success"), /*#__PURE__*/_react.default.createElement("button", {
65
+ onClick: () => showSnackbar({
66
+ message: 'Verification missing few details.',
67
+ variant: 'warning'
68
+ })
69
+ }, "Show Warning"), /*#__PURE__*/_react.default.createElement("button", {
70
+ onClick: () => showSnackbar({
71
+ message: 'This snackbar will stay until you close it.',
72
+ variant: 'info',
73
+ duration: 'permanent'
74
+ })
75
+ }, "Show Permanent"), /*#__PURE__*/_react.default.createElement("button", {
76
+ onClick: () => showSnackbar({
77
+ message: /*#__PURE__*/_react.default.createElement("span", null, "Custom content with ", /*#__PURE__*/_react.default.createElement("strong", null, "bold text")),
78
+ variant: 'success'
79
+ })
80
+ }, "Show Custom Content"), /*#__PURE__*/_react.default.createElement("button", {
81
+ onClick: clearAll
82
+ }, "Clear All")));
83
+ };
84
+ const Default = exports.Default = {
85
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
86
+ position: "top-right"
87
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
88
+ position: "top-right"
89
+ }))
90
+ };
91
+ const TopLeft = exports.TopLeft = {
92
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
93
+ position: "top-left"
94
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
95
+ position: "top-left"
96
+ }))
97
+ };
98
+ const TopCenter = exports.TopCenter = {
99
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
100
+ position: "top-center"
101
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
102
+ position: "top-center"
103
+ }))
104
+ };
105
+ const BottomRight = exports.BottomRight = {
106
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
107
+ position: "bottom-right"
108
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
109
+ position: "bottom-right"
110
+ }))
111
+ };
112
+ const BottomLeft = exports.BottomLeft = {
113
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
114
+ position: "bottom-left"
115
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
116
+ position: "bottom-left"
117
+ }))
118
+ };
119
+ const BottomCenter = exports.BottomCenter = {
120
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
121
+ position: "bottom-center"
122
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemo, {
123
+ position: "bottom-center"
124
+ }))
125
+ };
126
+
127
+ // All variants showcase - extracted to a proper component
128
+ const AllVariantsDemo = () => {
129
+ const [snackbars, setSnackbars] = (0, _react.useState)([{
130
+ id: 1,
131
+ message: 'Verification to be completed.',
132
+ variant: 'info'
133
+ }, {
134
+ id: 2,
135
+ message: 'Verification not completed.',
136
+ variant: 'error'
137
+ }, {
138
+ id: 3,
139
+ message: 'Verification completed successfully!',
140
+ variant: 'success'
141
+ }, {
142
+ id: 4,
143
+ message: 'Verification missing few details.',
144
+ variant: 'warning'
145
+ }]);
146
+ const handleClose = id => {
147
+ setSnackbars(prev => prev.filter(s => s.id !== id));
148
+ };
149
+ return /*#__PURE__*/_react.default.createElement("div", {
150
+ style: {
151
+ padding: 40
152
+ }
153
+ }, /*#__PURE__*/_react.default.createElement("h2", null, "All Variants"), /*#__PURE__*/_react.default.createElement("div", {
154
+ style: {
155
+ display: 'flex',
156
+ flexDirection: 'column',
157
+ gap: 16,
158
+ maxWidth: 500
159
+ }
160
+ }, snackbars.map(snackbar => /*#__PURE__*/_react.default.createElement("div", {
161
+ key: snackbar.id,
162
+ style: {
163
+ position: 'relative'
164
+ }
165
+ }, /*#__PURE__*/_react.default.createElement(_Snackbar.Snackbar, {
166
+ snackbars: [_objectSpread(_objectSpread({}, snackbar), {}, {
167
+ duration: 'permanent'
168
+ })],
169
+ onClose: handleClose,
170
+ position: "top-right",
171
+ container: null
172
+ })))));
173
+ };
174
+ const AllVariants = exports.AllVariants = {
175
+ render: () => /*#__PURE__*/_react.default.createElement(AllVariantsDemo, null)
176
+ };
177
+
178
+ // Contained snackbar - extracted to a proper component
179
+ const ContainedSnackbarDemo = () => {
180
+ const containerRef = (0, _react.useRef)(null);
181
+ const [snackbars, setSnackbars] = (0, _react.useState)([]);
182
+ const addSnackbar = () => {
183
+ const variants = ['info', 'error', 'success', 'warning'];
184
+ const variant = variants[Math.floor(Math.random() * variants.length)];
185
+ setSnackbars(prev => [...prev, {
186
+ id: Date.now(),
187
+ message: "Snackbar inside container (".concat(variant, ")"),
188
+ variant
189
+ }]);
190
+ };
191
+ const handleClose = id => {
192
+ setSnackbars(prev => prev.filter(s => s.id !== id));
193
+ };
194
+ return /*#__PURE__*/_react.default.createElement("div", {
195
+ style: {
196
+ padding: 40
197
+ }
198
+ }, /*#__PURE__*/_react.default.createElement("h2", null, "Contained Snackbar"), /*#__PURE__*/_react.default.createElement("p", null, "Snackbars appear inside the bordered container below:"), /*#__PURE__*/_react.default.createElement("button", {
199
+ onClick: addSnackbar,
200
+ style: {
201
+ marginBottom: 20
202
+ }
203
+ }, "Add Snackbar"), /*#__PURE__*/_react.default.createElement("div", {
204
+ ref: containerRef,
205
+ style: {
206
+ position: 'relative',
207
+ width: '100%',
208
+ height: 400,
209
+ border: '2px dashed #ccc',
210
+ borderRadius: 8,
211
+ overflow: 'hidden'
212
+ }
213
+ }, containerRef.current && /*#__PURE__*/_react.default.createElement(_Snackbar.Snackbar, {
214
+ snackbars: snackbars,
215
+ onClose: handleClose,
216
+ position: "top-right",
217
+ container: containerRef.current
218
+ })));
219
+ };
220
+ const ContainedSnackbar = exports.ContainedSnackbar = {
221
+ render: () => /*#__PURE__*/_react.default.createElement(ContainedSnackbarDemo, null)
222
+ };
223
+
224
+ // Custom duration demo
225
+ const SnackbarDemoCustomDuration = () => {
226
+ const {
227
+ showSnackbar
228
+ } = (0, _useSnackbar.useSnackbar)();
229
+ return /*#__PURE__*/_react.default.createElement("div", {
230
+ style: {
231
+ display: 'flex',
232
+ gap: 10
233
+ }
234
+ }, /*#__PURE__*/_react.default.createElement("button", {
235
+ onClick: () => showSnackbar({
236
+ message: 'Auto-dismiss in 3 seconds (default)',
237
+ variant: 'info'
238
+ })
239
+ }, "3s (default)"), /*#__PURE__*/_react.default.createElement("button", {
240
+ onClick: () => showSnackbar({
241
+ message: 'Auto-dismiss in 1 second',
242
+ variant: 'warning',
243
+ duration: 1000
244
+ })
245
+ }, "1 second"), /*#__PURE__*/_react.default.createElement("button", {
246
+ onClick: () => showSnackbar({
247
+ message: 'Auto-dismiss in 10 seconds',
248
+ variant: 'success',
249
+ duration: 10000
250
+ })
251
+ }, "10 seconds"), /*#__PURE__*/_react.default.createElement("button", {
252
+ onClick: () => showSnackbar({
253
+ message: 'I stay until you close me!',
254
+ variant: 'error',
255
+ duration: 'permanent'
256
+ })
257
+ }, "Permanent"));
258
+ };
259
+ const CustomDuration = exports.CustomDuration = {
260
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
261
+ position: "top-right",
262
+ defaultDuration: 3000
263
+ }, /*#__PURE__*/_react.default.createElement("div", {
264
+ style: {
265
+ padding: 40
266
+ }
267
+ }, /*#__PURE__*/_react.default.createElement("h2", null, "Custom Duration (3 seconds default)"), /*#__PURE__*/_react.default.createElement(SnackbarDemoCustomDuration, null)))
268
+ };
269
+
270
+ // With onClick action
271
+ const SnackbarDemoWithClick = () => {
272
+ const {
273
+ showSnackbar
274
+ } = (0, _useSnackbar.useSnackbar)();
275
+ return /*#__PURE__*/_react.default.createElement("div", {
276
+ style: {
277
+ padding: 40
278
+ }
279
+ }, /*#__PURE__*/_react.default.createElement("h2", null, "Snackbar with Click Action"), /*#__PURE__*/_react.default.createElement("button", {
280
+ onClick: () => showSnackbar({
281
+ message: 'Click me to see an alert!',
282
+ variant: 'info',
283
+ duration: 'permanent',
284
+ onClick: () => alert('Snackbar clicked!')
285
+ })
286
+ }, "Show Clickable Snackbar"));
287
+ };
288
+ const WithClickAction = exports.WithClickAction = {
289
+ render: () => /*#__PURE__*/_react.default.createElement(_SnackbarProvider.SnackbarProvider, {
290
+ position: "top-right"
291
+ }, /*#__PURE__*/_react.default.createElement(SnackbarDemoWithClick, null))
292
+ };
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.variantStyles = exports.SnackbarWrapper = exports.SnackbarContainer = exports.Message = exports.IconWrapper = exports.CloseButton = void 0;
7
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
+ var _colors = _interopRequireDefault(require("../../styles/colors"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const slideIn = (0, _styledComponents.keyframes)(["from{opacity:0;transform:translateX(100%);}to{opacity:1;transform:translateX(0);}"]);
12
+ const slideOut = (0, _styledComponents.keyframes)(["from{opacity:1;transform:translateX(0);}to{opacity:0;transform:translateX(100%);}"]);
13
+ const slideInLeft = (0, _styledComponents.keyframes)(["from{opacity:0;transform:translateX(-100%);}to{opacity:1;transform:translateX(0);}"]);
14
+ const slideInUp = (0, _styledComponents.keyframes)(["from{opacity:0;transform:translateY(100%);}to{opacity:1;transform:translateY(0);}"]);
15
+ const slideInDown = (0, _styledComponents.keyframes)(["from{opacity:0;transform:translateY(-100%);}to{opacity:1;transform:translateY(0);}"]);
16
+
17
+ // Variant configurations
18
+ const variantStyles = exports.variantStyles = {
19
+ info: {
20
+ borderColor: _colors.default.blue,
21
+ iconColor: _colors.default.blue
22
+ },
23
+ error: {
24
+ borderColor: _colors.default.orangishRed,
25
+ iconColor: _colors.default.orangishRed
26
+ },
27
+ success: {
28
+ borderColor: _colors.default.progressAccentStart,
29
+ iconColor: _colors.default.progressAccentStart
30
+ },
31
+ warning: {
32
+ borderColor: _colors.default.warningOrange,
33
+ iconColor: _colors.default.warningOrange
34
+ }
35
+ };
36
+
37
+ // Position configurations
38
+ const positionStyles = {
39
+ 'top-right': (0, _styledComponents.css)(["top:20px;right:20px;animation:", " 0.3s ease-out forwards;"], slideIn),
40
+ 'top-left': (0, _styledComponents.css)(["top:20px;left:20px;animation:", " 0.3s ease-out forwards;"], slideInLeft),
41
+ 'top-center': (0, _styledComponents.css)(["top:20px;left:50%;transform:translateX(-50%);animation:", " 0.3s ease-out forwards;"], slideInDown),
42
+ 'bottom-right': (0, _styledComponents.css)(["bottom:20px;right:20px;animation:", " 0.3s ease-out forwards;"], slideIn),
43
+ 'bottom-left': (0, _styledComponents.css)(["bottom:20px;left:20px;animation:", " 0.3s ease-out forwards;"], slideInLeft),
44
+ 'bottom-center': (0, _styledComponents.css)(["bottom:20px;left:50%;transform:translateX(-50%);animation:", " 0.3s ease-out forwards;"], slideInUp)
45
+ };
46
+ const SnackbarContainer = exports.SnackbarContainer = _styledComponents.default.div.withConfig({
47
+ displayName: "Snackbarstyles__SnackbarContainer",
48
+ componentId: "sc-xf2wxi-0"
49
+ })(["position:", ";z-index:1100;display:flex;flex-direction:column;gap:10px;pointer-events:none;", ""], _ref => {
50
+ let {
51
+ $isContained
52
+ } = _ref;
53
+ return $isContained ? 'absolute' : 'fixed';
54
+ }, _ref2 => {
55
+ let {
56
+ $position
57
+ } = _ref2;
58
+ return positionStyles[$position] || positionStyles['top-right'];
59
+ });
60
+ const SnackbarWrapper = exports.SnackbarWrapper = _styledComponents.default.div.withConfig({
61
+ displayName: "Snackbarstyles__SnackbarWrapper",
62
+ componentId: "sc-xf2wxi-1"
63
+ })(["display:flex;align-items:center;gap:12px;min-width:320px;max-width:480px;padding:12px 16px;background-color:", ";box-shadow:0 1px 2px -1px rgba(0,0,0,0.12);border-radius:6px;border:1px solid ", ";border-bottom:3px solid ", ";pointer-events:auto;animation:", " 0.3s ease-out forwards;", ""], _colors.default.white, _colors.default.grey, _ref3 => {
64
+ var _variantStyles$$varia;
65
+ let {
66
+ $variant
67
+ } = _ref3;
68
+ return ((_variantStyles$$varia = variantStyles[$variant]) === null || _variantStyles$$varia === void 0 ? void 0 : _variantStyles$$varia.borderColor) || _colors.default.blue;
69
+ }, _ref4 => {
70
+ let {
71
+ $isExiting
72
+ } = _ref4;
73
+ return $isExiting ? slideOut : 'none';
74
+ }, _ref5 => {
75
+ let {
76
+ $hasClick
77
+ } = _ref5;
78
+ return $hasClick && (0, _styledComponents.css)(["cursor:pointer;&:hover{box-shadow:0 4px 24px rgba(0,0,0,0.16);}"]);
79
+ });
80
+ const IconWrapper = exports.IconWrapper = _styledComponents.default.div.withConfig({
81
+ displayName: "Snackbarstyles__IconWrapper",
82
+ componentId: "sc-xf2wxi-2"
83
+ })(["flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:", ";svg{width:100%;height:100%;}"], _ref6 => {
84
+ var _variantStyles$$varia2;
85
+ let {
86
+ $variant
87
+ } = _ref6;
88
+ return ((_variantStyles$$varia2 = variantStyles[$variant]) === null || _variantStyles$$varia2 === void 0 ? void 0 : _variantStyles$$varia2.iconColor) || _colors.default.blue;
89
+ });
90
+ const Message = exports.Message = _styledComponents.default.div.withConfig({
91
+ displayName: "Snackbarstyles__Message",
92
+ componentId: "sc-xf2wxi-3"
93
+ })(["flex:1;font-size:16px;font-weight:600;line-height:24px;letter-spacing:0.6px;color:", ";"], _colors.default.black);
94
+ const CloseButton = exports.CloseButton = _styledComponents.default.button.withConfig({
95
+ displayName: "Snackbarstyles__CloseButton",
96
+ componentId: "sc-xf2wxi-4"
97
+ })(["flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;cursor:pointer;transition:opacity 0.2s ease;&:hover{opacity:0.7;}svg{width:12px;height:12px;path{stroke:", ";stroke-width:2;}}&:hover svg path{stroke:", ";}"], _colors.default.grey2, _colors.default.black);
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.SnackbarProvider = exports.SnackbarContext = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Snackbar = require("./Snackbar");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ const SnackbarContext = exports.SnackbarContext = /*#__PURE__*/(0, _react.createContext)(null);
13
+ let snackbarId = 0;
14
+
15
+ /**
16
+ * SnackbarProvider - Wrap your app with this to enable global snackbar functionality
17
+ *
18
+ * @example
19
+ * <SnackbarProvider position="top-right" maxSnacks={5}>
20
+ * <App />
21
+ * </SnackbarProvider>
22
+ */
23
+ const SnackbarProvider = _ref => {
24
+ let {
25
+ children,
26
+ position = 'top-right',
27
+ maxSnacks = 5,
28
+ defaultDuration = 5000,
29
+ container = null
30
+ } = _ref;
31
+ const [snackbars, setSnackbars] = (0, _react.useState)([]);
32
+ const closeSnackbar = (0, _react.useCallback)(id => {
33
+ setSnackbars(prev => prev.filter(s => s.id !== id));
34
+ }, []);
35
+ const showSnackbar = (0, _react.useCallback)(options => {
36
+ var _options$id, _options$duration;
37
+ const id = (_options$id = options.id) !== null && _options$id !== void 0 ? _options$id : ++snackbarId;
38
+ const newSnackbar = {
39
+ id,
40
+ message: options.message,
41
+ variant: options.variant || 'info',
42
+ icon: options.icon,
43
+ onClick: options.onClick,
44
+ duration: (_options$duration = options.duration) !== null && _options$duration !== void 0 ? _options$duration : defaultDuration
45
+ };
46
+ setSnackbars(prev => {
47
+ // Remove oldest if we exceed maxSnacks
48
+ const updated = [...prev, newSnackbar];
49
+ if (updated.length > maxSnacks) {
50
+ return updated.slice(-maxSnacks);
51
+ }
52
+ return updated;
53
+ });
54
+ return id;
55
+ }, [maxSnacks, defaultDuration]);
56
+ const clearAll = (0, _react.useCallback)(() => {
57
+ setSnackbars([]);
58
+ }, []);
59
+ const contextValue = (0, _react.useMemo)(() => ({
60
+ showSnackbar,
61
+ closeSnackbar,
62
+ clearAll
63
+ }), [showSnackbar, closeSnackbar, clearAll]);
64
+ return /*#__PURE__*/_react.default.createElement(SnackbarContext.Provider, {
65
+ value: contextValue
66
+ }, children, /*#__PURE__*/_react.default.createElement(_Snackbar.Snackbar, {
67
+ snackbars: snackbars,
68
+ onClose: closeSnackbar,
69
+ position: position,
70
+ container: container
71
+ }));
72
+ };
73
+ exports.SnackbarProvider = SnackbarProvider;
74
+ SnackbarProvider.propTypes = {
75
+ children: _propTypes.default.node.isRequired,
76
+ position: _propTypes.default.oneOf(['top-right', 'top-left', 'top-center', 'bottom-right', 'bottom-left', 'bottom-center']),
77
+ maxSnacks: _propTypes.default.number,
78
+ defaultDuration: _propTypes.default.number,
79
+ container: _propTypes.default.instanceOf(Element)
80
+ };
81
+ var _default = exports.default = SnackbarProvider;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Snackbar", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Snackbar.Snackbar;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "SnackbarContext", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _SnackbarProvider.SnackbarContext;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "SnackbarProvider", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _SnackbarProvider.SnackbarProvider;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "useSnackbar", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _useSnackbar.useSnackbar;
28
+ }
29
+ });
30
+ var _Snackbar = require("./Snackbar");
31
+ var _SnackbarProvider = require("./SnackbarProvider");
32
+ var _useSnackbar = require("./useSnackbar");
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSnackbar = exports.default = void 0;
7
+ var _react = require("react");
8
+ var _SnackbarProvider = require("./SnackbarProvider");
9
+ /**
10
+ * useSnackbar hook - Use this to show snackbars from any component
11
+ *
12
+ * @example
13
+ * const { showSnackbar, closeSnackbar, clearAll } = useSnackbar()
14
+ *
15
+ * // Show a success snackbar
16
+ * showSnackbar({
17
+ * message: 'Operation completed!',
18
+ * variant: 'success',
19
+ * duration: 3000
20
+ * })
21
+ *
22
+ * // Show an error snackbar that stays until dismissed
23
+ * showSnackbar({
24
+ * message: 'Something went wrong',
25
+ * variant: 'error',
26
+ * duration: 'permanent'
27
+ * })
28
+ *
29
+ * // Show with custom content
30
+ * showSnackbar({
31
+ * message: <span>Custom <strong>content</strong></span>,
32
+ * variant: 'info'
33
+ * })
34
+ */
35
+ const useSnackbar = () => {
36
+ const context = (0, _react.useContext)(_SnackbarProvider.SnackbarContext);
37
+ if (!context) {
38
+ throw new Error('useSnackbar must be used within a SnackbarProvider');
39
+ }
40
+ return context;
41
+ };
42
+ exports.useSnackbar = useSnackbar;
43
+ var _default = exports.default = useSnackbar;