API
Prose
Rich-text defaults for articles and long-form content.
Installation
pnpm dlx zazz-ui add prosenpx zazz-ui add proseyarn dlx zazz-ui add prosebunx zazz-ui add proseRun zazz-ui init first if the project has no zazz/ folder yet.
Examples
How vexingly quick daft zebras jump.
The Art of Typography
Heading 2How vexingly quick daft zebras jump.
Heading 3How vexingly quick daft zebras jump.
Heading 4How vexingly quick daft zebras jump.
Heading 5How vexingly quick daft zebras jump.
Heading 6How vexingly quick daft zebras jump.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor.
<article
data-ui="prose"
style="
--py: 8;
--mx: auto;
--w: 100%;
--max-w: var(--article-lg);
"
>
<hgroup>
<span data-ui="text-eyebrow">Heading 1</span>
<h1>How vexingly quick daft zebras jump.</h1>
<p data-ui="text-xl" style="--text: var(--color-muted-foreground)">The Art of Typography</p>
</hgroup>
<hgroup>
<span data-ui="text-eyebrow">Heading 2</span>
<h2>How vexingly quick daft zebras jump.</h2>
</hgroup>
<hgroup>
<span data-ui="text-eyebrow">Heading 3</span>
<h3>How vexingly quick daft zebras jump.</h3>
</hgroup>
<hgroup>
<span data-ui="text-eyebrow">Heading 4</span>
<h4>How vexingly quick daft zebras jump.</h4>
</hgroup>
<hgroup>
<span data-ui="text-eyebrow">Heading 5</span>
<h5>How vexingly quick daft zebras jump.</h5>
</hgroup>
<hgroup>
<span data-ui="text-eyebrow">Heading 6</span>
<h6>How vexingly quick daft zebras jump.</h6>
</hgroup>
<hr />
<p data-ui="text-xl">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis
dolor.
</p>
<p data-ui="text-lg">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis
dolor.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis
dolor.
</p>
<p data-ui="text-sm">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis
dolor.
</p>
<p data-ui="text-xs">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis
dolor.
</p>
<hr />
<figure>
<img
sizes="auto"
loading="lazy"
width="800"
height="400"
src="https://images.unsplash.com/photo-1564760055775-d63b17a55c44?auto=format&fit=crop&w=800&h=400&q=60"
alt="Elephants crossing a floodplain at dusk"
/>
<figcaption>Figure 1: An image and its caption, styled by data-ui="prose"</figcaption>
</figure>
</article>Opting out
Prose styles everything inside it. To embed a widget in an article (a form, a menu, a demo) without prose margins and list styles, put data-ui="not-prose" on its wrapper; prose picks up again after it.
<article data-ui="prose">
<p>Prose styles this paragraph.</p>
<div data-ui="not-prose">
<ul><li>But not this list.</li></ul>
</div>
</article>Attributes
This primitive is a composition of other primitives and utilities: it has no presets, slots, or hooks of its own. Copy its example and adapt it.