2020-02-05 22:45:48 +00:00
|
|
|
import classNames from 'classnames/bind'
|
|
|
|
import Icon from '../icon'
|
2019-08-07 06:02:36 +01:00
|
|
|
|
|
|
|
export default class PanelLayout extends PureComponent {
|
|
|
|
static propTypes = {
|
|
|
|
title: PropTypes.string,
|
2020-02-05 22:45:48 +00:00
|
|
|
subtitle: PropTypes.string,
|
2019-08-07 06:02:36 +01:00
|
|
|
icon: PropTypes.string,
|
|
|
|
children: PropTypes.node,
|
2020-02-05 22:45:48 +00:00
|
|
|
hasBackground: PropTypes.boolean,
|
|
|
|
}
|
2019-08-07 06:02:36 +01:00
|
|
|
|
|
|
|
render() {
|
2020-02-05 22:45:48 +00:00
|
|
|
const { title, subtitle, icon, hasBackground, children } = this.props
|
2019-08-07 06:02:36 +01:00
|
|
|
|
|
|
|
return (
|
2020-02-05 22:45:48 +00:00
|
|
|
<aside className={[styles.default, styles.backgroundSubtle, styles.overflowHidden, styles.radiusSmall, styles.marginBottom15PX].join(' ')}>
|
|
|
|
{
|
|
|
|
(title || subtitle) &&
|
|
|
|
<div className={[styles.default, styles.paddingHorizontal15PX, styles.paddingVertical10PX, styles.borderColorSubtle, styles.borderBottom1PX].join(' ')}>
|
|
|
|
<div className={[styles.default, styles.flexRow, styles.alignItemsCenter].join(' ')}>
|
|
|
|
{icon && <Icon id={icon} height='16px' width='16px' className={[styles.default, styles.marginRight10PX].join(' ')} />}
|
|
|
|
<span className={[styles.default, styles.text, styles.fontWeightExtraBold, styles.colorBlack, styles.fontSize19PX].join(' ')}>{title}</span>
|
|
|
|
</div>
|
|
|
|
{subtitle && <span className={[styles.default, styles.text, styles.colorSubtle, styles.fontSize13PX, styles.marginTop5PX].join(' ')}>{subtitle}</span>}
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
<div className={[styles.default, styles.paddingHorizontal15PX, styles.paddingVertical10PX].join(' ')}>
|
2019-08-07 06:02:36 +01:00
|
|
|
{children}
|
|
|
|
</div>
|
2020-02-05 22:45:48 +00:00
|
|
|
</aside>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|