diff --git a/DESIGN.md b/DESIGN.md index 97de97d..1236ad5 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -17,7 +17,7 @@ Every WinLab app is framed by four fixed corners, 24px in from the viewport. `ap - There is no theme toggle: the theme follows the system. - CD passes `BUILD_SHA`, `BUILD_TIME` and `BUILD_URL` to the image build (`NEXT_PUBLIC_BUILD_*`); without them the version reads `dev`. - A corner with nothing to show stays empty. -- Every corner item can carry a tip that says what its label leaves out (where a link goes, what a page holds, who owns the site). A tip never repeats the label. Tips open at once, toward the page, lined up with the corner's outer edge; touch never opens them, so nothing depends on one. +- Every corner item has a tip (`tip` is required in `app-shell`, so a missing one fails the type check) that says what its label leaves out (where a link goes, what a page holds, who owns the site). A tip never repeats the label. Tips open at once, toward the page, lined up with the corner's outer edge; touch never opens them, so nothing depends on one. - Corner text is `text-body` in `muted-foreground`, links turn `foreground` on hover and when current. - Content that scrolls under the corners fades into a 64px band of frosted glass at the top and bottom edges. - No menu button: an app keeps its pages few enough to fit beside the breadcrumb on a phone. diff --git a/app/[slug]/page.tsx b/app/[slug]/page.tsx index 28577dd..d89823f 100644 --- a/app/[slug]/page.tsx +++ b/app/[slug]/page.tsx @@ -35,7 +35,11 @@ export default async function DocPage({ return (
diff --git a/app/_docs/site-shell.tsx b/app/_docs/site-shell.tsx index 6184ec6..044721b 100644 --- a/app/_docs/site-shell.tsx +++ b/app/_docs/site-shell.tsx @@ -6,7 +6,7 @@ export function SiteShell({ layout, children, }: { - page?: { label: string; href: string } + page?: { label: string; href: string; tip: string } layout?: "column" | "spotlight" | "wide" children: React.ReactNode }) { diff --git a/registry/winlab/blocks/app-shell/app-shell.tsx b/registry/winlab/blocks/app-shell/app-shell.tsx index a297b18..417fcbd 100644 --- a/registry/winlab/blocks/app-shell/app-shell.tsx +++ b/registry/winlab/blocks/app-shell/app-shell.tsx @@ -12,10 +12,11 @@ import { TooltipTrigger, } from "@/registry/winlab/ui/tooltip" -// A tip says what the label leaves out (where a link goes, what a page -// holds); it never repeats the label. -type Crumb = { label: string; href: string; tip?: string } -type NavItem = { label: string; href: string; tip?: string } +// Every corner item has a tip, required so none is forgotten. It says what +// the label leaves out (where a link goes, what a page holds, whose account +// it is); it never repeats the label. +type Crumb = { label: string; href: string; tip: string } +type NavItem = { label: string; href: string; tip: string } // The chrome of every WinLab app is its four corners. By default each corner // has one job, filled from the props below; an app that needs something else