A <blockquote> with a left-stroke accent bar and an optional attribution line. tone picks the bar colour (default | accent); size scales the quote and citation type together.
Registry-only
No headless primitive — this component ships only as a copied styled file, so there is no Headless mode. primitiv add blockquote installs it whichever mode you are reading.
Playground
Preview
A design system is a product serving products, not a gallery of components.
import{Blockquote}from"@/components/ui/blockquote";<Blockquotesize="md"tone="default"> A design system is a product serving products, not a gallery of components.</Blockquote>
Density is set by a data-density ancestor — the Context system, not a Blockquote prop.
No headless primitive — this one ships only as a copied styled surface, so primitiv add is the only way in, whichever mode you are reading.
Props
Generated from the copied file’s props type and contract.json. Never hand-maintained.
Blockquote
Extends HTMLQuoteElement — every native attribute of that element is accepted and forwarded.
Prop
Type
Default
Description
cite
ReactNode
—
The attribution line, rendered in a <cite> beneath the quote. Omitted
when not provided.
Narrows the native <blockquote cite> attribute (a source URL) to a
display string — the RFC 0023 sketch's own shape for this component,
mirroring the Omit-narrowing already used elsewhere in the registry
(e.g. NavigationMenu.Item.value over <li value>).
tone
"default" | "accent"
default
Accent-bar colour.
size
"xs" | "sm" | "md" | "lg" | "xl"
md
Quote + citation size; data-density scales each size further.
Styling contract
10 CSS custom properties on .primitiv-blockquote — mode-agnostic. These names are the stable surface; the values are not.
Blockquote renders a real <blockquote>, and cite a real <cite>, so the quotation and its attribution are announced with the right semantics rather than as styled paragraphs.
The accent bar is decoration on top of that structure, not the thing that marks the quote — the <blockquote> element carries the meaning, so the distinction survives with styles off.
It is content, not a control: no focus or keyboard surface of its own.
Examples
Every example below reacts to the density control. Currently showing Styled mode.
Tones
tone sets the left accent bar: default for a neutral pulled-out passage, accent when the quote is a highlight you want the eye to land on. Both are a bar plus the quote — no icon, no fill.
A design system is a product serving products, not a gallery of components.
A design system is a product serving products, not a gallery of components.
import{Blockquote}from"@/components/ui/blockquote";<Blockquote>A design system is a product serving products, not a gallery of components.</Blockquote><Blockquotetone="accent">A design system is a product serving products, not a gallery of components.</Blockquote>
With attribution
cite adds an attribution line in a <cite> beneath the quote. It is the narrowed native blockquote cite — pass the author or source as text; omit it for an unattributed passage.
A design system is a product serving products, not a gallery of components.
Jina Anne
import{Blockquote}from"@/components/ui/blockquote";<Blockquotetone="accent"cite="Jina Anne"> A design system is a product serving products, not a gallery of components.</Blockquote>
Sizing
size scales the quote against the surrounding type — sm for a quote inside a card, lg for a section-leading pull. It is not PullQuote: reach for that when you want a large, centred, marks-decorated statement with no attribution.
A design system is a product serving products, not a gallery of components.
A design system is a product serving products, not a gallery of components.
import{Blockquote}from"@/components/ui/blockquote";<Blockquotesize="sm">A design system is a product serving products, not a gallery of components.</Blockquote><Blockquotesize="lg">A design system is a product serving products, not a gallery of components.</Blockquote>