Docs Site Template
Sidebar TOC + scrollspy content + prev/next footer assembled in one compact frame — the docs layout pattern, live with real section tracking.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Ambience is a live light wash over the preview. Full palette re-theming of every demo arrives with Theme Studio (Pro).
// React — scrollspy = which section owns scrollTop
const onScroll = (e) => {
let cur = sections[0];
sections.forEach(s => {
const node = e.currentTarget.querySelector(`[data-sec="${s}"]`);
if (node && node.offsetTop - 70 <= e.currentTarget.scrollTop) cur = s;
});
setActive(cur);
};
// nav jump: element.scrollIntoView({ behavior: "smooth" })
// sections carry data-sec + scroll-mt so anchors never hide under chromeSnippet provenance
lines 1–11 · v1.0.0No changelog entry mentions “Docs Site Template”, so the catalog records a single version for it.
Every line above is attributed to the single version this catalog records — we keep no per-line history, so no per-line attribution is invented. See the provenance page for the rule and the gaps.
Review notes · anchored to code lines
Threads attach to a line number in this asset's snippet, so a remark about the focus trap stays next to it.
Loading notes…
The snippet on this page is 11 lines long, so anchors run 1–11. Notes are per-asset and per-browser; a shared review thread is a server feature, and this panel is the local stand-in that proves the anchoring works.
Why it works — Docs pages get abandoned when readers can't tell where they are; a sidebar with live scrollspy restores the map at all times.
The idea — Scrollspy needs only one rule — the last section whose offsetTop clears the current scroll position owns the highlight.
When to skip it — Don't let the sidebar collapse into mystery icons on mobile; a simple top bar with the current section beats a burger nobody opens.
Course rail — understand it before you ship it
Live variants
Variant gallery
The same Docs Site Template demo re-lit in three tones — no code change, three personalities.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Theme Studio preview
Theming example — two token themes
Assets are token-driven (100% design-token driven). Here the same scene runs under two theme presets from the token sheet.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
--accent 262 · dark surfaces
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
--accent 40 · paper surfaces
90-second read
Usage recipe — where this fits
Assemble it between your own header and footer — sections are the middle of the page, where information architecture lives.
Swap the demo copy for real content first, then reduce: cut decorative blocks until the section survives on its information alone.
Cost honesty
Performance note
Cheaper alternative — the minimal variant drops the decorative layers and keeps the content hierarchy.
What it needs
Browser support strip
No polyfills ship with the asset — if a listed feature is missing in a target browser, the graceful fallback is the static layout.
prefers-reduced-motion
Reduced-motion fallback
This asset is not motion-first, so reduced-motion mainly affects its decorative extras (reveals, hovers). The content layer never depends on motion to be readable.
Pressable step-through
Keyboard walk demo
Step through what a keyboard user experiences with this asset.
Tab into the section via the skip link or heading anchor
Auto-suggested
Composition map — what pairs well
Same-family assets that compose cleanly with this one:
Aurora Hero Section
Full-viewport hero: aurora veil backdrop, scramble headline, dual CTAs and a floating product chip — the section most Prompt users ask for first.
SectionsBento Studio Grid
Six-cell bento with organic spans, an embedded mini orbit, hover expand and skeleton-safe loading. Cells accept any card content via props.
SectionsMarquee Logo Belt
Edgeless infinite logo belt with pause-on-hover and direction props. Ships with a 12-logo placeholder set you can swap via one array.
Learn essays that teach the technique
One original micro-case
Inspiration context
The pricing page that stopped lying
A pricing section with three tiers and no indication of which one people actually chose produced analysis paralysis. Adding one honest 'most chosen' chip — not a fake 'popular' badge, but a real count — lifted conversions by 8% and cut support questions about tier differences.
Written in-house — no screenshots, no borrowed imagery. The pattern, not the pixels.
Every version, why
Changelog — this asset
Current release — this page documents the asset as shipped.
Token pass: colours and radii moved to the design-token sheet; a11y score raised to the current bar.
Initial release to the library — original markup, MIT licensed.
30-day sparkline
Copy history
Sample series from this asset's usage fingerprint · last 12 days shown.
Future queue
Community remixes
Queue opens after launch. Remixes arrive as alternate versions of this asset — same job, different voice — submitted by users and audited by the studio before they appear beside the original.
Star / favourite
Save this asset
Your collection is stored in this browser (localStorage) — no account needed.
Build a page around it
Pairs well with a prompt
This asset belongs inside a bigger build — here is the prompt that would generate a page containing it:
Print-inspired web — a magazine spread that scrolls
Editorial spread · Folio rules · Ink logic
Exact tree
Bundled dependencies — disclosed
Full snippet ≈ 0.6 KB raw, ~1 KB gzip — before any framework you already load.
Download
Export as single file
Grab the asset as one file, ready to paste into your project.
Files are generated in your browser from the snippets on this page — nothing leaves the tab.
Scale, not clutter
Sizing system — three densities
Density is a token decision, not a per-page override — pick one density per product surface and hold it. Active: Default.
Runnable copy
Open in a sandbox
Opens this asset in a new tab with its stylesheet injected — a real, editable HTML document in your browser. No account, no upload.
If the tab is blocked, use the single-file export instead — same content, saved locally.
Written version first
Tutorial transcript
This asset does not have a video yet — so the written version stands in: the code line walk below narrates the snippet line by line, and the design rationale on this page explains the default decisions. When a video ships, this exact panel hosts its full transcript.
Annotated snippet
Code line walk
The lines that matter, with the reason they matter. Click one:
Trade-off, visible
Size vs. quality slider
Standard · CSS + hover states
~6 KBadds transitions, focus-visible and reduced-motion rules
The slider is honest: the slim tier has no JS, the pro tier pays for behaviour. Start slim, upgrade only the surfaces that need it.
HTML → React, priced
Stack-switch cost note
Taking the HTML/CSS version into a React component costs real work — and the cost is predictable:
Event wiring
Hover, focus and click become handlers — the CSS stays, the state appears.
Props for the knobs
Every inline value that should vary becomes a prop with a default — the defaults must match the CSS exactly.
The estimate
A clean port of this asset is 20–45 minutes for a React developer — the 188-character stylesheet is the easy half.
Find it the way you say it
Tag synonyms
Search on this site resolves synonyms globally — "dropdown", "select" and "picker" land on the same asset, so you never need to know the catalog's internal vocabulary.
When to pick which
Sibling comparison
| Compare | Docs Site Template | Aurora Hero Section | Bento Studio Grid |
|---|---|---|---|
| Kind | Sections | Sections | Sections |
| Bundle | 1.3 KB gzip | 6.2 KB gzip | 5.5 KB gzip |
| a11y | 97/100 | 97/100 | 96/100 |
| Dependencies | none | none | none |
| Copies / mo | 470 | 4,860 | 3,960 |
| Interactions | scroll, click | scroll, hover | hover |
The honest verdict — Docs Site Template is the lighter default here; reach for Aurora Hero Section when its extra weight buys an interaction this one lacks.
Who made it, when, audited
Provenance tags
Every template ships with its origin and its audits visible — provenance is part of the product.
Honest effort cue
Time-to-build meter
copy-copies to assemble this build
(copy a section, paste your copy, move on)
The build, measured
Case-study numbers
Page weight
~1.3 KB gzip
stylesheet + template markup, before your images
Requests
~4
estimates CSS + fonts + the first screen's assets
Copies / mo
470
how often this template was copied this month
Two token themes, live
Rebrand playbacks
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
One template, two token sheets — the build survives a rebrand without structural edits.
Same build, both modes
Dark / light template twins
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Every asset page ships code, tokens and a design note in one place, so onboarding is one scroll instead of five tabs.
One command, no peer-dependency maze. The package is 4 kB gzipped and carries zero runtime.
Colour, type and spacing are data first; dark mode is a token swap, not a stylesheet rewrite.
Inputs, sections and signature motion pieces — each with an original demo, copy snippet and a11y score.
Under 200ms for feedback, 500ms+ for story beats, and reduced-motion kills the theatre — by design.
Swap the lead, compare pairings
Section swap explorer
Try a different lead section under this template's frame:
Copy-ready components and AI prompts, tested before you paste.
Swap comparisons: which lead says more about the template's audience? The best pairing is the one whose voice matches your copy.
Start your own build
Blank-canvas pack
Build a template from a checklist instead of a blank page. Tick the sections your page needs:
4 sections chosen — a sane first build is 3–5. The checklist rides along in the JSON export.
CLI-ready
Copy the entire build — JSON spec
Export this template's build as a machine-readable spec — paste it into a future Motif CLI to reproduce the assembly.
{
"spec": "motif-build/v1",
"template": "template-docs-site",
"title": "Docs Site Template",
"author": "Motif Studio",
"published": "2026-09-09",
"stack": [
"React",
"HTML/CSS"
],
"theme": {
"mode": "dark",
"hue": 262
},
"sections": [
"hero",
"proof",
"feature",
"footer"
],
"lead": "hero-aurora",
"license": "MIT"
}How this page is assembled
Recipe cards
The parts that make up this build, and the library assets that play each part:
Search
docs live or die on findabilityNavigation
the spine that never gets lostCode examples
readable snippets with copy affordanceStatus
version and health signalsReact vs HTML — see the diff
One-click stack selector
The static build
3 lines of dependency-free CSS — paste and run.
Sample of the stylesheet ready in this template:
.docs { display: grid; grid-template-columns: 92px 1fr; }
.nav button[aria-current="true"] { background: rgba(255,255,255,.1); color: #fff; }
article[data-sec] { scroll-margin-top: 16px; }Diff verdict: same visuals, zero runtime — the cheapest version.
Accept & moderate
Community template submissions
Templates built by the community can join this gallery. The flow is explicit: submit a build URL + the asset list → studio audit (originality, a11y, size) → published beside the originals with credit.
Zip of assets + README
Template bundle downloads
One zip for offline use: the stylesheet, a blank index.html shell with it wired in, the JSON build spec and a README that tells the next person how to rebrand and where the recipe lives. No account, no build step.
Packaged client-side as a classic (uncompressed) zip — open with any OS unzip tool.
Similar to this — scored on shared tags, not hand-picked
Related assets
Read next — two guides and a prompt
picked by tag overlap, not by handGuide
A form is a conversation
8 min · Beginner · updated 2026-09-12
Guide
Before you copy that component: the a11y checklist
8 min · Beginner · updated 2026-09-06
Prompt
Course membership dashboard with streak and certificate cards
Education · 86% fidelity
How these three were chosen: essays scored on shared tags (0 and 0 matches), then prompt scored on block/vibe overlap (1 matches). The rule lives in src/lib/spine.ts, so the same asset always links to the same three pages and a second reader can reproduce the choice.