A <dl> compound — one <dt> (fixed SemiBold) + one <dd> per pair. layout picks stacked (dt above dd, dd indented) or inline (dt : dd side by side in a two-column grid), matching the two layouts in the Figma component set. Consumers compose multiple Term/Details pairs to form a full description list. row-gap/column-gap/details-indent are density-scaled Context tokens; inline's pair-to-pair gap reuses List's item-gap directly, matching the Figma binding.
Registry-only
No headless primitive — this component ships only as a copied styled file, so there is no Headless mode. primitiv add description-list installs it whichever mode you are reading.
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.
Anatomy
Three parts: DescriptionList renders the <dl> and owns layout/size; compose one DescriptionList.Term (<dt>) and one DescriptionList.Details (<dd>) per pair.
The component renders a real <dl>/<dt>/<dd>, so assistive tech announces the term/description association — the styling never replaces that structure.
Compose one Term and one Details per pair in source order; the association is positional in a <dl>, so keeping them adjacent is what makes the pairing correct for a screen reader.
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.
Stacked and inline
layout picks how each pair reads: stacked puts the <dd> under its <dt> (indented) for longer values, inline sets them dt : dd side by side for a compact key/value table — the metadata block on a settings page or a package summary.