Skip to main content

Accordion

The Accordion component allows information to be displayed / hidden on a page behind a toggleable header.

Polymorphic Component

By default, content is rendered inside a <section>, but this can be overridden by passing any valid tag name or component with the as prop.

Examples

Basic Accordion

An Accordion has two sizes on desktop, and one on mobile devices. The content can be any size.

import { Accordion } from '@curology/ui-components-web/react/Accordion';
import { AccordionContent } from '@curology/ui-components-web/react/Accordion/AccordionContent';
import { AccordionSummary } from '@curology/ui-components-web/react/Accordion/AccordionSummary';

<Accordion defaultOpen size="{md(default)|lg}">
<AccordionSummary>
...
</AccordionSummary>
<AccordionContent>
...
</AccordionContent>
</Accordion>

Nested Accordion

Also available in two sizes, the "nested" accordion is meant to be used inside of another accordion. It is not simply an alternate treatment.

import { Accordion } from '@curology/ui-components-web/react/Accordion';
import { AccordionContent } from '@curology/ui-components-web/react/Accordion/AccordionContent';
import { AccordionSummary } from '@curology/ui-components-web/react/Accordion/AccordionSummary';

<Accordion type="nested" defaultOpen size="{md(default)|lg}">
<AccordionSummary>
...
</AccordionSummary>
<AccordionContent>
...
</AccordionContent>
</Accordion>

Controlled Accordion

The open/closed state of the Accordion can be set programmatically using the open and onToggle props.

import { Accordion } from '@curology/ui-components-web/react/Accordion';
import { AccordionContent } from '@curology/ui-components-web/react/Accordion/AccordionContent';
import { AccordionSummary } from '@curology/ui-components-web/react/Accordion/AccordionSummary';

<Accordion
open={isOpen}
onToggle={(shouldOpen) => setIsOpen(shouldOpen)}
>
...
</Accordion>

Props

AccordionProps

NameTypeDefault ValueRequiredDescription
All attributes of a <section />
defaultOpenfalse | truefalseNoShould the uncontrolled Accordion default to open?
onToggle(open: boolean) => voidNoFires when the open/closed state of the Accordion changes.
openfalse | truefalseNoShould the controlled Accordion be open?
size"md" | "lg"'md'NoWhat size to render the accordion title
type"default" | "nested"NoWhich style of accordion should be rendered?

AccordionSummaryProps

NameTypeDefault ValueRequiredDescription
All attributes of a <div />

AccordionContentProps

NameTypeDefault ValueRequiredDescription
All attributes of a <div />