UNPKG

@swrve/core

Version:

Core set of Swrve UI Components

56 lines (47 loc) 1.5 kB
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