@effect-tui/react 0.9.0 → 0.9.1
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/dist/src/dev/Toast.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
-
export type ToastType = "success" | "info" | "warning" | "error";
|
|
2
|
+
export type ToastType = "success" | "info" | "warning" | "error" | "screenshot";
|
|
3
3
|
export interface Toast {
|
|
4
4
|
id: number;
|
|
5
5
|
message: string;
|
|
6
6
|
type: ToastType;
|
|
7
|
+
/** Timestamp when the toast was created (for animations) */
|
|
8
|
+
createdAt: number;
|
|
7
9
|
}
|
|
8
10
|
export interface ToastContextValue {
|
|
9
11
|
toasts: Toast[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/dev/Toast.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/dev/Toast.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,SAAS,EAAgD,MAAM,OAAO,CAAA;AAMnG,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAA;AAE/E,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAQD,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAuBD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,aAiBlE;AAiED,wBAAgB,cAAc,cA2B7B;AAMD,wBAAgB,kBAAkB,WAIzB,MAAM,UAKd"}
|
package/dist/src/dev/Toast.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "@effect-tui/react/jsx-runtime";
|
|
|
2
2
|
// Toast notification system for dev mode
|
|
3
3
|
// Beautiful, minimal notifications that appear at the top of the screen
|
|
4
4
|
import { Colors } from "@effect-tui/core";
|
|
5
|
-
import { createContext, useCallback, useContext, useState } from "react";
|
|
5
|
+
import { createContext, useCallback, useContext, useEffect, useState } from "react";
|
|
6
6
|
// ─────────────────────────────────────────────────────────────
|
|
7
7
|
// Context
|
|
8
8
|
// ─────────────────────────────────────────────────────────────
|
|
@@ -22,6 +22,7 @@ const TOAST_STYLES = {
|
|
|
22
22
|
info: { bg: Colors.rgb(30, 50, 80), fg: Colors.rgb(140, 180, 230), icon: "ℹ" },
|
|
23
23
|
warning: { bg: Colors.rgb(80, 60, 20), fg: Colors.rgb(230, 200, 100), icon: "⚠" },
|
|
24
24
|
error: { bg: Colors.rgb(80, 30, 30), fg: Colors.rgb(230, 140, 140), icon: "✗" },
|
|
25
|
+
screenshot: { bg: Colors.rgb(30, 70, 40), fg: Colors.rgb(140, 230, 140), icon: "📷" },
|
|
25
26
|
};
|
|
26
27
|
// ─────────────────────────────────────────────────────────────
|
|
27
28
|
// Provider
|
|
@@ -31,7 +32,7 @@ export function ToastProvider({ children }) {
|
|
|
31
32
|
const [toasts, setToasts] = useState([]);
|
|
32
33
|
const show = useCallback((message, type = "info", durationMs = 2000) => {
|
|
33
34
|
const id = ++toastId;
|
|
34
|
-
setToasts((prev) => [...prev, { id, message, type }]);
|
|
35
|
+
setToasts((prev) => [...prev, { id, message, type, createdAt: Date.now() }]);
|
|
35
36
|
setTimeout(() => {
|
|
36
37
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
37
38
|
}, durationMs);
|
|
@@ -41,6 +42,41 @@ export function ToastProvider({ children }) {
|
|
|
41
42
|
}, []);
|
|
42
43
|
return _jsx(ToastContext.Provider, { value: { toasts, show, dismiss }, children: children });
|
|
43
44
|
}
|
|
45
|
+
const SCREENSHOT_PHASES = {
|
|
46
|
+
camera: {
|
|
47
|
+
icon: "📷",
|
|
48
|
+
bg: Colors.rgb(40, 50, 60),
|
|
49
|
+
fg: Colors.rgb(180, 200, 220),
|
|
50
|
+
},
|
|
51
|
+
flash: {
|
|
52
|
+
icon: "⚡",
|
|
53
|
+
bg: Colors.rgb(255, 255, 200), // Bright flash!
|
|
54
|
+
fg: Colors.rgb(60, 60, 40),
|
|
55
|
+
},
|
|
56
|
+
success: {
|
|
57
|
+
icon: "✓",
|
|
58
|
+
bg: Colors.rgb(30, 70, 40),
|
|
59
|
+
fg: Colors.rgb(140, 230, 140),
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
function ScreenshotToast({ message, createdAt }) {
|
|
63
|
+
const [phase, setPhase] = useState("camera");
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
// Phase timing: camera (0-120ms) → flash (120-280ms) → success (280ms+)
|
|
66
|
+
const elapsed = Date.now() - createdAt;
|
|
67
|
+
const cameraDelay = Math.max(0, 120 - elapsed);
|
|
68
|
+
const flashDelay = Math.max(0, 280 - elapsed);
|
|
69
|
+
const flashTimer = setTimeout(() => setPhase("flash"), cameraDelay);
|
|
70
|
+
const successTimer = setTimeout(() => setPhase("success"), flashDelay);
|
|
71
|
+
return () => {
|
|
72
|
+
clearTimeout(flashTimer);
|
|
73
|
+
clearTimeout(successTimer);
|
|
74
|
+
};
|
|
75
|
+
}, [createdAt]);
|
|
76
|
+
const style = SCREENSHOT_PHASES[phase];
|
|
77
|
+
const content = ` ${style.icon} ${message} `;
|
|
78
|
+
return (_jsxs("hstack", { children: [_jsx("spacer", {}), _jsx("box", { bg: style.bg, padding: { x: 1 }, children: _jsx("text", { fg: style.fg, children: content }) })] }));
|
|
79
|
+
}
|
|
44
80
|
// ─────────────────────────────────────────────────────────────
|
|
45
81
|
// Toast Display Component
|
|
46
82
|
// ─────────────────────────────────────────────────────────────
|
|
@@ -50,6 +86,10 @@ export function ToastContainer() {
|
|
|
50
86
|
return null;
|
|
51
87
|
// Show only the most recent toast
|
|
52
88
|
const toast = toasts[toasts.length - 1];
|
|
89
|
+
// Special animated toast for screenshots
|
|
90
|
+
if (toast.type === "screenshot") {
|
|
91
|
+
return _jsx(ScreenshotToast, { message: toast.message, createdAt: toast.createdAt });
|
|
92
|
+
}
|
|
53
93
|
const style = TOAST_STYLES[toast.type];
|
|
54
94
|
// Compact pill in upper right
|
|
55
95
|
const content = ` ${style.icon} ${toast.message} `;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/dev/Toast.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,wEAAwE;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/dev/Toast.tsx"],"names":[],"mappings":"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"}
|