shadimage
flx
blockaccordion-06source: ok · hit

Plus / minus icon

Plus icon on each trigger that turns into a minus when open, instead of a chevron.

npx shadcn add "https://ui.flexnative.com/r/accordion-06.json"
free

Interaction

accordion

Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.

Dependencies

Bundle weight · light
ui-primitives@base-ui/react

Files1 · source cached 10/15/2026, 4:08:04 AM

registry/patterns/accordion/accordion-06.tsx
import { PlusIcon } from 'lucide-react'
import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'

import {
  Accordion,
  AccordionContent,
  AccordionItem,
} from '@/components/ui/accordion'

const faqs = [
  {
    q: 'How do I reset my password?',
    a: 'Open the sign-in page, choose "Forgot password", and follow the emailed link to set a new one.',
  },
  {
    q: 'Can I invite teammates?',
    a: 'Yes. Invite unlimited teammates from the Members tab — they each get their own seat.',
  },
  {
    q: 'Where is my data stored?',
    a: 'Data is encrypted at rest and stored in the region you select when you create your workspace.',
  },
]

export function Accordion06() {
  return (
    <Accordion className="w-full max-w-md">
      {faqs.map((faq) => (
        <AccordionItem key={faq.q} value={faq.q}>
          <AccordionPrimitive.Header className="flex">
            <AccordionPrimitive.Trigger className="flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium transition-all outline-none focus-visible:underline disabled:pointer-events-none disabled:opacity-50 aria-expanded:[&>svg]:rotate-180 [&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 aria-expanded:[&>svg>path:last-child]:rotate-90 aria-expanded:[&>svg>path:last-child]:opacity-0">
              {faq.q}
              <PlusIcon
                aria-hidden
                className="pointer-events-none size-4 shrink-0 opacity-60 transition-transform duration-200"
              />
            </AccordionPrimitive.Trigger>
          </AccordionPrimitive.Header>
          <AccordionContent className="text-muted-foreground">
            {faq.a}
          </AccordionContent>
        </AccordionItem>
      ))}
    </Accordion>
  )
}

More from flx

Browse all components in this library →