designali
exampleaccordion-04source: ok · hit
Accordion 04
Personal FAQ accordion introducing Ali Imam, his design approach, inspirations, and ways to connect for collaborations.
npx shadcn add "https://designali.com/r/accordion-04.json"free
Where it goes
faq
Interaction
accordion
Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.
Files1 · source cached 10/9/2026, 4:15:25 AM
registry/designali/examples/accordion/accordion-04.tsx
/* eslint-disable react/jsx-key */
import { Plus, X } from "lucide-react"
import { cn } from "@workspace/ui/lib/utils"
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@workspace/ui/components/accordion"
const items = [
{
id: "01",
title: "Who am I?",
content:
"I’m Ali Imam — a designer and creative developer focused on building digital experiences that are minimal, meaningful, and timeless.",
},
{
id: "02",
title: "What do I design?",
content:
"I create clean, functional interfaces, brand systems, and digital products. My work blends simplicity with clarity and usability.",
},
{
id: "03",
title: "My design approach",
content:
"For me, design isn’t just visuals — it’s how something feels and works. I focus on clarity, detail, and storytelling in every project.",
},
{
id: "04",
title: "Beyond design",
content:
"I bridge design and development, turning ideas into interactive experiences with modern tools and technology.",
},
{
id: "05",
title: "What inspires me",
content:
"Minimalism, architecture, and everyday details. I believe great design is found in the small things we often overlook.",
},
]
export default function Accordion02() {
return (
<div className="mx-auto flex h-full w-full max-w-xl items-center justify-center">
<Accordion defaultValue={["04"]} className="w-full space-y-2">
{items.map((item) => (
<AccordionItem
value={item.id}
key={item.id}
className="border last:border-b"
>
<AccordionTrigger className="m-1 cursor-pointer bg-primary/10 px-6 text-left hover:no-underline">
<div className="flex w-full items-center justify-between gap-4">
<h3 className="text-2xl font-semibold">
{item.title}
</h3>
<div className="relative h-6 w-6 shrink-0">
<Plus
strokeWidth={2}
className="
absolute inset-0
h-6 w-6
rotate-0 opacity-100
transition-all duration-300
group-aria-expanded/accordion-trigger:rotate-45
group-aria-expanded/accordion-trigger:opacity-0
"
/>
<X
strokeWidth={2}
className="
absolute inset-0
h-6 w-6
rotate-45 opacity-0
transition-all duration-300
group-aria-expanded/accordion-trigger:rotate-0
group-aria-expanded/accordion-trigger:opacity-100
"
/>
</div>
</div>
</AccordionTrigger>
<AccordionContent className="p-6">{item.content}</AccordionContent>
</AccordionItem>
))}
</Accordion>
</div>
)
}