Skip to content

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

Terminal window
velocityx add readability-kit

Free 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 variant="tip" title="Pro tip">Lead each section with the takeaway.</Callout>
PropTypeDefaultDescription
variant'info' | 'tip' | 'warning' | 'success''info'Icon + accent tint.
titlestringper-variant labelHeading.
(slot)——Body content.
<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 quote="You own the code, forever." cite="Velocity" />

Props: quote (required), cite?.

<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.

PropTypeDefaultDescription
variant'info' | 'tip' | 'warning' | 'success''info'—
titlestring——
itemsstring[][]—
quotestringrequired—
citestring——
wordsnumber——
minutesnumber——
wpmnumber225—

velocityx drops these into your project:

  • components/velocity/readability-kit/Callout.astro
  • components/velocity/readability-kit/KeyTakeaways.astro
  • components/velocity/readability-kit/PullQuote.astro
  • components/velocity/readability-kit/ReadingTime.astro

None.

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:

Terminal window
velocityx theme

Then 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.

MIT. Once installed it is yours — no attribution, no revocation.