Accordion
muffled-ui-registry/accordionFreeComponent
Expandable sections for dense content. Hairline separators, no shadows.
Live preview
live · rendered by the registry
Rendered by muffled-ui-registry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.muffled.studio/r/accordion.jsonSource
1import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion"2import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"34import { cn, focusRingClasses } from "@/registry/lib/surface"56function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {7 return (8 <AccordionPrimitive.Root9 data-slot="accordion"10 className={cn("flex w-full flex-col", className)}11 {...props}12 />13 )14}1516function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {17 return (18 <AccordionPrimitive.Item19 data-slot="accordion-item"20 className={cn("not-last:border-b", className)}21 {...props}22 />23 )24}2526function AccordionTrigger({27 className,28 children,29 ...props30}: AccordionPrimitive.Trigger.Props) {31 return (32 <AccordionPrimitive.Header className="flex">33 <AccordionPrimitive.Trigger34 data-slot="accordion-trigger"35 className={cn(36 "group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:opacity-60 aria-disabled:pointer-events-none aria-disabled:opacity-40 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",37 focusRingClasses,38 className,39 )}40 {...props}41 >42 {children}43 <ChevronDownIcon44 data-slot="accordion-trigger-icon"45 className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"46 />47 <ChevronUpIcon48 data-slot="accordion-trigger-icon"49 className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"50 />51 </AccordionPrimitive.Trigger>52 </AccordionPrimitive.Header>53 )54}5556function AccordionContent({57 className,58 children,59 ...props60}: AccordionPrimitive.Panel.Props) {61 return (62 <AccordionPrimitive.Panel63 data-slot="accordion-content"64 className="overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up"65 {...props}66 >67 <div68 className={cn(69 "h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",70 className,71 )}72 >73 {children}74 </div>75// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from muffled-ui-registry
All 55 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alertalert | muffled-ui-registry | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | muffled-ui-registry | Components | Free | 1 dep | |
| Avataravatar | muffled-ui-registry | Components | Free | 1 dep | |
| Badgebadge | muffled-ui-registry | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | muffled-ui-registry | Components | Free | 2 deps | |
| Buttonbutton | muffled-ui-registry | Components | Free | 2 deps | |
| Button Groupbutton-group | muffled-ui-registry | Components | Free | 2 deps | |
| Calendarcalendar | muffled-ui-registry | Components | Free | 2 deps |
