accordion
neobrutalui/accordionFreeComponent
Collapse and expand sections to show or hide content.
Live preview
live · rendered by the registry
Rendered by neobrutalui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.neobrutalui.live/r/accordion.jsonSource
1"use client"23import * as React from "react"4import { Accordion as BaseAccordion } from "@base-ui/react/accordion"5import { ChevronDown } from "lucide-react"67import { cn } from "@/lib/utils"89const Accordion = BaseAccordion.Root1011type AccordionItemProps = React.ComponentPropsWithoutRef<typeof BaseAccordion.Item>1213const AccordionItem = React.forwardRef<14 React.ComponentRef<typeof BaseAccordion.Item>,15 AccordionItemProps16>(({ className, ...props }, ref) => (17 <BaseAccordion.Item18 ref={ref}19 className={cn(20 "mb-4 border-2 border-black bg-white shadow-brutal hover:bg-main/20 data-open:bg-main/20 data-open:shadow-brutal transition-colors duration-200 rounded-base",21 className22 )}23 {...props}24 />25))26AccordionItem.displayName = "AccordionItem"2728type AccordionTriggerProps = React.ComponentPropsWithoutRef<typeof BaseAccordion.Trigger>2930const AccordionTrigger = React.forwardRef<31 React.ComponentRef<typeof BaseAccordion.Trigger>,32 AccordionTriggerProps33>(({ className, children, ...props }, ref) => (34 <BaseAccordion.Header className="flex">35 <BaseAccordion.Trigger36 ref={ref}37 className={cn(38 "flex flex-1 items-center text-left justify-between p-3 font-bold text-black focus-brutal-inset transition-colors duration-200 [&[data-open]>svg]:rotate-180",39 className40 )}41 {...props}42 >43 {children}44 <ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200 text-black" />45 </BaseAccordion.Trigger>46 </BaseAccordion.Header>47))48AccordionTrigger.displayName = "AccordionTrigger"4950type AccordionContentProps = React.ComponentPropsWithoutRef<typeof BaseAccordion.Panel>5152const AccordionContent = React.forwardRef<53 React.ComponentRef<typeof BaseAccordion.Panel>,54 AccordionContentProps55>(({ className, children, ...props }, ref) => (56 <BaseAccordion.Panel57 ref={ref}58 className="overflow-hidden text-sm h-(--accordion-panel-height) transition-[height] duration-200 motion-reduce:transition-none data-ending-style:h-0 data-starting-style:h-0 text-black"59 {...props}60 >61 <div className={cn("p-3 pt-0", className)}>{children}</div>62 </BaseAccordion.Panel>63))64AccordionContent.displayName = "AccordionContent"6566export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
What it pulls in
npm packages
Other registry items
More from neobrutalui
All 24 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| alertalert | neobrutalui | Components | Free | 1 dep | |
| avataravatar | neobrutalui | Components | Free | no deps | |
| badgebadge | neobrutalui | Components | Free | 1 dep | |
| buttonbutton | neobrutalui | Components | Free | 1 dep | |
| cardcard | neobrutalui | Components | Free | no deps | |
| checkboxcheckbox | neobrutalui | Components | Free | 2 deps | |
| date-pickerdate-picker | neobrutalui | Components | Free | 2 deps | |
| dialogdialog | neobrutalui | Components | Free | 2 deps |
