gab-social/app/javascript/gabsocial/components/panel/panel_layout.js

34 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-02-05 22:45:48 +00:00
import classNames from 'classnames/bind'
import Icon from '../icon'
export default class PanelLayout extends PureComponent {
static propTypes = {
title: PropTypes.string,
2020-02-05 22:45:48 +00:00
subtitle: PropTypes.string,
icon: PropTypes.string,
children: PropTypes.node,
2020-02-05 22:45:48 +00:00
hasBackground: PropTypes.boolean,
}
render() {
2020-02-05 22:45:48 +00:00
const { title, subtitle, icon, hasBackground, children } = this.props
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(' ')}>
{children}
</div>
2020-02-05 22:45:48 +00:00
</aside>
)
}
}