/* Loops — phone mockup components. Hand-drawn "Loops app" preview screens. Calm, low-detail, premium feel. */ const PhoneShell = ({ children, className = "", w = 300, h = 620 }) => (
{/* Inner screen */}
{/* Notch */}
{/* Status bar */}
9:41
{children}
); /* Reusable mini UI bits inside the phone */ const ScreenHeader = ({ title, subtitle }) => (
{subtitle}
{title}
); const PillNav = ({ items, active = 0 }) => (
{items.map((it, i) => (
{it}
))}
); /* Screen 1 — Today (Daily commit) */ const ScreenToday = () => (
{/* Streak card */}
14 day streak
Building momentum
+1
{/* Daily commit card */}
Daily commit 2 min
Send the draft to Maya before lunch.
Career Promotion loop
{/* Loops mini list */}
Your loops
4
{[ { dot: "#4c52dd", name: "Promotion", meta: "Day 14 of season" }, { dot: "#fb9526", name: "Half-marathon", meta: "Day 22" }, { dot: "#f53864", name: "Sleep before midnight", meta: "Day 9" }, ].map((l, i) => (
{l.name}
{l.meta}
))}
{/* Bottom tab bar */}
{[ { l: "Today", a: true, p: "M4 12l8-8 8 8M6 10v10h12V10" }, { l: "Loops", p: "M6 12a6 6 0 1 1 12 0 6 6 0 0 1-12 0Z M4 12c0-2 2-4 4-4M20 12c0 2-2 4-4 4" }, { l: "Coach", p: "M4 6h16v10H8l-4 4V6Z" }, { l: "You", p: "M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 8a7 7 0 0 1 14 0" }, ].map((t, i) => (
{t.l}
))}
); /* Screen 2 — Coach conversation */ const ScreenCoach = () => (
L

You've sent three drafts to Maya this month. The promotion loop is on track. How's the conversation with your manager feeling?

Honestly, anxious. I keep putting it off.

L

Noted. Last time you avoided a big conversation, what helped was scripting the first sentence. Want to draft it together — three minutes, then move on?

{/* Composer */}
Message your coach…
); /* Screen 3 — Artefacts (a working document) */ const ScreenArtefacts = () => (
Promotion · Season 2 updated today
Goal
Be ready for the staff engineer interview by end of Q3.
Daily action
One deep work block before noon. Ship something small. Tell Maya.
Accountability
M
Maya · partner
Recent wins
    {["Shipped the draft RFC", "Asked for the project lead", "Talked to Priya about scope"].map((w, i) => (
  • {w}
  • ))}
Your coach reads this every day.
); Object.assign(window, { PhoneShell, ScreenToday, ScreenCoach, ScreenArtefacts });