import { useState, useEffect, useRef } from "react"; const IDENTITY_AFFIRMATIONS = [ "I am someone who finishes.", "I do deep work daily.", "I don't avoid hard things.", "I act with intention.", "I protect my attention.", ]; const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; function useStorage(key, fallback) { const [value, setValue] = useState(fallback); const [loaded, setLoaded] = useState(false); useEffect(() => { (async () => { try { const res = await window.storage.get(key); if (res && res.value !== undefined) { setValue(JSON.parse(res.value)); } } catch (e) {} setLoaded(true); })(); }, [key]); const set = async (newVal) => { const resolved = typeof newVal === "function" ? newVal(value) : newVal; setValue(resolved); try { await window.storage.set(key, JSON.stringify(resolved)); } catch (e) {} }; return [value, set, loaded]; } function formatDate(d) { return d.toLocaleDateString("en-US", { month: "short", day: "numeric" }); } function todayKey() { const d = new Date(); return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`; } const VIEWS = ["morning", "execute", "review", "inbox", "vision"]; export default function FocusEngine() { const [view, setView] = useState("morning"); const [identity, setIdentity, idLoaded] = useStorage("fe_identity", "I am someone who finishes."); const [big3, setBig3, big3Loaded] = useStorage("fe_big3_" + todayKey(), ["", "", ""]); const [deepBlock, setDeepBlock, dbLoaded] = useStorage("fe_deepblock_" + todayKey(), ""); const [inbox, setInbox, inboxLoaded] = useStorage("fe_inbox", []); const [vision90, setVision90, v90Loaded] = useStorage("fe_vision90", ""); const [vision3yr, setVision3yr, v3Loaded] = useStorage("fe_vision3yr", ""); const [weekBig3, setWeekBig3, wb3Loaded] = useStorage("fe_weekbig3", ["", "", ""]); const [completed, setCompleted, compLoaded] = useStorage("fe_completed_" + todayKey(), [false, false, false]); const [inboxInput, setInboxInput] = useState(""); const [deepFocus, setDeepFocus] = useState(false); const [timer, setTimer] = useState(null); const [timerLeft, setTimerLeft] = useState(90 * 60); const [timerRunning, setTimerRunning] = useState(false); const [editIdentity, setEditIdentity] = useState(false); const [identityInput, setIdentityInput] = useState(""); const [streakData, setStreakData, streakLoaded] = useStorage("fe_streak", {}); const [weeklyNote, setWeeklyNote, wnLoaded] = useStorage("fe_weeklynote", ""); const intervalRef = useRef(null); const inputRef = useRef(null); // Mark today as active useEffect(() => { if (streakLoaded) { setStreakData(prev => ({ ...prev, [todayKey()]: true })); } }, [streakLoaded]); // Timer useEffect(() => { if (timerRunning) { intervalRef.current = setInterval(() => { setTimerLeft(t => { if (t <= 1) { clearInterval(intervalRef.current); setTimerRunning(false); return 0; } return t - 1; }); }, 1000); } else { clearInterval(intervalRef.current); } return () => clearInterval(intervalRef.current); }, [timerRunning]); const timerMins = Math.floor(timerLeft / 60); const timerSecs = timerLeft % 60; const completedCount = completed.filter(Boolean).length; const dayWon = completedCount === 3; const addInbox = () => { if (!inboxInput.trim()) return; setInbox(prev => [{ id: Date.now(), text: inboxInput.trim(), clarified: false, action: "" }, ...prev]); setInboxInput(""); }; const removeInbox = (id) => setInbox(prev => prev.filter(i => i.id !== id)); const moveToB3 = (item) => { const emptyIdx = big3.findIndex((t, i) => !t && !completed[i]); if (emptyIdx >= 0) { const nb3 = [...big3]; nb3[emptyIdx] = item.text; setBig3(nb3); removeInbox(item.id); } }; // Streak calc const getStreak = () => { let streak = 0; const d = new Date(); for (let i = 0; i < 365; i++) { const k = `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`; if (streakData[k]) streak++; else break; d.setDate(d.getDate() - 1); } return streak; }; const loaded = idLoaded && big3Loaded && dbLoaded && inboxLoaded && v90Loaded && v3Loaded && wb3Loaded && compLoaded && streakLoaded && wnLoaded; if (!loaded) { return (
LOADING ENGINE...
); } if (deepFocus) { return (
DEEP WORK MODE
{String(timerMins).padStart(2, "0")}:{String(timerSecs).padStart(2, "0")}
{timerLeft === 0 ? "SESSION COMPLETE" : "MINUTES REMAINING"}
{big3.filter(Boolean).map((t, i) => (
{ const nc = [...completed]; nc[i] = !nc[i]; setCompleted(nc); }} style={{ width: 16, height: 16, border: "1px solid #9a8e7a", cursor: "pointer", flexShrink: 0, display: "flex", alignItems: "center", justifyContent: "center", background: completed[i] ? "#c8b89a" : "transparent" }}> {completed[i] && โœ“}
{t}
))}
); } const navItems = [ { id: "morning", label: "MORNING" }, { id: "execute", label: "EXECUTE" }, { id: "review", label: "REVIEW" }, { id: "inbox", label: "INBOX" + (inbox.length ? ` (${inbox.length})` : "") }, { id: "vision", label: "VISION" }, ]; return (
{/* Header */}
Focus Engine
{navItems.map(n => ( ))}
DAY STREAK
{getStreak()}
{dayWon ? "โฌก" : "โ—‡"}
{/* Main */}
{/* MORNING BRIEFING */} {view === "morning" && (
{new Date().toLocaleDateString("en-US", { weekday: "long", month: "long", day: "numeric" }).toUpperCase()}

Morning Briefing

5 minutes. No more. Let's go.

{/* Identity */}
01 โ€” WHO AM I TODAY
{editIdentity ? (
setIdentityInput(e.target.value)} onKeyDown={e => { if (e.key === "Enter") { setIdentity(identityInput); setEditIdentity(false); } if (e.key === "Escape") setEditIdentity(false); }} style={{ background: "transparent", border: "none", borderBottom: "1px solid #c8b89a", color: "#f0e8dc", fontSize: 18, width: "100%", padding: "4px 0", fontFamily: "'DM Serif Display', serif", fontStyle: "italic" }} autoFocus />
ENTER to save ยท ESC to cancel
) : (
{ setIdentityInput(identity); setEditIdentity(true); }} style={{ cursor: "text" }}>
"{identity}"
CLICK TO EDIT
)}
{IDENTITY_AFFIRMATIONS.filter(a => a !== identity).slice(0, 3).map((a, i) => ( ))}
{/* Big 3 */}
02 โ€” TODAY'S BIG 3

Three tasks. If only these get done, the day wins.

{big3.map((task, i) => (
{i + 1}
{ const nb = [...big3]; nb[i] = e.target.value; setBig3(nb); }} placeholder={["Your most important task today...", "Second priority...", "Third..."][i]} style={{ background: "transparent", border: "none", borderBottom: "1px solid #9a8e7a", color: "#c8b89a", fontSize: 14, flex: 1, padding: "4px 0", fontFamily: "'DM Mono', monospace" }} />
))}
{/* Deep Block */}
03 โ€” DEEP WORK BLOCK

When is your focus block? Make it real by writing it down.

setDeepBlock(e.target.value)} placeholder="e.g. 9:00โ€“10:30am on the landing page draft" style={{ background: "transparent", border: "none", borderBottom: "1px solid #9a8e7a", color: "#c8b89a", fontSize: 13, width: "100%", padding: "4px 0", fontFamily: "'DM Mono', monospace" }} />
)} {/* EXECUTE */} {view === "execute" && (
EXECUTE MODE

{dayWon ? "Day Won." : "Execute."}

{dayWon && (

All three done. This is what winning looks like.

)}
{/* Identity reminder */}
"{identity}"
{/* Tasks */}
{big3.map((task, i) => ( task ? (
{ const nc = [...completed]; nc[i] = !nc[i]; setCompleted(nc); }} style={{ display: "flex", alignItems: "center", gap: 16, padding: "18px 16px", cursor: "pointer", marginBottom: 2, background: "transparent", transition: "background 0.15s", borderBottom: "1px solid #1a1812" }}>
{completed[i] && โœ“}
{task}
0{i + 1}
) : null ))}
{/* Progress */}
{completedCount}/3 COMPLETE
{/* Deep Work Block */} {deepBlock && (
Scheduled: {deepBlock}
)}
)} {/* REVIEW */} {view === "review" && (
WEEKLY REVIEW

The Reset.

{/* This week's big 3 */}
WEEK'S BIG 3 โ€” DID THESE MOVE?
{weekBig3.map((task, i) => (
{i + 1}
{ const nw = [...weekBig3]; nw[i] = e.target.value; setWeekBig3(nw); }} placeholder={["Biggest thing this week...", "Second...", "Third..."][i]} style={{ background: "transparent", border: "none", borderBottom: "1px solid #9a8e7a", color: "#c8b89a", fontSize: 13, flex: 1, padding: "4px 0", fontFamily: "'DM Mono', monospace" }} />
))}
{/* Bottleneck */}
ONE BOTTLENECK

What's the one thing slowing everything else down?