Accordion
solid-ui/accordionFreeComponent
An accordion component
Live preview
live · rendered by the registry
Rendered by solid-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.solid-ui.com/r/accordion.jsonSource
1import type { JSX, ValidComponent } from "solid-js"2import { splitProps } from "solid-js"34import * as AccordionPrimitive from "@kobalte/core/accordion"5import type { PolymorphicProps } from "@kobalte/core/polymorphic"67import { cn } from "~/lib/utils"89const Accordion = AccordionPrimitive.Root1011type AccordionItemProps<T extends ValidComponent = "div"> =12 AccordionPrimitive.AccordionItemProps<T> & {13 class?: string | undefined14 }1516const AccordionItem = <T extends ValidComponent = "div">(17 props: PolymorphicProps<T, AccordionItemProps<T>>18) => {19 const [local, others] = splitProps(props as AccordionItemProps, ["class"])20 return <AccordionPrimitive.Item class={cn("border-b", local.class)} {...others} />21}2223type AccordionTriggerProps<T extends ValidComponent = "button"> =24 AccordionPrimitive.AccordionTriggerProps<T> & {25 class?: string | undefined26 children?: JSX.Element27 }2829const AccordionTrigger = <T extends ValidComponent = "button">(30 props: PolymorphicProps<T, AccordionTriggerProps<T>>31) => {32 const [local, others] = splitProps(props as AccordionTriggerProps, ["class", "children"])33 return (34 <AccordionPrimitive.Header class="flex">35 <AccordionPrimitive.Trigger36 class={cn(37 "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-expanded]>svg]:rotate-180",38 local.class39 )}40 {...others}41 >42 {local.children}43 <svg44 xmlns="http://www.w3.org/2000/svg"45 viewBox="0 0 24 24"46 fill="none"47 stroke="currentColor"48 stroke-width="2"49 stroke-linecap="round"50 stroke-linejoin="round"51 class="size-4 shrink-0 transition-transform duration-200"52 >53 <path d="M6 9l6 6l6 -6" />54 </svg>55 </AccordionPrimitive.Trigger>56 </AccordionPrimitive.Header>57 )58}5960type AccordionContentProps<T extends ValidComponent = "div"> =61 AccordionPrimitive.AccordionContentProps<T> & {62 class?: string | undefined63 children?: JSX.Element64 }6566const AccordionContent = <T extends ValidComponent = "div">(67 props: PolymorphicProps<T, AccordionContentProps<T>>68) => {69 const [local, others] = splitProps(props as AccordionContentProps, ["class", "children"])70 return (71 <AccordionPrimitive.Content72 class={cn(73 "animate-accordion-up overflow-hidden text-sm transition-all data-[expanded]:animate-accordion-down",74 local.class75 )}76 {...others}77// … truncated
What it pulls in
npm packages
Files it writes
More from solid-ui
All 55 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alertalert | solid-ui | Components | Free | 3 deps | |
| Alert Dialogalert-dialog | solid-ui | Components | Free | 2 deps | |
| Aspect Ratioaspect-ratio | solid-ui | Components | Free | 1 dep | |
| Avataravatar | solid-ui | Components | Free | 2 deps | |
| Badgebadge | solid-ui | Components | Free | 2 deps | |
| Badge Deltabadge-delta | solid-ui | Components | Free | 2 deps | |
| Bar Listbar-list | solid-ui | Components | Free | 1 dep | |
| Breadcrumbbreadcrumb | solid-ui | Components | Free | 2 deps |
