✨ Working with PDFs, images or videos? Discover 145+ free web apps built for everyday tasks

Accordion

A keyboard-accessible accordion with a clean default look, bordered/separated/FAQ variants, and easy composition inside a Card.

Loading preview...

Examples

Practical examples and common states for the same installable component.

Bordered

Enclosed container with item dividers.

examples/accordion-bordered.tsx
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/wensity/accordion";
export function AccordionBordered() {
return (
<Accordion type="single" variant="bordered" defaultValue="item-1">
<AccordionItem value="item-1">
<AccordionTrigger>What is included in the free plan?</AccordionTrigger>
<AccordionContent>
Every primitive in the library, unlimited projects, and community support.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}

Separated

Individually spaced accordion items.

examples/accordion-separated.tsx
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/wensity/accordion";
export function AccordionSeparated() {
return (
<Accordion type="single" variant="separated" defaultValue="item-1">
<AccordionItem value="item-1">
<AccordionTrigger>What is included in the free plan?</AccordionTrigger>
<AccordionContent>
Every primitive in the library, unlimited projects, and community support.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}

Card

Wrap the Accordion in a Card component.

Requires: card

examples/accordion-card.tsx
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/wensity/accordion";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/wensity/card";
export function AccordionCard() {
return (
<Card className="max-w-md">
<CardHeader>
<CardTitle className="text-lg">Subscription & Billing</CardTitle>
<CardDescription className="text-[14px] leading-5">
Common questions about your account, plans, payments and cancellations.
</CardDescription>
</CardHeader>
<CardContent>
<Accordion type="single">
<AccordionItem value="item-1">
<AccordionTrigger>What subscription plans do you offer?</AccordionTrigger>
<AccordionContent>
We offer Starter, Pro, and Team plans billed monthly or annually.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>How does billing work?</AccordionTrigger>
<AccordionContent>
You are billed automatically at the start of each cycle.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionTrigger>How do I cancel my subscription?</AccordionTrigger>
<AccordionContent>
Cancel anytime from your account settings.
</AccordionContent>
</AccordionItem>
</Accordion>
</CardContent>
</Card>
);
}

FAQ

Spacious layout optimized for FAQ sections.

examples/accordion-faq.tsx
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/wensity/accordion";
export function AccordionFaq() {
return (
<Accordion type="single" variant="faq" defaultValue="item-1">
<AccordionItem value="item-1">
<AccordionTrigger>What is included in the free plan?</AccordionTrigger>
<AccordionContent>
Every primitive in the library, unlimited projects, and community support.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}