@swrve/core
Version:
Core set of Swrve UI Components
56 lines (47 loc) • 1.5 kB
JSX
import React from 'react'
import classnames from 'classnames'
import { string, bool, object, array, node, oneOfType } from 'prop-types'
import { Icon } from '@swrve/icons'
const AccordionItem = ({ children, className, title, onToggle, open, ...props }) => {
const wrapperStyles = classnames('sw-accordion-item flex flex-col py-2', className)
const itemStyles = classnames(
'sw-accordion-toggle uppercase tracking-large rounded-lg text-xs py-3 px-4 font-bold leading-contained ',
'text-regentGrey flex justify-between items-center',
{ open }
)
const itemIcon = open ? 'minus' : 'plus'
//TODO: Replace with new transition component for collapsing
const contentStyles = open ? 'block' : 'hidden'
return (
<div className={wrapperStyles} {...props}>
<button
className={itemStyles}
onClick={onToggle}
role="tab"
aria-expanded={open}
aria-current={open}
>
{title}
<Icon name={itemIcon} size="xsmall" />
</button>
<div className={contentStyles} role="tabpanel">
{children}
</div>
</div>
)
}
AccordionItem.propTypes = {
/** Child Content */
children: node,
/** Additional externs classnames */
className: oneOfType([string, object, array]),
/** Show or hide content */
open: bool,
/** Title for the accordion item */
title: node
}
AccordionItem.defaultProps = {
open: false
}
AccordionItem.displayName = 'AccordionItem'
export default AccordionItem