Components/blocks/Figure Caption

Figure Caption

Open Source
New

Valid figure or table caption with deterministic per-surface numbering and explicit unnumbered mode.

API and behavior

Compound exports, owned slots, interaction law, and family hook routing.

Required props
placementchildrencaptionKey | number | unnumbered
Optional props
captionTitlesource
Controlled props
None
Companion exports
CaptionCounterScopeFigureCaption
Owned data-slot contract
figure-captionfigure-caption-numberfigure-caption-titlefigure-caption-contentfigure-caption-source

Motif route

MOTIF_REGISTRY.figure-caption → apparatusTarget('figure-caption')

Keyboard

Caption links or source nodes retain native behavior.

Accessibility

Figures use figcaption below; tables use a real caption element above with deterministic counters.

Family hooks

Journal consumes caption, reference-ink, plate, and tabular-number hooks.

Documented states
numbered figurevalid table captionunnumbered long source

Installation

npx shadcn@latest add @substrateui/figure-caption --yes

Upgrading a project that installed base before F1? Refresh the shared hooks first:

npx shadcn@latest add @substrateui/base --yes --overwrite

npm Dependencies

npm install class-variance-authority

Tags

journalcaptionfiguretable