Accordion
scrollxui/accordionFreeComponent
A collapsible component for showing and hiding content sections.
Live preview
live · rendered by the registry
Rendered by scrollxui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://scrollxui.dev/registry/accordion.jsonSource
1'use client';23import * as React from 'react';4import * as AccordionPrimitive from '@radix-ui/react-accordion';5import { Plus } from 'lucide-react';6import { cn } from '@/lib/utils';78const Accordion = AccordionPrimitive.Root;910const AccordionItem = React.forwardRef<11 React.ComponentRef<typeof AccordionPrimitive.Item>,12 React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>13>(({ className, ...props }, ref) => (14 <AccordionPrimitive.Item15 ref={ref}16 className={cn('border-b', className)}17 {...props}18 />19));20AccordionItem.displayName = 'AccordionItem';2122const AccordionTrigger = React.forwardRef<23 React.ComponentRef<typeof AccordionPrimitive.Trigger>,24 React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>25>(({ className, children, ...props }, ref) => (26 <AccordionPrimitive.Header className='flex'>27 <AccordionPrimitive.Trigger28 ref={ref}29 className={cn(30 'flex flex-1 items-center justify-between py-4 text-sm font-medium text-foreground text-left hover:underline transition-transform duration-300 ease-in-out',31 '[&[data-state=open]>svg]:rotate-45',32 className,33 )}34 {...props}35 >36 {children}37 <Plus className='h-4 w-4 shrink-0 text-primary transition-transform duration-300 ease-in-out' />38 </AccordionPrimitive.Trigger>39 </AccordionPrimitive.Header>40));41AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;4243const AccordionContent = React.forwardRef<44 React.ComponentRef<typeof AccordionPrimitive.Content>,45 React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>46>(({ className, children, ...props }, ref) => (47 <AccordionPrimitive.Content48 ref={ref}49 className={cn(50 'overflow-hidden text-sm text-foreground transition-all',51 'data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up',52 className,53 )}54 {...props}55 >56 <div57 className={cn(58 'w-full p-5 rounded-xl bg-muted/60 backdrop-blur-xs border border-border flex items-center animate-shake-smooth',59 className,60 )}61 >62 {children}63 </div>64 </AccordionPrimitive.Content>65));66AccordionContent.displayName = AccordionPrimitive.Content.displayName;6768export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
What it pulls in
npm packages
Other registry items
Files it writes
More from scrollxui
All 180 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alert Dialogalert-dialog | scrollxui | Components | Free | 7 deps | |
| Animated Buttonanimated-button | scrollxui | Components | Free | 4 deps | |
| Animated Tabsanimated-tabs | scrollxui | Components | Free | 1 dep | |
| Animated Testimonialsanimated-testimonials | scrollxui | Components | Free | 2 deps | |
| Animated TextGenerateanimated-textgenerate | scrollxui | Components | Free | 3 deps | |
| Announcementannouncement | scrollxui | Components | Free | 5 deps | |
| Aspect Ratioaspect-ratio | scrollxui | Components | Free | 1 dep | |
| Aurora Dotsaurora-dots | scrollxui | Components | Free | 2 deps |
