Install

yarn add react-accordion-with-header
Import
import {
AccordionWithHeader,
AccordionNode,
AccordionHeader,
AccordionPanel
} from 'react-accordion-with-header';
Use
return (
<AccordionWithHeader>
{[1, 2, 3, 4].map((item, i) => {
return (
<AccordionNode key={i}>
<AccordionHeader>
<span>🚀</span>
<span>🔥</span>
</AccordionHeader>
<AccordionPanel>
<p>Interesting things</p>
</AccordionPanel>
</AccordionNode>
);
})}
</AccordionWithHeader>
);

Example usages:

Our Component needs a hero. This is where you'll find him.

"I'm gonna to take you to the bank senator Trent, the blood bank."

Controlled

In this example, the <AccordionWithHeader /> recieves a dynamic array as the active prop

<AccordionWithHeader
multipleOkay={true}
active={[0]}
onChange={(panels) => console.log(panels)}
>
//... panels etc
</AccordionWithHeader>
horizontalAlignment="centerSpaceBetween"
verticalAlignment="top"
horizontalAlignment="centerSpaceBetween"
verticalAlignment="top"
This maniac should be wearing a number, not a badge.
steve
horizontalAlignment="centerSpaceAround"
verticalAlignment="center"
horizontalAlignment="centerSpaceAround"
verticalAlignment="center"
So, what are you, like some special forces guy?
steve
horizontalAlignment="center"
verticalAlignment="bottom"
horizontalAlignment="center"
verticalAlignment="bottom"
The jury decided. I presided.
steve

Beautiful

Monday
low: 41
high: 11

Rain likely. High near 45F. Winds NW at 10 to 20 mph. Chance of rain 90%.

Rain or snow showers in the morning will give way to partly cloudy skies in the afternoon. High 43F. Winds W at 5 to 10 mph. Chance of rain 30%.

Tuesday
low: 22
high: 38

Rain likely. High near 45F. Winds NW at 10 to 20 mph. Chance of rain 90%.

Rain or snow showers in the morning will give way to partly cloudy skies in the afternoon. High 43F. Winds W at 5 to 10 mph. Chance of rain 30%.

Wednesday
low: 81
high: 23

Rain likely. High near 45F. Winds NW at 10 to 20 mph. Chance of rain 90%.

Rain or snow showers in the morning will give way to partly cloudy skies in the afternoon. High 43F. Winds W at 5 to 10 mph. Chance of rain 30%.

Thursday
low: 7
high: 106

Rain likely. High near 45F. Winds NW at 10 to 20 mph. Chance of rain 90%.

Rain or snow showers in the morning will give way to partly cloudy skies in the afternoon. High 43F. Winds W at 5 to 10 mph. Chance of rain 30%.

Friday
low: 44
high: 0

Rain likely. High near 45F. Winds NW at 10 to 20 mph. Chance of rain 90%.

Rain or snow showers in the morning will give way to partly cloudy skies in the afternoon. High 43F. Winds W at 5 to 10 mph. Chance of rain 30%.


Simple

(uncontrolled with defaults)

My Header #1

This is some interesting content

And this is an interesting description of said content.

My Header #2

This is some interesting content

And this is an interesting description of said content.

My Header #3

This is some interesting content

And this is an interesting description of said content.


Adding panels dynamically

This is the header 0
It has flexbox layout
Look, its #0
This is the header 1
It has flexbox layout
Look, its #1
This is the header 2
It has flexbox layout
Look, its #2
This is the header 3
It has flexbox layout
Look, its #3

useAccordionState()

For some advanced use cases, you may tap the accordion context with `useAccordionState()`

import { useAccordionState } from 'react-accordion-with-header';
const MyComponentWithContext = () => {
const [state] = useAccordionState();
console.log('state: ', state);
return <div></div>;
};

Note you will receive an error if <MyComponentWithContext /> is not a child of <AccordionWithHeader />


Real world demo

Or something that represents it 😄... with responsive styling

A Kind of Magic: Behavior Change Design

| DESIGN

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.

How to Stay Safe on the Internet, Part 1

| TECH

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.

How Visual Design Makes for Great UX

| DESIGN

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.

A Kind of Magic: Behavior Change Design

| DESIGN

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.

How to Stay Safe on the Internet, Part 2

| TECH

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.

This surprising playing card design secret can never be unseen

| DESIGN

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor mattis, sollicitudin mi non, semper justo. Proin nisi turpis, venenatis euismod ultrices nec, commodo vel eros. Proin gravida, ex vel pulvinar faucibus, tellus urna vehicula elit, a imperdiet eros nisl non erat. Suspendisse sit amet urna tempor, pellentesque tellus congue, faucibus lorem. Suspendisse mattis, enim a tempor placerat, tortor leo placerat est, sit amet blandit ante augue convallis ante. Ut blandit turpis sed sem viverra tincidunt. Nam tincidunt ex metus, ac gravida massa dictum at. Morbi egestas pretium vehicula. Nam eleifend massa bibendum, congue justo at, volutpat leo. Phasellus sagittis viverra mauris, eu gravida metus pulvinar id. Maecenas vel efficitur justo.