accordion
neobrutalism/accordionFreeComponent
neobrutalism publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by neobrutalism on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://neobrutalism.com/r/accordion.jsonSource
1"use client"23import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion"4import { ChevronDownIcon } from "lucide-react"56import { cn } from "@/lib/utils"78// Smooth, premium easing for the open/close — fast out of the gate, gentle9// settle. Shared by the panel height and the chevron so they move in lockstep.10const EASE = "ease-[cubic-bezier(0.32,0.72,0,1)]"1112function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {13 return (14 <AccordionPrimitive.Root15 data-slot="accordion"16 className={cn("flex w-full flex-col gap-3", className)}17 {...props}18 />19 )20}2122function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {23 return (24 <AccordionPrimitive.Item25 data-slot="accordion-item"26 className={cn(27 "overflow-hidden rounded border-2 bg-background text-foreground shadow-md transition-shadow duration-200 hover:shadow-sm data-[open]:shadow-sm",28 className29 )}30 {...props}31 />32 )33}3435function AccordionTrigger({36 className,37 children,38 ...props39}: AccordionPrimitive.Trigger.Props) {40 return (41 <AccordionPrimitive.Header data-slot="accordion-header" className="flex">42 <AccordionPrimitive.Trigger43 data-slot="accordion-trigger"44 className={cn(45 "flex flex-1 cursor-pointer items-center justify-between gap-4 px-4 py-3 text-left font-head transition-colors hover:bg-muted/50 data-[open]:bg-muted/40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary [&[data-open]>svg]:rotate-180",46 className47 )}48 {...props}49 >50 {children}51 <ChevronDownIcon52 aria-hidden53 data-slot="accordion-trigger-icon"54 className={cn(55 "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-300",56 EASE57 )}58 />59 </AccordionPrimitive.Trigger>60 </AccordionPrimitive.Header>61 )62}6364function AccordionContent({65 className,66 children,67 ...props68}: AccordionPrimitive.Panel.Props) {69 return (70 <AccordionPrimitive.Panel71 data-slot="accordion-content"72 // Base UI publishes the measured panel height as `--accordion-panel-height`73 // and flags the entering/leaving frames with `data-starting-style` /74 // `data-ending-style`. Transitioning `height` between that var and 0 gives a75 // real slide open/close.76 className={cn(77// … truncated
What it pulls in
npm packages
Files it writes
More from neobrutalism
All 54 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| alertalert | neobrutalism | Components | Free | 2 deps | |
| alert-dialogalert-dialog | neobrutalism | Components | Free | 1 dep | |
| aspect-ratioaspect-ratio | neobrutalism | Components | Free | 1 dep | |
| avataravatar | neobrutalism | Components | Free | 1 dep | |
| badgebadge | neobrutalism | Components | Free | 2 deps | |
| breadcrumbbreadcrumb | neobrutalism | Components | Free | 2 deps | |
| buttonbutton | neobrutalism | Components | Free | 2 deps | |
| button-groupbutton-group | neobrutalism | Components | Free | 2 deps |
