- 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. dtandddmust be direct children of thedl. 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 |