Description List
Structured term/detail pair list in a responsive grid layout with optional dividers.
<arc-description-list> Overview
>
DescriptionList renders term/detail pairs in a grid layout, ideal for metadata displays, specification tables, and detail panels. Each child `arc-description-item` contains a term label and a detail slot, with the term displayed as an uppercase accent label and the detail rendered below it.
The `columns` prop controls the grid layout — set it to 2, 3, or 4 to arrange items side by side. Vertical dividers appear automatically between columns when `dividers` is enabled. On screens narrower than 640px the layout collapses to a single column for readability.
Dividers (bottom borders between items, and right borders between columns) are enabled by default and can be toggled off with the `dividers` attribute. The container uses `role="list"` and each item uses `role="listitem"` for assistive technology support.Guidelines
When to use
- Use for structured key/value metadata such as profile details, order summaries, or spec sheets
- Set `columns` to 2 or 3 for wider layouts where items are short and scannable
- Pair with cards or panels for contained metadata displays
- Keep term labels concise — one to three words is ideal
When not to use
- Do not use for tabular data with many rows — use `arc-data-table` instead
- Do not nest description lists inside each other
- Do not use long paragraph-length terms — move verbose content to the detail slot
- Do not mix description items with non-`arc-description-item` children
Features
- ARIA list/listitem roles for assistive technology support
- Responsive grid layout with configurable column count
- Automatic single-column fallback below 640px
- Optional horizontal and vertical dividers between items
- Uppercase accent-font term labels for visual hierarchy
- CSS parts: `list`, `item`, `term`, `detail` for deep customization
- Follows `prefers-reduced-motion` for reduced-motion users
Preview
Name
Status
Region
Version
Usage
<arc-description-list columns="2">
<arc-description-item term="Name">Arclight Platform</arc-description-item>
<arc-description-item term="Status">Active</arc-description-item>
<arc-description-item term="Region">US-West-2</arc-description-item>
<arc-description-item term="Version">4.2.1</arc-description-item>
</arc-description-list> import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-react';
export default function Example() {
return (
<DescriptionList columns={2}>
<DescriptionItem term="Name">Arclight Platform</DescriptionItem>
<DescriptionItem term="Status">Active</DescriptionItem>
<DescriptionItem term="Region">US-West-2</DescriptionItem>
<DescriptionItem term="Version">4.2.1</DescriptionItem>
</DescriptionList>
);
} <script setup>
import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-vue';
</script>
<template>
<DescriptionList :columns="2">
<DescriptionItem term="Name">Arclight Platform</DescriptionItem>
<DescriptionItem term="Status">Active</DescriptionItem>
<DescriptionItem term="Region">US-West-2</DescriptionItem>
<DescriptionItem term="Version">4.2.1</DescriptionItem>
</DescriptionList>
</template> <script>
import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-svelte';
</script>
<DescriptionList columns={2}>
<DescriptionItem term="Name">Arclight Platform</DescriptionItem>
<DescriptionItem term="Status">Active</DescriptionItem>
<DescriptionItem term="Region">US-West-2</DescriptionItem>
<DescriptionItem term="Version">4.2.1</DescriptionItem>
</DescriptionList> import { Component } from '@angular/core';
import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-angular';
@Component({
imports: [DescriptionList, DescriptionItem],
template: `
<arc-description-list [columns]="2">
<arc-description-item term="Name">Arclight Platform</arc-description-item>
<arc-description-item term="Status">Active</arc-description-item>
<arc-description-item term="Region">US-West-2</arc-description-item>
<arc-description-item term="Version">4.2.1</arc-description-item>
</arc-description-list>
`,
})
export class MetadataComponent {} import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-solid';
export default function Example() {
return (
<DescriptionList columns={2}>
<DescriptionItem term="Name">Arclight Platform</DescriptionItem>
<DescriptionItem term="Status">Active</DescriptionItem>
<DescriptionItem term="Region">US-West-2</DescriptionItem>
<DescriptionItem term="Version">4.2.1</DescriptionItem>
</DescriptionList>
);
} import { DescriptionList, DescriptionItem } from '@arclux/arc-ui-preact';
export default function Example() {
return (
<DescriptionList columns={2}>
<DescriptionItem term="Name">Arclight Platform</DescriptionItem>
<DescriptionItem term="Status">Active</DescriptionItem>
<DescriptionItem term="Region">US-West-2</DescriptionItem>
<DescriptionItem term="Version">4.2.1</DescriptionItem>
</DescriptionList>
);
} API
-
columnsnumber1 - Number of grid columns for laying out items side by side.
-
dividersbooleantrue - Show horizontal dividers between rows and vertical dividers between columns.
Description Item
<arc-description-item> A single term/detail pair within a description list. The term is rendered as an uppercase label, and the default slot holds the detail content.
-
termstring'' - The key or label for this description entry, displayed as an uppercase heading.
See Also
- Key Value A styled definition list for displaying labeled key-value pairs. Supports horizontal and stacked layouts with optional dividers between rows.
- Data Table A data-driven table component that renders rows from a JavaScript array. Declarative column definitions via `arc-column` children control which fields appear, their headers, widths, and sort behavior. Built-in support for column sorting, row selection with checkboxes, and an empty-state fallback.
- List Structured list container with optional selection, keyboard navigation, and multiple visual variants. Pairs with arc-list-item for rich content rows.