Skip to content

No.301 · Feedback· New

Blank Page Starter

The empty state of a new page: faint options under an untitled heading offer a blank page or a template, step aside the moment you type, and set a chosen template in line by line.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Light

Build the empty state of a new document page in a warm-minimal style (Inter, ink #37352f). A borderless 30–40px bold title input with tight tracking and a pale 'Untitled' placeholder, then a borderless auto-growing body textarea whose 'Start writing…' placeholder only shows when focused. Under it, a small faint label 'Begin with' and a stack of ghost options, each a 32px row in faint grey #a5a29a with a 20px glyph: '▢ Empty page' (with a tiny bordered ↵ key hint), '✎ Meeting notes', '☷ Weekly plan', '❏ Reading list'. Hovering or focusing an option gives it a 6% ink background and full ink colour; options rise in 40ms apart. Typing in the body makes the options disappear (clearing it brings them back). Choosing a template sets the title to the template name if it is empty and replaces the body with the template's lines, set in one by one (4px rise, 260ms, 40ms stagger): 20px semibold headings, • bullets, real to-do checkboxes that strike through when ticked, and plain text. A quiet 'Start over with a blank page' button follows the last line. Selected variant — Light (light): Light theme: page #ffffff, ink #37352f, muted #787774, faint #a5a29a, title placeholder #b9b6ae, hover rgb(55 53 47 / 0.06), key hint border rgb(55 53 47 / 0.12), focus and checkbox accent #2383e2. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: From the title, ↓ moves into the options and Enter starts an empty page (focus goes to the body). ↑/↓ walk the options; ↑ from the first returns to the title. Choosing a template moves focus to Start over; Start over clears everything and focuses the title. onPick reports the template id or 'empty'. Motion: Options and template lines rise 4px and fade in with a 40ms stagger. Reduced motion shows them immediately. Accessibility: The page is an article named by its title. Options are a labelled group of real buttons; checkboxes are wrapped in labels. Focus is moved deliberately after each choice and is always visible. Responsive behavior: One fluid column; the title scales with container width and long template lines wrap. Touch: Every option is a tap target; nothing depends on hover. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
From the title, ↓ moves into the options and Enter starts an empty page (focus goes to the body). ↑/↓ walk the options; ↑ from the first returns to the title. Choosing a template moves focus to Start over; Start over clears everything and focuses the title. onPick reports the template id or 'empty'.
Motion
Options and template lines rise 4px and fade in with a 40ms stagger. Reduced motion shows them immediately.
Accessibility
The page is an article named by its title. Options are a labelled group of real buttons; checkboxes are wrapped in labels. Focus is moved deliberately after each choice and is always visible.
Responsive
One fluid column; the title scales with container width and long template lines wrap.
On touch
Every option is a tap target; nothing depends on hover.

Featured

333 components