Accordion
A vertically stacked set of interactive headings that each reveal a section of content. Built on Base UI's accordion primitive.
Last updated August 8, 2026
CreditsModifiedPublished
Copied from shadcn/ui.
- Trigger uses text-start and a single chevron that rotates 180° via aria-expanded, instead of two swapped icons — reads correctly in both LTR and RTL without an icon-mirroring rule
Overview
Yes. It adheres to the WAI-ARIA design pattern.
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion"
const faq = [
{
value: "item-1",
question: "Is it accessible?",
answer: "Yes. It adheres to the WAI-ARIA design pattern.",
},
{
value: "item-2",
question: "Is it styled?",
answer:
"Yes. It comes with default styles that match the rest of the library.",
},
{
value: "item-3",
question: "Is it animated?",
answer:
"Yes. It's animated by default, but you can disable it if you prefer.",
},
]
export function AccordionDemoExample() {
return (
<Accordion defaultValue={["item-1"]} className="w-full max-w-sm">
{faq.map((item) => (
<AccordionItem key={item.value} value={item.value}>
<AccordionTrigger>{item.question}</AccordionTrigger>
<AccordionContent>{item.answer}</AccordionContent>
</AccordionItem>
))}
</Accordion>
)
}Installation
$ npx shadcn@latest add https://ui.persian-labs.ir/r/accordion.jsonUsage
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion"
export function Example() {
return (
<Accordion defaultValue={["item-1"]}>
<AccordionItem value="item-1">
<AccordionTrigger>Is it accessible?</AccordionTrigger>
<AccordionContent>
Yes. It adheres to the WAI-ARIA design pattern.
</AccordionContent>
</AccordionItem>
</Accordion>
)
}RTL
بله، برای استفاده شخصی و تجاری کاملاً رایگان است.
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion"
const faq = [
{
value: "item-1",
question: "آیا این کتابخانه رایگان است؟",
answer: "بله، برای استفاده شخصی و تجاری کاملاً رایگان است.",
},
{
value: "item-2",
question: "آیا از راستبهچپ پشتیبانی میکند؟",
answer: "بله، تمام کامپوننتها بهصورت پیشفرض راستبهچپ هستند.",
},
{
value: "item-3",
question: "آیا میتوانم چند مورد را همزمان باز کنم؟",
answer:
"بله، با استفاده از ویژگی multiple میتوانید چند مورد را باز نگه دارید.",
},
]
export function AccordionRtlExample() {
return (
<Accordion defaultValue={["item-1"]} className="w-full max-w-sm">
{faq.map((item) => (
<AccordionItem key={item.value} value={item.value}>
<AccordionTrigger>{item.question}</AccordionTrigger>
<AccordionContent>{item.answer}</AccordionContent>
</AccordionItem>
))}
</Accordion>
)
}