Documentation Reader
A heavier reading-shell composition targeting the "Stripe / Linear docs" archetype: comfortable density, sidebar TOC, time-to-read meta, and the new every-item density-overview minimap. Designed for technical docs with deep h2 / h3 / h4 outlines where readers stay on a single page for extended periods.
Differs from the long-form-article recipe in two ways, both about how much of the page a reader can see at once: the minimap is on, giving a paragraph-level density overview beside the heading-level spine, and the time-to-read meta is mounted by hand so it can run at a documentation pace rather than an article one.
Full Composition
Differences from long-form-article
| Aspect | long-form-article | documentation-reader |
|---|---|---|
| Minimap | off | on — a stripe per item beside the heading-level spine, which is what a 60-paragraph page needs and a heading TOC cannot give |
| Time-to-read meta | the shell's own, left on | the shell's turned off and <x-wirekit::reading-meta> mounted by hand — the same result reached the other way round, which is what lets this page set a documentation-paced wpm |
Three rows that used to be here were not differences, and they are named so nobody re-derives
them. Density: both run comfortable, one by default and one explicitly, so the row said
"no difference" in four columns. Bookmark dwell: reading-shell has no dwell prop at all — 30s
is reading-bookmark's own default on both pages, and :minDwellSeconds="120" appears only in
each page's power-user preview, long-form-article documenting it in prose as the tunable it
is. Power-user composition: long-form-article carries ## Power-user composition (skip the shell) too, under the same heading.
Power-user composition (skip the shell)
When the shell's toggles + density preset don't cover the customization need (numbered spine + per-section fill + back-to-top + custom wpm + custom bookmark threshold all at once), compose the primitives directly. The shell covers the common defaults case, and power-users opt out to the primitives entirely — the shell deliberately exposes a small set of props rather than one per primitive, so the escape hatch is composing them yourself.
Section-Changed Analytics
Listen for wirekit:reading-spine:section-changed to update browser-tab title or fire analytics on section view. The handler wraps the reading-shell so the dispatched event bubbles up; the shell otherwise stays a plain composition wrapper.
Print Stylesheet
All five reading-* components ship @media print { display: none !important } rules — the bar, spine, and bookmark vanish on print. Readers who do "Print to PDF" get the article body cleanly, no chrome overprinted on every page.
Related
- Long-form Article — lighter sibling recipe for blog posts
- Reading — the consolidated family page covering every primitive + composition + family contracts