DescriptionList

Groups of names and values, for listing attributes on detail pages.

Title
Spice and Wolf
Author
Isuna Hasekura
Released
14 March 2026
<script setup lang="ts">
  import { DescriptionDetails, DescriptionList, DescriptionTerm } from '@hina-ui/vue'
</script>

<template>
  <DescriptionList class="max-w-sm">
    <DescriptionTerm>Title</DescriptionTerm>
    <DescriptionDetails>Spice and Wolf</DescriptionDetails>
    <DescriptionTerm>Author</DescriptionTerm>
    <DescriptionDetails>Isuna Hasekura</DescriptionDetails>
    <DescriptionTerm>Released</DescriptionTerm>
    <DescriptionDetails>14 March 2026</DescriptionDetails>
  </DescriptionList>
</template>
vue

Usage

import { DescriptionList, DescriptionTerm, DescriptionDetails } from '@hina-ui/vue'
ts

DescriptionList renders a native dl. Names go in DescriptionTerm (dt) and values in DescriptionDetails (dd). They stack vertically by default, with names in a medium weight.

Status
Ongoing
Rating
All ages
<script setup lang="ts">
  import { DescriptionDetails, DescriptionList, DescriptionTerm } from '@hina-ui/vue'
</script>

<template>
  <DescriptionList class="max-w-sm">
    <DescriptionTerm>Status</DescriptionTerm>
    <DescriptionDetails>Ongoing</DescriptionDetails>
    <DescriptionTerm>Rating</DescriptionTerm>
    <DescriptionDetails>All ages</DescriptionDetails>
  </DescriptionList>
</template>
vue

Examples

Two columns

orientation="horizontal" puts names and values into two columns side by side: names in one, values in the other. Detail pages in admin interfaces usually look like this.

Title
Spice and Wolf
Publisher
Dengeki Bunko
Volumes
7 in total
<script setup lang="ts">
  import { DescriptionDetails, DescriptionList, DescriptionTerm } from '@hina-ui/vue'
</script>

<template>
  <DescriptionList orientation="horizontal" class="max-w-md">
    <DescriptionTerm>Title</DescriptionTerm>
    <DescriptionDetails>Spice and Wolf</DescriptionDetails>
    <DescriptionTerm>Publisher</DescriptionTerm>
    <DescriptionDetails>Dengeki Bunko</DescriptionDetails>
    <DescriptionTerm>Volumes</DescriptionTerm>
    <DescriptionDetails>7 in total</DescriptionDetails>
  </DescriptionList>
</template>
vue

The name column is as wide as the longest name. --hn-dl-term-width sets a fixed width instead, for lining up several lists.

<DescriptionList orientation="horizontal" class="[--hn-dl-term-width:8rem]">…</DescriptionList>
vue

One name, several values

A single dt can be followed by several dd elements, and values can contain other components.

Author
Isuna Hasekura
Jyuu Ayakura
Tags
Sci-fiSchoolHealing
<script setup lang="ts">
  import { DescriptionDetails, DescriptionList, DescriptionTerm, Inline, Tag } from '@hina-ui/vue'
</script>

<template>
  <DescriptionList class="max-w-sm">
    <DescriptionTerm>Author</DescriptionTerm>
    <DescriptionDetails>Isuna Hasekura</DescriptionDetails>
    <DescriptionDetails>Jyuu Ayakura</DescriptionDetails>
    <DescriptionTerm>Tags</DescriptionTerm>
    <DescriptionDetails>
      <Inline align="center">
        <Tag>Sci-fi</Tag>
        <Tag>School</Tag>
        <Tag>Healing</Tag>
      </Inline>
    </DescriptionDetails>
  </DescriptionList>
</template>
vue

Description lists in body content

Prose applies the same styling to native dl elements inside it, so rendered Markdown and rich text need no tag replacement.

Description lists in body content need no separate component.

Formats
EPUB, PDF
Size
18.4 MB
<script setup lang="ts">
  import { Prose } from '@hina-ui/vue'
</script>

<template>
  <Prose class="max-w-sm">
    <p>Description lists in body content need no separate component.</p>
    <dl>
      <dt>Formats</dt>
      <dd>EPUB, PDF</dd>
      <dt>Size</dt>
      <dd>18.4 MB</dd>
    </dl>
  </Prose>
</template>
vue

Accessibility

  • The component renders a native dl, so screen readers announce each name together with its value.
  • dt and dd must be direct children of the dl. Wrapping them in another container breaks that relationship.

API

DescriptionList

Prop
Type
Default
Description
orientation
'vertical' | 'horizontal'
'vertical'
Layout direction; horizontal gives names and values a column each
class
string
—
Classes appended to the root
Slot
Description
default
DescriptionTerm and DescriptionDetails items

DescriptionTerm

Prop
Type
Default
Description
class
string
—
Classes appended to the root
Slot
Description
default
The name text

DescriptionDetails

Prop
Type
Default
Description
class
string
—
Classes appended to the root
Slot
Description
default
The value content