/* Loops Blog — index / landing page. Data-driven: add new entries to BLOG_POSTS (newest first) and the page grows. The first entry renders as the featured "Latest" post; the rest fill the grid. UK English, no em dashes. */ const BI_LINK = "text-brand-deep font-semibold hover:underline"; const BLOG_POSTS = [ { href: "/blog/easier-to-talk-to-chatgpt-than-a-therapist/", category: "AI and ADHD", title: "I find it easier to talk to ChatGPT than I ever found it to talk to a therapist.", dek: "A chatbot beat the professionals on openness. Why that is, why CBT never landed for me, and the half of the data that should worry all of us.", read: "7 min read", }, { href: "/blog/doing-my-tax-return-with-adhd/", category: "Money and admin", title: "Doing my tax return with ADHD, and why I still haven't paid it.", dek: "It's July, the money is ready, and the payment still isn't sent, because I've forgotten my Government Gateway password again. Why the wall always lands at the very last step.", read: "7 min read", }, { href: "/blog/getting-fit-means-not-stopping-not-starting/", category: "Get fit", title: "Getting fit with ADHD means not stopping, not starting.", dek: "Starting a fitness habit was never the hard part. Not stopping is. Why continuity breaks for ADHD brains, and how to make coming back easier than starting over.", read: "8 min read", }, { href: "/blog/becoming-a-leader-means-running-the-system/", category: "Become a leader", title: "Becoming a leader with ADHD means running the system, not just doing the work.", dek: "You aren't failing at leadership. You're failing at the invisible machine it runs on. Why the maintenance work breaks ADHD leaders, and how to make it visible.", read: "9 min read", }, { href: "/blog/building-a-side-project-means-finishing-not-starting/", category: "Build a side project", title: "Building a side project with ADHD means finishing, not starting.", dek: "You're not short of side projects. You're short of finished ones. Why finishing is a completely different job from starting, and how to design around it.", read: "8 min read", }, { href: "/blog/starting-a-business-means-surviving-the-boring-middle/", category: "Starting a business", title: "Starting a business with ADHD means surviving the boring middle.", dek: "The start plays to every strength an ADHD brain has. The middle attacks every weakness. Why founding is easy and finishing is hard, and what actually helps.", read: "8 min read", }, { href: "/blog/finding-a-new-job-means-building-a-search-you-can-restart/", category: "Finding a new job", title: "Finding a new job with ADHD means building a search you can restart.", dek: "A job search doesn't fail because you gave up. It fails because it stalled and never restarted. Why that hits ADHD brains hardest, and how to build a way back in.", read: "7 min read", }, { href: "/blog/getting-a-promotion-means-building-a-record-of-your-work/", category: "Getting promoted", title: "Getting a promotion with ADHD means building a record of your work.", dek: "You don't get promoted for the work. You get promoted for the record of the work. Why that gap is widest for ADHD brains, and how to close it.", read: "6 min read", }, ]; /* ---------------- Page nav ---------------- */ const BI_NAV_LINKS = [ { label: "Knowledge Hub", href: "/adhd/knowledge-hub/" }, { label: "For ADHD", href: "/adhd/#directory" }, ]; const BiNav = () => { const [open, setOpen] = React.useState(false); const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 8); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); React.useEffect(() => { if (!open) return; const onKey = (e) => e.key === "Escape" && setOpen(false); document.body.style.overflow = "hidden"; document.addEventListener("keydown", onKey); return () => { document.body.style.overflow = ""; document.removeEventListener("keydown", onKey); }; }, [open]); return (
Loops
); }; /* ---------------- Hero ---------------- */ const BiHero = () => (
Loops Blog

Notes on ADHD, work, and building things that last.

Honest, research-backed writing on how ADHD brains actually work, and how to design around the parts that get hard. Written by the people building Loops.

); /* ---------------- Featured (latest) post ---------------- */ const BiFeatured = ({ post }) => (
Latest {post.category} {post.read}

{post.title}

{post.dek}

Matt Humphreys
Matt Humphreys
Loops
Read post
); /* ---------------- Post grid ---------------- */ const BiPostCard = ({ post }) => (
{post.category} {post.read}

{post.title}

{post.dek}

Matt Humphreys Matt Humphreys
Read
); const BiPostGrid = ({ posts }) => { if (!posts.length) return null; return (
More posts

Everything else we've written.

{posts.map((p) => )}
); }; /* ---------------- App ---------------- */ function BiApp() { const [featured, ...rest] = BLOG_POSTS; return (
{featured ? : null}
); } const biRoot = ReactDOM.createRoot(document.getElementById("root")); biRoot.render();