spaCy/website/src/components/infobox.js

51 lines
1.4 KiB
JavaScript
Raw Normal View History

import React from 'react'
import PropTypes from 'prop-types'
import classNames from 'classnames'
import Icon from './icon'
import classes from '../styles/infobox.module.sass'
2020-08-11 21:57:23 +03:00
export default function Infobox({
title,
emoji,
id,
variant = 'default',
list = false,
className,
children,
}) {
const infoboxClassNames = classNames(classes.root, className, {
2020-08-11 21:57:23 +03:00
[classes.list]: !!list,
[classes.warning]: variant === 'warning',
[classes.danger]: variant === 'danger',
})
return (
2019-03-13 00:57:15 +03:00
<aside className={infoboxClassNames} id={id}>
{title && (
<h4 className={classes.title}>
2020-09-12 18:05:10 +03:00
{variant !== 'default' && !emoji && (
<Icon width={18} name={variant} inline className={classes.icon} />
)}
2020-07-06 23:22:37 +03:00
<span className={classes.titleText}>
{emoji && (
<span className={classes.emoji} aria-hidden="true">
{emoji}
</span>
)}
{title}
</span>
</h4>
)}
{children}
</aside>
)
}
Infobox.propTypes = {
2020-07-09 20:43:25 +03:00
title: PropTypes.node,
2019-03-13 00:57:15 +03:00
id: PropTypes.string,
variant: PropTypes.oneOf(['default', 'warning', 'danger']),
className: PropTypes.string,
children: PropTypes.node.isRequired,
}