Readability Kit
Four long-form scannability primitives — Callout (4 variants), a Key Takeaways TL;DR box, a large PullQuote and a reading-time pill. Branded via CSS custom properties, dark-mode aware, zero motion, zero dependencies.
Long-form · Astro · Free · MIT · v1.0.1 · updated 2026-10-15 · Live demo
Install
Section titled “Install”velocityx add readability-kitFree tier — no licence key needed. MIT: copy it, own it, edit it.
---import Callout from '../components/velocity/readability-kit/Callout.astro';---<Callout />Presentational scannability primitives for long-form pages (blog posts, service pages). Astro-only (zero JS), dark-mode, reduced-motion-safe by construction, styled from the brand ramp.
src/components/growth/readability/{Callout,KeyTakeaways,PullQuote,ReadingTime}.astro · live demo: /components/readability-kit
Callout
Section titled “Callout”<Callout variant="tip" title="Pro tip">Lead each section with the takeaway.</Callout>| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'info' | 'tip' | 'warning' | 'success' | 'info' | Icon + accent tint. |
title | string | per-variant label | Heading. |
| (slot) | — | — | Body content. |
KeyTakeaways
Section titled “KeyTakeaways”<KeyTakeaways items={['Most visitors scan first.', 'A TL;DR box lifts comprehension.']} />Boxed “Key takeaways” list with check bullets. Props: items?: string[] or slotted <li>s, title? (default "Key takeaways").
PullQuote
Section titled “PullQuote”<PullQuote quote="You own the code, forever." cite="Velocity" />Props: quote (required), cite?.
ReadingTime
Section titled “ReadingTime”<ReadingTime words={1200} />“~N min read” pill. Props: words? (estimated at wpm, default 225), minutes? (direct override), wpm?. Minimum 1 min; icon decorative, text carries meaning.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'info' | 'tip' | 'warning' | 'success' | 'info' | — |
title | string | — | — |
items | string[] | [] | — |
quote | string | required | — |
cite | string | — | — |
words | number | — | — |
minutes | number | — | — |
wpm | number | 225 | — |
Files written
Section titled “Files written”velocityx drops these into your project:
components/velocity/readability-kit/Callout.astrocomponents/velocity/readability-kit/KeyTakeaways.astrocomponents/velocity/readability-kit/PullQuote.astrocomponents/velocity/readability-kit/ReadingTime.astro
Peer dependencies
Section titled “Peer dependencies”None.
Theming
Section titled “Theming”Colours come from the primary-* / accent-* Tailwind scales, so this drops into a project
that is not Velocity without dragging our brand in. Install the contract once:
velocityx themeThen set your whole brand in one place — raw RGB channels, not hex (a hex here silently breaks every opacity variant):
:root { --vx-brand: custom; --vx-primary-600: 220 38 38;}There is no component-level font-family anywhere in the library — your font cascade wins.
Licence
Section titled “Licence”MIT. Once installed it is yours — no attribution, no revocation.