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 ( +