Accordion

A vertically stacked set of interactive headings that each reveal an associated section of content.
vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <AccordionRoot>
    <AccordionItem>
      <AccordionTrigger>
        What is @typlog/ui?
      </AccordionTrigger>
      <AccordionContent>
        <p><code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for consistent theming.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger>
        What is Reka UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility, customization, and developer-friendly design.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger>
        What is Radix UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
      </AccordionContent>
    </AccordionItem>
  </AccordionRoot>
</template>

API Reference ​

AccordionRoot ​

PropDefaultType
indicatorIcon"chevron"
"chevron""none""plus"

An indicator icon on the left or right of the trigger.

indicatorSide"right"
"left""right"

The indicator icon's poistion, left or right.

orientation"vertical"
"horizontal""vertical"

The orientation of the accordion.

size"1"
"1""2""3"

Control the size of the accordion.

AccordionItem ​

PropDefaultType
value
–
string

A string identifier for the accordion item. If omitted, a unique value will be generated automatically.

AccordionTrigger ​

PropDefaultType
indicatorIcon"chevron"
"chevron""none""plus"

An indicator icon on the left or right of the trigger.

indicatorSide"right"
"left""right"

The indicator icon's poistion, left or right.

AccordionIndicator ​

PropDefaultType
variant"chevron"
"chevron""plus"

The indicator icon for the accordion trigger.

AccordionContent ​

Examples ​

Size ​

vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <div class="flex flex-col gap-8">
    <AccordionRoot size="1">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>
    <AccordionRoot size="2">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>
    <AccordionRoot size="3">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>
  </div>
</template>

Indicator Side ​

Root ​

vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <div class="flex flex-col gap-8">
    <AccordionRoot indicator-side="left">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>

    <AccordionRoot indicator-side="right">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>
  </div>
</template>

Trigger ​

vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <AccordionRoot>
    <AccordionItem>
      <AccordionTrigger indicator-side="right">
        What is @typlog/ui?
      </AccordionTrigger>
      <AccordionContent>
        <p><code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for consistent theming.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger indicator-side="left">
        What is Reka UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility, customization, and developer-friendly design.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger>
        What is Radix UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
      </AccordionContent>
    </AccordionItem>
  </AccordionRoot>
</template>

Indicator Icon ​

Root ​

vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <div class="flex flex-col gap-8">
    <AccordionRoot indicator-icon="chevron">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>

    <AccordionRoot indicator-icon="plus">
      <AccordionItem>
        <AccordionTrigger>
          What is @typlog/ui?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            <code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for
            consistent theming.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Reka UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>
            Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility,
            customization, and developer-friendly design.
          </p>
        </AccordionContent>
      </AccordionItem>
      <AccordionItem>
        <AccordionTrigger>
          What is Radix UI?
        </AccordionTrigger>
        <AccordionContent>
          <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
        </AccordionContent>
      </AccordionItem>
    </AccordionRoot>
  </div>
</template>

Trigger ​

vue
<script setup lang="ts">
import {
  AccordionRoot,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@typlog/ui'
</script>

<template>
  <AccordionRoot>
    <AccordionItem>
      <AccordionTrigger indicator-icon="chevron">
        What is @typlog/ui?
      </AccordionTrigger>
      <AccordionContent>
        <p><code>@typlog/ui</code> extends <code>reka-ui</code> with pre-styled components and uses Radix Colors for consistent theming.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger indicator-icon="plus">
        What is Reka UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Reka UI is inspired by the principles and goals of Radix UI, sharing a commitment to accessibility, customization, and developer-friendly design.</p>
      </AccordionContent>
    </AccordionItem>
    <AccordionItem>
      <AccordionTrigger>
        What is Radix UI?
      </AccordionTrigger>
      <AccordionContent>
        <p>Unstyled, accessible, open source React primitives for high-quality web apps and design systems.</p>
      </AccordionContent>
    </AccordionItem>
  </AccordionRoot>
</template>
Last updated Sep 15, 2026