Using npm:
npm install @highlight-ui/accordion
Using yarn:
yarn add @highlight-ui/accordion
Using pnpm:
pnpm install @highlight-ui/accordion
In your (S)CSS file:
@import url('@highlight-ui/accordion');
Once the package is installed, you can import the library:
import {
Accordion,
AccordionProps,
AccordionSection,
Expandable,
ExpandableProps,
} from '@highlight-ui/accordion';
Once the package is installed, you can import the library. The Accordion component depends on React DND, which is a relatively heavy dependency. This component's package is tree shakeable, if you do not need the drag-and-drop functionalities you can import the StaticAccordion
component instead of the Accordion
component.
import { StaticAccordion } from '@highlight-ui/accordion';
If you only need the drag-and-drop functionalities of the component, you can import
the DraggableAccordion
component:
import { DraggableAccordion } from '@highlight-ui/accordion';
import React, { useState } from 'react';
import { Accordion } from '@highlight-ui/accordion';
export default function AccordionExample() {
return (
<Accordion
sections={
({
key: '1',
title: 'Title 1',
content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit.',
},
{
key: '2',
title: 'Title 2',
disabled: true,
content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit.',
},
{
key: '3',
title: 'Title 3',
content: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit.',
})
}
/>
);
}
import React, { useState } from 'react';
import { Accordion } from '@highlight-ui/accordion';
import { Button } from '@highlight-ui/button';
import { Input } from '@highlight-ui/input';
export default function AccordionExample() {
return (
<Accordion
sections={[
{
key: '1',
title: 'Title 1',
actions: (
<Button variant="emphasized" onClick={() => alert('Hello')}>
Click me
</Button>
),
content: (
<div>
<Button>A focusable button</Button>
<Input placeholder="A focusable input" />
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
),
},
{
key: '2',
title: 'Title 2',
actions: (
<Button variant="emphasized" onClick={() => alert('Hello')}>
Click me
</Button>
),
content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit.',
},
]}
/>
);
}
Prop | Type | Required | Default | Description |
---|---|---|---|---|
sections |
AccordionSection |
Yes | An array of AccordionSection data structure |
|
selectable |
boolean |
No | false |
Should segments be selectable using a checkbox |
selectableSections |
AccordionSection |
No | Indicates the selected checkboxes in sections | |
mutltiple |
boolean |
No | false |
Should multiple sections remain open |
initiallyOpen |
AccordionSection |
No | The sections which are open by default. In case multiple is set to false , only the first array element will be opened. |
|
onExpansionChange |
(section: AccordionSection, isExpanded: boolean, index: number ) => void |
No | Callback fired whenever the section opens or closes. | |
onSelectedSectionsChange |
(sections: AccordionSection[]) => void |
No | Will be called with each selection change when the selectable prop is true . |
|
dragProps |
DragProps<AccordionSection, D> |
No | Configuration for drag-and-drop capabilities. |
Type | Values | Description |
---|---|---|
AccordionSection |
{key: string, title: React.ReactNode, content: React.ReactNode, actions?: React.ReactNode, disabled? boolean} |
Used for a number of section props |
DragProps |
Provided by the drag-and-drop utility package
|
Please visit personio.design for usage guidelines and visual examples.
If you're interested in contributing, please visit our contribution page.