react-accessible-tabs
Version:
Accessible React tabs component
84 lines (64 loc) • 2.08 kB
Markdown
An accessible React tabs component, ported from [my vanilla JS plugin](http://codepen.io/stowball/pen/xVWwWe).
[](https://badge.fury.io/js/react-accessible-tabs)
[](https://travis-ci.org/stowball/react-accessible-tabs)
[](https://stowball.github.io/react-accessible-tabs/).
```sh
npm install react-accessible-tabs --save
```
```js
import Tabs from 'react-accessible-tabs';
class App extends React.Component {
render () {
const tabContent = [
{
label: 'Tab 1',
content: <CustomComponent text="Tab 1 content" />
},
{
label: 'Tab 2',
content: <Parent><Child text="Tab 2 content" /></Parent>
},
{
label: 'Tab 3',
content: '<p>Tab 3 content</p>'
},
{
label: 'Tab 4',
content: [
<Header />,
'<p>Tab 4 content</p>'
<Footer />
]
}
];
const initialSelectedIndex = 1;
return (
<Tabs data={tabContent} initialSelectedIndex={initialSelectedIndex} />
);
}
}
```
* `data[x].label` accepts a `string`
* `data[x].content` accepts React `element`s, a `string` or an `array` of `element`s and `string`s
The styling is up to you and uses BEM selectors:
```scss
.tabs {}
.tabs__tab-list {}
.tabs__tab-list-item {}
.tabs__trigger {
&.is-selected {}
}
.tabs__panels {}
.tabs__panel {
&.is-hidden {}
}
```
---
Copyright (c) 2017 [Matt Stow](http://mattstow.com)
Licensed under the MIT license *(see [LICENSE](https://github.com/stowball/react-accessible-tabs/blob/master/LICENSE) for details)*