Skip to content

River

A .river is a text + visual pair side-by-side. Alternate data-align="start" and "end" between adjacent rivers for visual rhythm. Stacks below md.

Install

import "elements-kit/ui/styles/theme.css";
import "elements-kit/ui/styles/scaling.css";
import "elements-kit/ui/styles/radius.css";
import "elements-kit/ui/styles/space.css";
import "elements-kit/ui/styles/typography.css";
import "elements-kit/ui/styles/palette/gray.css";
import "elements-kit/ui/styles/neutral/gray.css";
import "elements-kit/ui/marketing/marketing.css";

API

<div class="river" data-align="start">
<div class="river-content">
<h3 class="section-heading section-heading-3">Heading</h3>
<p class="section-paragraph">Body.</p>
<a href="/learn">Learn more</a>
</div>
<div class="river-visual" data-border>
<img src="/feature.webp" alt="" />
</div>
</div>
ElementAttributeValues
.riverdata-alignstart (default, text left), end (text right), center (stacked, centered), breakout (custom grid for headline + trailing element)
.riverdata-large-visualmodifier — visual takes 7/12, content 5/12 (only with start / end)
.river-visualdata-borderpresence — adds a 1px border + rounded corners

Children

  • .river-content — the text column. Use Section heading + Section paragraph + a link/button.
  • .river-visual — the visual column. Add data-border for a framed treatment (screenshots, UI shots).

Tips

Breakout

For oversized callout paragraphs that break the normal rhythm, use data-align="breakout". A visually hidden heading is required as the first child for document outline correctness.

<div class="river" data-align="breakout">
<h3 class="section-heading" style="position:absolute; …visually-hidden">
Section title for outline
</h3>
<div class="river-content">
<p class="section-paragraph"><em>Large quote-style paragraph.</em></p>
<a class="x-button" data-cta="" href="#">Learn more</a>
</div>
<div class="river-visual">…</div>
</div>