react-native-toast-signal 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.
Files changed (40) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +353 -0
  3. package/lib/module/components/signal-item.js +482 -0
  4. package/lib/module/components/signal-item.js.map +1 -0
  5. package/lib/module/constants.js +62 -0
  6. package/lib/module/constants.js.map +1 -0
  7. package/lib/module/core/store.js +158 -0
  8. package/lib/module/core/store.js.map +1 -0
  9. package/lib/module/hooks/useSignal.js +71 -0
  10. package/lib/module/hooks/useSignal.js.map +1 -0
  11. package/lib/module/index.js +6 -0
  12. package/lib/module/index.js.map +1 -0
  13. package/lib/module/package.json +1 -0
  14. package/lib/module/provider/signal-provider.js +72 -0
  15. package/lib/module/provider/signal-provider.js.map +1 -0
  16. package/lib/module/types.js +4 -0
  17. package/lib/module/types.js.map +1 -0
  18. package/lib/typescript/package.json +1 -0
  19. package/lib/typescript/src/components/signal-item.d.ts +7 -0
  20. package/lib/typescript/src/components/signal-item.d.ts.map +1 -0
  21. package/lib/typescript/src/constants.d.ts +12 -0
  22. package/lib/typescript/src/constants.d.ts.map +1 -0
  23. package/lib/typescript/src/core/store.d.ts +48 -0
  24. package/lib/typescript/src/core/store.d.ts.map +1 -0
  25. package/lib/typescript/src/hooks/useSignal.d.ts +46 -0
  26. package/lib/typescript/src/hooks/useSignal.d.ts.map +1 -0
  27. package/lib/typescript/src/index.d.ts +4 -0
  28. package/lib/typescript/src/index.d.ts.map +1 -0
  29. package/lib/typescript/src/provider/signal-provider.d.ts +7 -0
  30. package/lib/typescript/src/provider/signal-provider.d.ts.map +1 -0
  31. package/lib/typescript/src/types.d.ts +73 -0
  32. package/lib/typescript/src/types.d.ts.map +1 -0
  33. package/package.json +174 -0
  34. package/src/components/signal-item.tsx +548 -0
  35. package/src/constants.ts +62 -0
  36. package/src/core/store.ts +171 -0
  37. package/src/hooks/useSignal.ts +116 -0
  38. package/src/index.tsx +3 -0
  39. package/src/provider/signal-provider.tsx +89 -0
  40. package/src/types.ts +88 -0
