From 9add5e57f323e707de2b974c53f11f2c0a164f19 Mon Sep 17 00:00:00 2001 From: jvaught01 Date: Thu, 10 Sep 2026 14:11:26 -0700 Subject: [PATCH] feat(landing): redesign as a Windows 11 desktop, light mode + dark toggle The page is now a desktop: dotted wallpaper with a blue bloom, a bottom taskbar as the nav (start, flicky.exe, GitHub, releases, theme toggle, live clock), desktop icons top-left as section links, and every content block in a Windows-11 window. Hero is a plain lowercase wordmark surrounded by parallax desktop clutter (sticky note, toast, overlay replica, walkthrough window, kaomoji, files). The blue Flicky cursor flies to and points at page elements on scroll, mirroring the app's own overlay. Light mode default with a persisted, flash-free dark toggle. Copy updated for v1.2.1 (local models, auto-type, stream window, setup wizard), repo links moved to pango07/flicky, demo uses the mp4. Clicky / Farza attribution kept verbatim in credit.md and the footer. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01XSbPaf2fxjrLNjNnn68bXW --- landing/README.md | 2 +- landing/app/components/Clock.tsx | 31 + landing/app/components/DesktopIcons.tsx | 40 + landing/app/components/HeroClutter.tsx | 79 ++ landing/app/components/HeroVideo.tsx | 49 + landing/app/components/Icons.tsx | 149 +++ landing/app/components/Mockups.tsx | 86 ++ landing/app/components/Parallax.tsx | 44 + landing/app/components/PointAt.tsx | 132 +++ landing/app/components/Taskbar.tsx | 58 + landing/app/components/ThemeToggle.tsx | 80 ++ landing/app/components/Win.tsx | 44 + landing/app/globals.css | 1448 ++++++++++++++++++----- landing/app/layout.tsx | 30 +- landing/app/page.tsx | 516 +++++--- 15 files changed, 2336 insertions(+), 452 deletions(-) create mode 100644 landing/app/components/Clock.tsx create mode 100644 landing/app/components/DesktopIcons.tsx create mode 100644 landing/app/components/HeroClutter.tsx create mode 100644 landing/app/components/HeroVideo.tsx create mode 100644 landing/app/components/Icons.tsx create mode 100644 landing/app/components/Mockups.tsx create mode 100644 landing/app/components/Parallax.tsx create mode 100644 landing/app/components/PointAt.tsx create mode 100644 landing/app/components/Taskbar.tsx create mode 100644 landing/app/components/ThemeToggle.tsx create mode 100644 landing/app/components/Win.tsx diff --git a/landing/README.md b/landing/README.md index d69fd6d..be1a5dd 100644 --- a/landing/README.md +++ b/landing/README.md @@ -1,6 +1,6 @@ # Flicky landing page -Next.js 15 static site for [flicky](https://github.com/jvaught01/flicky). +Next.js 16 static site for [flicky](https://github.com/pango07/flicky). Built as a static export so it can be dropped onto GitHub Pages, Vercel, Netlify, Cloudflare Pages, or any plain static host. diff --git a/landing/app/components/Clock.tsx b/landing/app/components/Clock.tsx new file mode 100644 index 0000000..542608b --- /dev/null +++ b/landing/app/components/Clock.tsx @@ -0,0 +1,31 @@ +'use client'; + +import { useEffect, useState } from 'react'; + +/** + * Taskbar tray clock. Renders placeholder dashes until mounted so the + * static export and the first client render agree. + */ +export function Clock() { + const [now, setNow] = useState(null); + + useEffect(() => { + setNow(new Date()); + const id = setInterval(() => setNow(new Date()), 30_000); + return () => clearInterval(id); + }, []); + + const time = now + ? now.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' }) + : '--:--'; + const date = now + ? now.toLocaleDateString(undefined, { month: 'numeric', day: 'numeric', year: 'numeric' }) + : '--/--/----'; + + return ( +
+ {time} + {date} +
+ ); +} diff --git a/landing/app/components/DesktopIcons.tsx b/landing/app/components/DesktopIcons.tsx new file mode 100644 index 0000000..cbe65fc --- /dev/null +++ b/landing/app/components/DesktopIcons.tsx @@ -0,0 +1,40 @@ +import { Mark } from './Mark'; +import { FolderIcon, InstallerIcon, TextFileIcon, ZipIcon } from './Icons'; + +const REPO = 'https://github.com/pango07/flicky'; + +/** + * The desktop icon column, top-left, exactly where Windows puts them. + * Doubles as the section nav on wide screens; hidden under 1100px + * because the taskbar is enough there. + */ +export function DesktopIcons() { + return ( +
+ + + flicky.exe + + + + how it works + + + + features + + + + get flicky + + + + questions + + + + source.zip + +
+ ); +} diff --git a/landing/app/components/HeroClutter.tsx b/landing/app/components/HeroClutter.tsx new file mode 100644 index 0000000..59a4a60 --- /dev/null +++ b/landing/app/components/HeroClutter.tsx @@ -0,0 +1,79 @@ +import { Mark } from './Mark'; +import { RecycleIcon, ImageFileIcon, JsonFileIcon } from './Icons'; + +/** + * The stuff lying around on the desktop behind the wordmark: a sticky + * note, a toast, a mini replica of the Flicky overlay, a tiny window, + * some kaomoji and a couple of files. Each drifts a little with the + * mouse (see Parallax) and is hidden on narrow screens. + */ +export function HeroClutter() { + return ( +