# @bianic-ui/accordion

> A simple and accessible accordion component for React & Bianic UI

Latest version **0.1.0-alpha.2** (published 2020-09-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @bianic-ui/accordion
pnpm add @bianic-ui/accordion
yarn add @bianic-ui/accordion
bun add @bianic-ui/accordion
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0-alpha.2 |
| Published | 2020-09-03 |
| First published | 2020-09-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 145.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Muhammad Rafiul Ilmi Syarifudin |
| Maintainers | ilmimris |
| Keywords | react, component, accordion, bianic, bianic ui, collapse, accessible, accessibility, wai-aria, aria, a11y |

## Links

- npm: https://www.npmjs.com/package/@bianic-ui/accordion
- Repository: https://gitlab.com/bia-design/bianic-ui
- Homepage: https://gitlab.com/bia-design/bianic-ui#readme
- Issues: https://gitlab.com/bia-design/bianic-ui/issues
- npm.io page: https://npm.io/package/@bianic-ui/accordion

## Dependencies (5)

- [@bianic-ui/icon](https://npm.io/package/@bianic-ui/icon.md) ^0.1.0-alpha.2
- [@bianic-ui/hooks](https://npm.io/package/@bianic-ui/hooks.md) ^0.1.0-alpha.2
- [@bianic-ui/utils](https://npm.io/package/@bianic-ui/utils.md) ^0.1.0-alpha.2
- [@bianic-ui/collapse](https://npm.io/package/@bianic-ui/collapse.md) ^0.1.0-alpha.2
- [@bianic-ui/descendant](https://npm.io/package/@bianic-ui/descendant.md) ^0.1.0-alpha.2

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 0.1.0-alpha.2 (latest) — 2020-09-03
- 0.1.0-alpha.1 — 2020-09-03

## README

# @bianic-ui/accordion

An accordion is a vertically stacked set of interactive headings that each
contain a title or content snippet representing a section of content.

The headings function as controls that enable users to reveal or hide their
associated sections of content.

## Installation

```sh
yarn add @bianic-ui/accordion

# or

npm i @bianic-ui/accordion
```

## Import Components

```jsx
import {
  Accordion,
  AccordionItem,
  AccordionButton,
  AccordionPanel,
} from "@bianic-ui/accordion"
```

## Component:

- `Accordion`: manages the global state of all opened accordionitems via
  context.
- `AccordionItem`: manages the state for a single accordion item.
- `AccordionButton`: the trigger to open/close an accordion item.
- `AccordionPanel`: the main content area for the accordion item.

## Usage

By default, only one accordion can be visible at a time, and it can't be
toggled.

**Note 🚨**: Each accordion button must be wrapped in an heading tag, that is
appropriate for the information architecture of the page.

```jsx
<Accordion>
  <AccordionItem>
    <h2>
      <AccordionButton>Section 1 title</AccordionButton>
    </h2>
    <AccordionPanel>Panel 1</AccordionPanel>
  </AccordionItem>

  <AccordionItem>
    <h2>
      <AccordionButton>Section 2 title</AccordionButton>
    </h2>
    <AccordionPanel>Panel 2</AccordionPanel>
  </AccordionItem>
</Accordion>
```

To make each accordion toggle (expand/collapse) on click, pass the `allowToggle`
prop.

```jsx
<Accordion allowToggle>
  <AccordionItem>
    <AccordionButton>
      <bianic.div flex="1" textAlign="left">
        Section 1 title
      </bianic.div>
      <AccordionIcon />
    </AccordionButton>
    <AccordionPanel pb={4}>Panel 1</AccordionPanel>
  </AccordionItem>

  <AccordionItem>
    <AccordionButton>
      <bianic.div flex="1" textAlign="left">
        Section 2 title
      </bianic.div>
      <AccordionIcon />
    </AccordionButton>
    <AccordionPanel pb={4}>Panel 2</AccordionPanel>
  </AccordionItem>
</Accordion>
```

To allow multiple accordions to be visible at a time, pass the `allowMultiple`
prop.

```jsx
<Accordion allowMultiple>
  <AccordionItem>
    <AccordionButton>
      <bianic.div flex="1" textAlign="left">
        Section 1 title
      </bianic.div>
      <AccordionIcon />
    </AccordionButton>
    <AccordionPanel pb={4}>Panel 1</AccordionPanel>
  </AccordionItem>

  <AccordionItem>
    <AccordionButton>
      <bianic.div flex="1" textAlign="left">
        Section 2 title
      </bianic.div>
      <AccordionIcon />
    </AccordionButton>
    <AccordionPanel pb={4}>Panel 2</AccordionPanel>
  </AccordionItem>
</Accordion>
```

## References:

https://www.w3.org/TR/wai-aria-practices/examples/accordion/accordion.html
https://inclusive-components.design/collapsible-sections/
https://github.com/stereobooster/react-accessible-accordion
https://jqueryui.com/accordion/

---
_Source: https://npm.io/package/@bianic-ui/accordion · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
