React reusable tab component
react-re-super-tabs
React reusable tab component
Installing
yarn:
yarn add react-re-super-tabs
npm:
npm install react-re-super-tabs --save
Usage
import { Tabs, Tab, TabPanel, TabList } from 'react-re-super-tabs'
import { Info, About } from '../information'
import CustomTab from '../CustomTab'
export default () => (
<Tabs activeTab='about'>
<TabList>
<Tab component={() => <div>info</div>} id='info' />
<Tab component={CustomTab} label='about' id='about' />
<Tab component={() => <div>contact</div>} id='contact' />
</TabList>
<TabList>
<TabPanel component={Info} id='info'/>
<TabPanel component={About} id='about'/>
<TabPanel component={() => <p>contact content ...</p>} id='contact' />
</TabList>
</Tabs>
)
Component API
Tabs
Main container for TabList
components. Use exactly two TabList
components for Tab
components with labels, and TabPanel
components with views
children: Array<TabList> | TabList
activeTab: string
<Tabs activeTab='about'>
<TabList>
...
</TabList>
<TabList>
...
</TabList>
</Tabs>
TabList
Container for Tab
, TabPanel
components
children: Array<Tab> | Tab | Array<TabPanel> | TabPanel
className: string
<Tabs activeTab='info'>
<TabList>
<Tab component={CustomTab} label='info' id='info' />
...
</TabList>
<TabList className={styles.list}>
<TabPanel component={Info} id='info' />
...
</TabList>
</Tabs>
Tab
Clickable label component that change the content view - TabPanel
.
Each Tab
component should have an identifier corresponding to the identifier of the TabPanel
component
component: function
label: string | number
id: string
<Tab component={() => <div>info</div>} id='info' />
with CustomTab
const CustomTab = ({children, isActive}) =>
<span className={`${styles.customTab} ${isActive ? styles.active : ''}`}>{children}</span>
...
<Tab component={CustomTab} id='info' />
remember that you have an access to isActive prop
TabPanel
View component.
Each TabPanel
component should have an identifier corresponding to the identifier of the Tab
component
component: function
id: string
<TabPanel component={() => <p>info content</p>} id='info' />
<TabPanel component={Info} id='info' />