@@ -0,0 +1,482 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { Text, StyleSheet, View, Pressable, AccessibilityInfo, Platform } from 'react-native';
5
+ import Animated, { useSharedValue, useAnimatedStyle, withTiming, withRepeat, useDerivedValue, cancelAnimation, Easing } from 'react-native-reanimated';
6
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
7
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
8
+ import { ENTRY_OFFSET_Y, SCALE_STEP, STACK_OFFSET, SWIPE_THRESHOLD, TIMING_MS, DEFAULT_THEME, TYPE_ICONS } from "../constants.js";
9
+ import { scheduleOnRN } from 'react-native-worklets';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const EASE_OUT = Easing.out(Easing.cubic);
12
+ const EASE_IN = Easing.in(Easing.cubic);
13
+ const EASE_REORDER = Easing.out(Easing.exp);
14
+ const ENTER = {
15
+ duration: TIMING_MS,
16
+ easing: EASE_OUT
17
+ };
18
+ const EXIT = {
19
+ duration: TIMING_MS,
20
+ easing: EASE_IN
21
+ };
22
+ const SNAP = {
23
+ duration: 200,
24
+ easing: EASE_OUT
25
+ };
26
+ const ORDER = {
27
+ duration: TIMING_MS,
28
+ easing: EASE_REORDER
29
+ };
30
+ function Spinner({
31
+ color
32
+ }) {
33
+ const rotation = useSharedValue(0);
34
+ useEffect(() => {
35
+ rotation.value = withRepeat(withTiming(360, {
36
+ duration: 900,
37
+ easing: Easing.linear
38
+ }), -1, false);
39
+ return () => cancelAnimation(rotation);
40
+ }, [rotation]);
41
+ const spinStyle = useAnimatedStyle(() => ({
42
+ transform: [{
43
+ rotate: `${rotation.value}deg`
44
+ }]
45
+ }));
46
+ return /*#__PURE__*/_jsx(Animated.View, {
47
+ style: [styles.spinnerRing, {
48
+ borderTopColor: color
49
+ }, spinStyle]
50
+ });
51
+ }
52
+ export const SignalItem = ({
53
+ signal,
54
+ onHide,
55
+ index,
56
+ maxVisible,
57
+ theme
58
+ }) => {
59
+ const insets = useSafeAreaInsets();
60
+ const isDismissed = useRef(false);
61
+ const timerRef = useRef(null);
62
+ const onHideRef = useRef(onHide);
63
+ const signalRef = useRef(signal);
64
+ useEffect(() => {
65
+ onHideRef.current = onHide;
66
+ signalRef.current = signal;
67
+ });
68
+ const isTop = (signal.position ?? 'top') === 'top';
69
+ const swipeable = signal.swipeToDismiss ?? true;
70
+ const autoHide = signal.autoHide ?? true;
71
+ const isLoading = signal.type === 'loading';
72
+ const stackShift = Math.min(index * STACK_OFFSET, Math.max(0, (isTop ? insets.top : insets.bottom) - 8));
73
+ const targetY = isTop ? -stackShift : stackShift;
74
+ const entryY = isTop ? -(ENTRY_OFFSET_Y + Math.abs(targetY)) : ENTRY_OFFSET_Y + Math.abs(targetY);
75
+ const translateY = useSharedValue(entryY);
76
+ const translateX = useSharedValue(0);
77
+ const scale = useSharedValue(1 - index * SCALE_STEP);
78
+ const opacity = useSharedValue(0);
79
+ const progress = useSharedValue(1);
80
+ const handleOnShow = useCallback(() => {
81
+ const s = signalRef.current;
82
+ s.onShow?.();
83
+ const a11y = s.title ? `${s.title}. ${s.description}` : s.description;
84
+ AccessibilityInfo.announceForAccessibility(a11y);
85
+ }, []);
86
+ const handleOnHide = useCallback(() => {
87
+ signalRef.current.onHide?.();
88
+ onHideRef.current();
89
+ }, []);
90
+ const clearTimer = useCallback(() => {
91
+ if (timerRef.current) {
92
+ clearTimeout(timerRef.current);
93
+ timerRef.current = null;
94
+ }
95
+ }, []);
96
+ const dismissRef = useRef(() => {});
97
+ const startTimer = useCallback(() => {
98
+ if (!autoHide || isDismissed.current || timerRef.current) return;
99
+ const duration = signalRef.current.duration ?? 3000;
100
+ progress.value = withTiming(0, {
101
+ duration,
102
+ easing: Easing.linear
103
+ });
104
+ timerRef.current = setTimeout(() => dismissRef.current(), duration);
105
+ }, [autoHide, progress]);
106
+ const dismiss = useCallback(() => {
107
+ if (isDismissed.current) return;
108
+ isDismissed.current = true;
109
+ clearTimer();
110
+ cancelAnimation(translateY);
111
+ cancelAnimation(translateX);
112
+ cancelAnimation(scale);
113
+ cancelAnimation(opacity);
114
+ cancelAnimation(progress);
115
+ translateY.value = withTiming(entryY, EXIT);
116
+ opacity.value = withTiming(0, EXIT, () => {
117
+ 'worklet';
118
+
119
+ scheduleOnRN(handleOnHide);
120
+ });
121
+ }, [entryY, clearTimer, handleOnHide, opacity, translateX, translateY, scale, progress]);
122
+ useEffect(() => {
123
+ dismissRef.current = dismiss;
124
+ }, [dismiss]);
125
+ useEffect(() => {
126
+ opacity.value = withTiming(1, ENTER);
127
+ translateY.value = withTiming(targetY, ENTER);
128
+ scale.value = withTiming(1 - index * SCALE_STEP, ORDER, finished => {
129
+ 'worklet';
130
+
131
+ if (finished) {
132
+ scheduleOnRN(handleOnShow);
133
+ scheduleOnRN(startTimer);
134
+ }
135
+ });
136
+ return clearTimer;
137
+ // eslint-disable-next-line react-hooks/exhaustive-deps
138
+ }, []);
139
+ useEffect(() => {
140
+ if (isDismissed.current) return;
141
+ cancelAnimation(translateY);
142
+ cancelAnimation(scale);
143
+ if (index < maxVisible) {
144
+ if (opacity.value === 0) opacity.value = withTiming(1, ENTER);
145
+ translateY.value = withTiming(targetY, ORDER);
146
+ scale.value = withTiming(1 - index * SCALE_STEP, ORDER, finished => {
147
+ 'worklet';
148
+
149
+ if (finished) scheduleOnRN(startTimer);
150
+ });
151
+ } else {
152
+ // Behind the maxVisible cap — hide instantly, no ghost frames
153
+ opacity.value = 0;
154
+ translateY.value = targetY;
155
+ scale.value = 1 - index * SCALE_STEP;
156
+ }
157
+ }, [index]); // eslint-disable-line react-hooks/exhaustive-deps
158
+
159
+ // ─── Handle in-place updates (e.g. loading → success/error) ─────────────
160
+ const prevType = useRef(signal.type);
161
+ useEffect(() => {
162
+ if (isDismissed.current || signal.type === prevType.current) return;
163
+ prevType.current = signal.type;
164
+
165
+ // Reset timer state so the new type's duration applies cleanly
166
+ clearTimer();
167
+ timerRef.current = null;
168
+ isDismissed.current = false;
169
+
170
+ // Brief scale pulse to draw attention to the type change
171
+ cancelAnimation(scale);
172
+ scale.value = withTiming((1 - index * SCALE_STEP) * 1.05, {
173
+ duration: 120,
174
+ easing: EASE_OUT
175
+ }, () => {
176
+ 'worklet';
177
+
178
+ scale.value = withTiming(1 - index * SCALE_STEP, {
179
+ duration: 200,
180
+ easing: EASE_OUT
181
+ });
182
+ });
183
+
184
+ // Reset progress bar and restart countdown
185
+ progress.value = 1;
186
+ scheduleOnRN(startTimer);
187
+ // eslint-disable-next-line react-hooks/exhaustive-deps
188
+ }, [signal.type]);
189
+ const pan = Gesture.Pan().enabled(swipeable).onBegin(() => {
190
+ 'worklet';
191
+
192
+ cancelAnimation(progress);
193
+ scheduleOnRN(clearTimer);
194
+ }).onUpdate(e => {
195
+ 'worklet';
196
+
197
+ translateX.value = e.translationX;
198
+ // Subtle Y resistance — nudges but stays in its lane
199
+ const drag = e.translationY * 0.08;
200
+ translateY.value = targetY + (isTop ? Math.min(0, drag) : Math.max(0, drag));
201
+ }).onEnd(e => {
202
+ 'worklet';
203
+
204
+ const flick = Math.abs(e.velocityX) > 600;
205
+ if (Math.abs(e.translationX) > SWIPE_THRESHOLD || flick) {
206
+ cancelAnimation(opacity);
207
+ opacity.value = withTiming(0, EXIT);
208
+ translateX.value = withTiming(e.translationX > 0 ? 600 : -600, EXIT, () => {
209
+ 'worklet';
210
+
211
+ scheduleOnRN(handleOnHide);
212
+ });
213
+ } else {
214
+ translateX.value = withTiming(0, SNAP);
215
+ translateY.value = withTiming(targetY, SNAP);
216
+ scheduleOnRN(startTimer);
217
+ }
218
+ });
219
+ const stackOpacity = useDerivedValue(() => {
220
+ 'worklet';
221
+
222
+ if (index >= maxVisible) return 0;
223
+ return opacity.value * Math.max(0.6, 1 - index * 0.12);
224
+ });
225
+ const animatedStyle = useAnimatedStyle(() => ({
226
+ transform: [{
227
+ translateY: translateY.value
228
+ }, {
229
+ translateX: translateX.value
230
+ }, {
231
+ scale: scale.value
232
+ }],
233
+ opacity: stackOpacity.value,
234
+ zIndex: 1000 - index
235
+ }));
236
+ const progressStyle = useAnimatedStyle(() => ({
237
+ width: `${progress.value * 100}%`
238
+ }));
239
+ const type = signal.type ?? 'info';
240
+ const mergedTheme = {
241
+ ...DEFAULT_THEME,
242
+ ...theme
243
+ };
244
+ // Safe fallback: loading/custom always resolve; unknown type → info
245
+ const typeTheme = mergedTheme[type] ?? mergedTheme.info;
246
+ const iconChar = TYPE_ICONS[type];
247
+ const renderIcon = () => {
248
+ // 1. Caller-supplied ReactNode
249
+ if (signal.icon) {
250
+ return /*#__PURE__*/_jsx(View, {
251
+ style: styles.iconWrap,
252
+ children: signal.icon
253
+ });
254
+ }
255
+ // 2. Animated spinner for loading
256
+ if (isLoading) {
257
+ return /*#__PURE__*/_jsx(View, {
258
+ style: styles.iconWrap,
259
+ children: /*#__PURE__*/_jsx(Spinner, {
260
+ color: typeTheme.iconColor
261
+ })
262
+ });
263
+ }
264
+ // 3. Unicode badge for all other types
265
+ if (iconChar) {
266
+ return /*#__PURE__*/_jsx(View, {
267
+ style: [styles.iconWrap, styles.iconBadge, {
268
+ borderColor: typeTheme.iconColor
269
+ }],
270
+ children: /*#__PURE__*/_jsx(Text, {
271
+ style: [styles.iconText, {
272
+ color: typeTheme.iconColor
273
+ }],
274
+ children: iconChar
275
+ })
276
+ });
277
+ }
278
+ return null;
279
+ };
280
+ return /*#__PURE__*/_jsx(GestureDetector, {
281
+ gesture: pan,
282
+ children: /*#__PURE__*/_jsx(Animated.View, {
283
+ style: [styles.container, isTop ? styles.anchorTop : styles.anchorBottom, animatedStyle],
284
+ children: /*#__PURE__*/_jsx(Pressable, {
285
+ accessible: true,
286
+ accessibilityRole: "alert",
287
+ accessibilityLiveRegion: type === 'error' ? 'assertive' : 'polite',
288
+ accessibilityLabel: signal.title ? `${signal.title}. ${signal.description}` : signal.description,
289
+ accessibilityHint: swipeable ? 'Swipe to dismiss or tap to interact' : 'Tap to interact',
290
+ onPress: () => signalRef.current.onPress?.(dismiss),
291
+ style: ({
292
+ pressed
293
+ }) => pressed && styles.pressed,
294
+ children: /*#__PURE__*/_jsxs(View, {
295
+ style: [styles.box, {
296
+ backgroundColor: typeTheme.background,
297
+ borderColor: typeTheme.border
298
+ }],
299
+ children: [/*#__PURE__*/_jsxs(View, {
300
+ style: styles.row,
301
+ children: [renderIcon(), /*#__PURE__*/_jsxs(View, {
302
+ style: styles.content,
303
+ children: [signal.title ? /*#__PURE__*/_jsx(Text, {
304
+ style: [styles.title, {
305
+ color: typeTheme.titleColor
306
+ }],
307
+ numberOfLines: 1,
308
+ children: signal.title
309
+ }) : null, /*#__PURE__*/_jsx(Text, {
310
+ style: [styles.description, {
311
+ color: typeTheme.descriptionColor
312
+ }],
313
+ numberOfLines: 3,
314
+ children: signal.description
315
+ })]
316
+ }), swipeable && /*#__PURE__*/_jsx(Pressable, {
317
+ onPress: dismiss,
318
+ hitSlop: 12,
319
+ accessibilityLabel: "Dismiss",
320
+ accessibilityRole: "button",
321
+ style: styles.closeBtn,
322
+ children: /*#__PURE__*/_jsx(Text, {
323
+ style: styles.closeIcon,
324
+ children: "\u2715"
325
+ })
326
+ })]
327
+ }), signal.action ? /*#__PURE__*/_jsx(View, {
328
+ style: styles.actionRow,
329
+ children: /*#__PURE__*/_jsx(Pressable, {
330
+ onPress: () => signal.action.onPress(dismiss),
331
+ style: ({
332
+ pressed
333
+ }) => [styles.actionBtn, {
334
+ borderColor: typeTheme.iconColor + '50'
335
+ }, pressed && styles.actionPressed],
336
+ accessibilityRole: "button",
337
+ accessibilityLabel: signal.action.label,
338
+ children: /*#__PURE__*/_jsx(Text, {
339
+ style: [styles.actionLabel, {
340
+ color: typeTheme.iconColor
341
+ }],
342
+ children: signal.action.label
343
+ })
344
+ })
345
+ }) : null, autoHide ? /*#__PURE__*/_jsx(View, {
346
+ style: styles.progressTrack,
347
+ children: /*#__PURE__*/_jsx(Animated.View, {
348
+ style: [styles.progressFill, {
349
+ backgroundColor: typeTheme.iconColor
350
+ }, progressStyle]
351
+ })
352
+ }) : null]
353
+ })
354
+ })
355
+ })
356
+ });
357
+ };
358
+ const styles = StyleSheet.create({
359
+ container: {
360
+ position: 'absolute',
361
+ left: 16,
362
+ right: 16
363
+ },
364
+ anchorTop: {
365
+ top: 0
366
+ },
367
+ anchorBottom: {
368
+ bottom: 0
369
+ },
370
+ box: {
371
+ borderRadius: 16,
372
+ paddingTop: 12,
373
+ paddingBottom: 10,
374
+ paddingHorizontal: 14,
375
+ marginBottom: 8,
376
+ borderWidth: 1,
377
+ overflow: 'hidden',
378
+ // clips progress bar to card radius
379
+ ...Platform.select({
380
+ ios: {
381
+ shadowColor: '#000',
382
+ shadowOffset: {
383
+ width: 0,
384
+ height: 6
385
+ },
386
+ shadowOpacity: 0.35,
387
+ shadowRadius: 10
388
+ },
389
+ android: {
390
+ elevation: 10
391
+ }
392
+ })
393
+ },
394
+ row: {
395
+ flexDirection: 'row',
396
+ alignItems: 'center',
397
+ gap: 10
398
+ },
399
+ // Icon container (shared by badge, spinner, custom)
400
+ iconWrap: {
401
+ width: 28,
402
+ height: 28,
403
+ borderRadius: 14,
404
+ alignItems: 'center',
405
+ justifyContent: 'center',
406
+ flexShrink: 0
407
+ },
408
+ // Extra style for the bordered unicode badge variant
409
+ iconBadge: {
410
+ borderWidth: 1.5
411
+ },
412
+ iconText: {
413
+ fontSize: 12,
414
+ fontWeight: '700'
415
+ },
416
+ // Spinner: 3 transparent sides + 1 colored = arc effect
417
+ spinnerRing: {
418
+ width: 20,
419
+ height: 20,
420
+ borderRadius: 10,
421
+ borderWidth: 2.5,
422
+ borderColor: 'transparent'
423
+ // borderTopColor set via inline style
424
+ },
425
+ content: {
426
+ flex: 1
427
+ },
428
+ title: {
429
+ fontWeight: '600',
430
+ fontSize: 14,
431
+ marginBottom: 2
432
+ },
433
+ description: {
434
+ fontSize: 13,
435
+ lineHeight: 18
436
+ },
437
+ closeBtn: {
438
+ padding: 2,
439
+ flexShrink: 0
440
+ },
441
+ closeIcon: {
442
+ color: '#ffffff60',
443
+ fontSize: 12,
444
+ fontWeight: '700'
445
+ },
446
+ pressed: {
447
+ opacity: 0.85
448
+ },
449
+ // Action button
450
+ actionRow: {
451
+ marginTop: 10,
452
+ alignItems: 'flex-start'
453
+ },
454
+ actionBtn: {
455
+ paddingVertical: 5,
456
+ paddingHorizontal: 12,
457
+ borderRadius: 8,
458
+ borderWidth: 1
459
+ },
460
+ actionPressed: {
461
+ opacity: 0.65
462
+ },
463
+ actionLabel: {
464
+ fontSize: 12,
465
+ fontWeight: '700',
466
+ letterSpacing: 0.2
467
+ },
468
+ // Progress bar
469
+ progressTrack: {
470
+ marginTop: 10,
471
+ height: 2,
472
+ borderRadius: 1,
473
+ backgroundColor: '#ffffff14',
474
+ overflow: 'hidden'
475
+ },
476
+ progressFill: {
477
+ height: '100%',
478
+ borderRadius: 1,
479
+ opacity: 0.6
480
+ }
481
+ });
482
+ //# sourceMappingURL=signal-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","Text","StyleSheet","View","Pressable","AccessibilityInfo","Platform","Animated","useSharedValue","useAnimatedStyle","withTiming","withRepeat","useDerivedValue","cancelAnimation","Easing","Gesture","GestureDetector","useSafeAreaInsets","ENTRY_OFFSET_Y","SCALE_STEP","STACK_OFFSET","SWIPE_THRESHOLD","TIMING_MS","DEFAULT_THEME","TYPE_ICONS","scheduleOnRN","jsx","_jsx","jsxs","_jsxs","EASE_OUT","out","cubic","EASE_IN","in","EASE_REORDER","exp","ENTER","duration","easing","EXIT","SNAP","ORDER","Spinner","color","rotation","value","linear","spinStyle","transform","rotate","style","styles","spinnerRing","borderTopColor","SignalItem","signal","onHide","index","maxVisible","theme","insets","isDismissed","timerRef","onHideRef","signalRef","current","isTop","position","swipeable","swipeToDismiss","autoHide","isLoading","type","stackShift","Math","min","max","top","bottom","targetY","entryY","abs","translateY","translateX","scale","opacity","progress","handleOnShow","s","onShow","a11y","title","description","announceForAccessibility","handleOnHide","clearTimer","clearTimeout","dismissRef","startTimer","setTimeout","dismiss","finished","prevType","pan","Pan","enabled","onBegin","onUpdate","e","translationX","drag","translationY","onEnd","flick","velocityX","stackOpacity","animatedStyle","zIndex","progressStyle","width","mergedTheme","typeTheme","info","iconChar","renderIcon","icon","iconWrap","children","iconColor","iconBadge","borderColor","iconText","gesture","container","anchorTop","anchorBottom","accessible","accessibilityRole","accessibilityLiveRegion","accessibilityLabel","accessibilityHint","onPress","pressed","box","backgroundColor","background","border","row","content","titleColor","numberOfLines","descriptionColor","hitSlop","closeBtn","closeIcon","action","actionRow","actionBtn","actionPressed","label","actionLabel","progressTrack","progressFill","create","left","right","borderRadius","paddingTop","paddingBottom","paddingHorizontal","marginBottom","borderWidth","overflow","select","ios","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","android","elevation","flexDirection","alignItems","gap","justifyContent","flexShrink","fontSize","fontWeight","flex","lineHeight","padding","marginTop","paddingVertical","letterSpacing"],"sourceRoot":"../../../src","sources":["components/signal-item.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ export const MAX_VISIBLE = 3;
4
+ export const DEFAULT_DURATION = 3000;
5
+ export const STACK_OFFSET = 14;
6
+ export const SCALE_STEP = 0.05;
7
+ export const ENTRY_OFFSET_Y = 80;
8
+ export const SWIPE_THRESHOLD = 100;
9
+ export const TIMING_MS = 280;
10
+ export const DEFAULT_THEME = {
11
+ success: {
12
+ background: '#0a0a0a',
13
+ border: '#22c55e40',
14
+ titleColor: '#ffffff',
15
+ descriptionColor: '#d1fae5',
16
+ iconColor: '#22c55e'
17
+ },
18
+ error: {
19
+ background: '#0a0a0a',
20
+ border: '#ef444440',
21
+ titleColor: '#ffffff',
22
+ descriptionColor: '#fee2e2',
23
+ iconColor: '#ef4444'
24
+ },
25
+ warning: {
26
+ background: '#0a0a0a',
27
+ border: '#f59e0b40',
28
+ titleColor: '#ffffff',
29
+ descriptionColor: '#fef3c7',
30
+ iconColor: '#f59e0b'
31
+ },
32
+ info: {
33
+ background: '#0a0a0a',
34
+ border: '#ffffff26',
35
+ titleColor: '#ffffff',
36
+ descriptionColor: '#ffffffcc',
37
+ iconColor: '#60a5fa'
38
+ },
39
+ loading: {
40
+ background: '#0a0a0a',
41
+ border: '#a78bfa40',
42
+ titleColor: '#ffffff',
43
+ descriptionColor: '#ede9fe',
44
+ iconColor: '#a78bfa'
45
+ },
46
+ custom: {
47
+ background: '#0a0a0a',
48
+ border: '#ffffff26',
49
+ titleColor: '#ffffff',
50
+ descriptionColor: '#ffffffcc',
51
+ iconColor: '#ffffff'
52
+ }
53
+ };
54
+
55
+ /** Unicode icons for non-loading, non-custom types */
56
+ export const TYPE_ICONS = {
57
+ success: '✓',
58
+ error: '✕',
59
+ warning: '⚠',
60
+ info: 'ℹ'
61
+ };
62
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MAX_VISIBLE","DEFAULT_DURATION","STACK_OFFSET","SCALE_STEP","ENTRY_OFFSET_Y","SWIPE_THRESHOLD","TIMING_MS","DEFAULT_THEME","success","background","border","titleColor","descriptionColor","iconColor","error","warning","info","loading","custom","TYPE_ICONS"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":";;AAEA,OAAO,MAAMA,WAAW,GAAG,CAAC;AAC5B,OAAO,MAAMC,gBAAgB,GAAG,IAAI;AACpC,OAAO,MAAMC,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,UAAU,GAAG,IAAI;AAC9B,OAAO,MAAMC,cAAc,GAAG,EAAE;AAChC,OAAO,MAAMC,eAAe,GAAG,GAAG;AAClC,OAAO,MAAMC,SAAS,GAAG,GAAG;AAE5B,OAAO,MAAMC,aAA0B,GAAG;EACxCC,OAAO,EAAE;IACPC,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,SAAS;IAC3BC,SAAS,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IACLL,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,SAAS;IAC3BC,SAAS,EAAE;EACb,CAAC;EACDE,OAAO,EAAE;IACPN,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,SAAS;IAC3BC,SAAS,EAAE;EACb,CAAC;EACDG,IAAI,EAAE;IACJP,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,WAAW;IAC7BC,SAAS,EAAE;EACb,CAAC;EACDI,OAAO,EAAE;IACPR,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,SAAS;IAC3BC,SAAS,EAAE;EACb,CAAC;EACDK,MAAM,EAAE;IACNT,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,WAAW;IACnBC,UAAU,EAAE,SAAS;IACrBC,gBAAgB,EAAE,WAAW;IAC7BC,SAAS,EAAE;EACb;AACF,CAAC;;AAED;AACA,OAAO,MAAMM,UAA2C,GAAG;EACzDX,OAAO,EAAE,GAAG;EACZM,KAAK,EAAE,GAAG;EACVC,OAAO,EAAE,GAAG;EACZC,IAAI,EAAE;AACR,CAAC","ignoreList":[]}