Sample article
This article is wrapped by the player. Tweak any option in the panel and the player re-mounts with the new config on the fly.
With Sanitize on, the two blocks above are skipped — the
player neither narrates nor highlights the inline CSS or the button
label. Turn it off to hear them read as paragraphs.
Try toggling controls off one at a time, switch the layout mode between shrink and fill, or pick a custom theme to see the tokens flow through the pill, progress bar, and paragraph highlight.
Click any paragraph to jump narration here — assuming
paragraphClick is on.
Why this demo exists
The web player ships with three layered config groups and a 9-token theme system. Reading the schema gives you the surface area, but seeing each option flip in real time is faster — that's the job of this page.
The right column shows the exact JSON you'd paste into
rv.init() or rv.webPlayer.mount() to get
the same result. Copy it whenever you've tuned something you like.
Scroll past me to test the mini-player
The mini-player only surfaces when the main player has scrolled out
of view and something is actively playing or paused. Click
play, scroll down, and you should see a circular control appear in
the configured corner of the viewport — defaults to bottom-left,
and the panel exposes the other three corners too. The
animation dropdown changes how it appears and
disappears: slide (default), fade,
pop, or none. Motion is skipped
automatically when the browser requests reduced motion.
Disabling miniPlayer in the panel removes that
floating control entirely — useful for short articles or pages
where a sticky control would feel intrusive.
Disabling individual chrome elements via the
controls group lets you build a stripped-down player
with only the bits you want. The pill resizes and the right-side
padding self-balances when progress is the rightmost element.
Theming notes
The neutral preset is intentionally subdued — slate text on white, pink accent for active paragraph highlight. The responsivevoice preset uses brand purple. Custom tokens let you override any of the nine theme keys directly; missing keys fall through to the neutral baseline.
The brand glyph and play button face are tied to the
fill token, so a custom fill: '#ff6b35'
gives you an orange play button without touching anything else.
Spacing is controlled outside the schema via the
--rv-player-margin CSS custom property. Set it to
0 to glue the player to surrounding content, or pick
a larger value for more breathing room.