Accordion
An accordion is composed of vertically stacked headers that reveal more information when triggered.
AccordionItem
AccordionItem is composed of a header and expandable panel content
headerContentmust include aHeadingcomponent or semantich\*tag- Expandable panel content is passed as
children, and can be either a text string or a React component
<Accordion>
<AccordionItem
headerContent={
<Heading noMargin size="small">
Header
</Heading>
}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
</AccordionItem>
</Accordion>Accordion
Accordion is composed of AccordionItems
<Accordion>
<AccordionItem
headerContent={
<Heading noMargin size="small">
Simple item
</Heading>
}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
</AccordionItem>
<AccordionItem
headerContent={
<Heading noMargin size="large">
Custom item
</Heading>
}
iconType="plus-minus"
>
<Box
backgroundColor="neutral.100"
borderRadius="200"
mt="400"
padding="200"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
</Box>
</AccordionItem>
</Accordion>Accordion Internal State
If you need access to the internal state of each accordion item, you can use a
render prop. It provides 2 internal state props: isExpanded and isDisabled.
These internal state props are available for both children and
headerContent.
<Accordion>
<AccordionItem
headerContent={({ isExpanded }) => (
<Heading as="h4" size="medium">
{`${isExpanded ? 'Expanded' : 'Collapsed'} Item 1`}
</Heading>
)}
>
{({ isExpanded }) => (
<Box
backgroundColor="neutral.100"
borderRadius="200"
mt="400"
padding="200"
>
{`${isExpanded ? 'Expanded' : 'Collapsed'} Content 1`}
</Box>
)}
</AccordionItem>
<AccordionItem
headerContent={({ isDisabled }) => (
<Heading as="h4" size="medium">
{`${isDisabled ? 'Disabled' : 'Enabled'} Item 2`}
</Heading>
)}
isDisabled
>
{({ isDisabled }) => (
<Box
backgroundColor="neutral.100"
borderRadius="200"
mt="400"
padding="200"
>
{`${isDisabled ? 'Disabled' : 'Enabled'} Content 2`}
</Box>
)}
</AccordionItem>
</Accordion>