import React from 'react' import PropTypes from 'prop-types' import Block from '../block' import Heading from '../heading' import Button from '../button' import Text from '../text' class PanelLayout extends React.PureComponent { render() { const { title, subtitle, headerButtonTitle, headerButtonAction, headerButtonTo, headerButtonHref, footerButtonTitle, footerButtonAction, footerButtonTo, footerButtonHref, noPadding, children, } = this.props return ( <aside className={[_s.d, _s.mb15].join(' ')}> <Block> { (title || subtitle) && <div className={[_s.d, _s.px15, _s.py10].join(' ')}> <div className={[_s.d, _s.flexRow, _s.aiCenter].join(' ')}> <Heading size='h2'> {title} </Heading> { (!!headerButtonTitle && (!!headerButtonAction || !!headerButtonTo || !!headerButtonHref)) && <div className={[_s.d, _s.mlAuto].join(' ')}> <Button isText backgroundColor='none' color='brand' to={headerButtonTo} href={headerButtonHref} onClick={headerButtonAction} > <Text size='small' color='inherit' weight='bold'> {headerButtonTitle} </Text> </Button> </div> } </div> { subtitle && <Heading size='h4'> {subtitle} </Heading> } </div> } { !noPadding && <div className={[_s.d, _s.px15, _s.py10].join(' ')}> {children} </div> } { noPadding && children } { (!!footerButtonTitle && (!!footerButtonAction || !!footerButtonTo || !!footerButtonHref)) && <div className={_s.d}> <Button isText color='none' backgroundColor='none' to={footerButtonTo} href={footerButtonHref} onClick={footerButtonAction} className={[_s.px15, _s.py15, _s.bgSubtle_onHover].join(' ')} > <Text color='brand' size='medium'> {footerButtonTitle} </Text> </Button> </div> } </Block> </aside> ) } } PanelLayout.propTypes = { title: PropTypes.string, subtitle: PropTypes.string, children: PropTypes.node, headerButtonTitle: PropTypes.string, headerButtonAction: PropTypes.func, headerButtonTo: PropTypes.string, headerButtonHref: PropTypes.string, footerButtonTitle: PropTypes.string, footerButtonAction: PropTypes.func, footerButtonTo: PropTypes.string, footerButtonHref: PropTypes.string, noPadding: PropTypes.bool, } export default PanelLayout