Blockquote
Headless blockquote typography primitive for consumer-owned quotation styling.
|
|
| Package |
@vizejs/ui/blockquote |
| Maturity |
stable |
| Own the source |
vize lib pull blockquote |
| Requires |
— |
| Aliases |
quote, pull quote, quoted text, quotation block |
| Covers |
HTML blockquote element, HTML cite attribute, Reka UI Primitive |
Usage
import { Blockquote } from "@vizejs/ui/blockquote";
Or copy the source into your project with vize lib pull blockquote (see Source Distribution).
API
Blockquote
Source: src/families/typography/blockquote/blockquote.vue
Props
| Prop |
Type |
Default |
Description |
as |
PrimitiveAs |
"blockquote" |
Native element, custom element, or component to render. |
size |
BlockquoteSize |
"md" |
Consumer quotation-size token mirrored to data-size; no CSS is emitted. |
tone |
BlockquoteTone |
"neutral" |
Consumer tone token mirrored to data-tone; no CSS is emitted. |
cite |
string |
undefined |
Native citation URL mirrored to the rendered root cite attribute. |
Slots
| Slot |
Slot props |
Description |
default |
BlockquoteSlotState |
Renders quoted content with current typography hook state. |
Exposed
| Member |
Type |
Description |
size |
BlockquoteSize |
Consumer size token mirrored to data-size. |
tone |
BlockquoteTone |
Consumer tone token mirrored to data-tone. |
cite |
string | undefined |
Native citation URL mirrored to the root cite attribute. |
element |
BlockquoteElement | null |
Rendered host element or component instance. |
Behavior
Normative state x input -> outcome table for blockquote.vue (@vizejs/ui/blockquote).
Every row is proven by the named mounted-DOM or SSR test. A row without a
passing test is a contract violation.
| # |
State |
Input |
Outcome |
Proven by |
| B1 |
default |
render / Tab |
renders native <blockquote data-vize-ui="blockquote">, part="root", default hooks, slot text, and no focus |
renders native blockquote by default without adding semantics or styling |
| B2 |
quote hooks |
render |
renders strict size, tone, and native cite hooks on the root |
mirrors quote hooks and native citation on the root |
| B3 |
consumer semantics |
fallthrough attrs |
preserves consumer-owned role, label, and focus attributes without deriving custom semantics |
keeps custom semantics and focus policy consumer owned through attrs |
| B4 |
any |
slot/expose |
passes size, tone, and cite to the slot and exposes the rendered element with live props |
passes slot state and exposes live blockquote state |
| B5 |
SSR default |
isolated requests |
renders byte-identical native blockquote markup without request-global state |
renders byte-identical native blockquote markup across isolated SSR requests |
| B6 |
SSR custom |
render |
renders custom host markup with consumer-owned semantics and no default aria-hidden or style |
renders consumer-owned server semantics without implicit accessibility attrs |
| B7 |
DOM/SSR/Vapor |
compile |
authored SFC compiles in every renderer lane without warnings or fallback |
scripts/check-renderers.ts |
| B8 |
SSR/hydration |
hydrate |
server blockquote markup hydrates without warnings, node replacement, or accessibility drift |
src/conformance/runtime-conformance.test.ts |
| B9 |
root/subpath |
consumer bundle |
root and subpath consumers retain only Blockquote, emit no CSS, and stay within gzip budget |
scripts/check-tree-shaking.mjs |
Props
| Prop |
Type |
Purpose |
Default |
as |
PrimitiveAs |
Native element, custom element, or component rendered as host. |
"blockquote" |
size |
"sm" | "md" | "lg" |
Consumer quote-size token mirrored to data-size. |
"md" |
tone |
"neutral" | "muted" | "accent" | "success" | "warning" | "danger" |
Consumer color or semantic tone token mirrored to data-tone. |
"neutral" |
cite |
string | undefined |
Native citation URL mirrored to the root cite attribute. |
undefined |
Slots
| Slot |
Props |
Purpose |
Default |
default |
{ size: BlockquoteSize; tone: BlockquoteTone; cite: string | undefined } |
Render quoted content or attribution UI. |
none |
Expose
| Name |
Type |
Purpose |
Default |
element |
BlockquoteElement | null |
Rendered host element or component instance. |
null |
size |
BlockquoteSize |
Current visual-size token. |
"md" |
tone |
BlockquoteTone |
Current tone token. |
"neutral" |
cite |
string | undefined |
Current native citation URL attribute. |
undefined |
Data Attributes
| Attribute |
Values |
Purpose |
Default |
data-vize-ui |
"blockquote" |
Stable family selector. |
always |
data-size |
"sm", "md", "lg" |
Consumer visual-size hook. |
"md" |
data-tone |
"neutral", "muted", "accent", "success", "warning", "danger" |
Consumer tone hook. |
"neutral" |
Native Attributes
When cite is provided, Blockquote mirrors it to the rendered root's native
cite attribute. It does not render attribution text, footer, or figcaption
nodes; consumers own visible citation structure through the default slot.
ARIA Attributes
Blockquote never sets role, tabindex, aria-hidden, aria-live,
aria-label, or aria-labelledby by default. Native <blockquote> remains
exposed as quoted flow content. Consumers that need a labelled note, figure,
region, focusable pull quote, or hidden decorative quote pass ordinary Vue
fallthrough attributes themselves.
CSS Custom Properties
Blockquote defines no CSS custom properties and ships no stylesheet. Consumers
own quote marks, borders, indentation, spacing, typography, color, citation
layout, and responsive treatment through ordinary CSS.
Parts
| Part |
Purpose |
Default |
root |
Single rendered host. |
always |