overleaf/services/web/frontend/js/shared/components/icon.js
Alf Eaton 7c97f8ab6e Switch to new JSX runtime (#4225)
* Use new JSX runtime and update Babel Node target
* Update .eslintrc
* Remove React imports

GitOrigin-RevId: 559de0267f8f2934c56a860ea8701bb522aa861a
2021-06-24 02:06:59 +00:00

48 lines
890 B
JavaScript

import PropTypes from 'prop-types'
import classNames from 'classnames'
function Icon({
type,
spin,
modifier,
classes = {},
accessibilityLabel,
children,
}) {
const iconClassName = classNames(
'fa',
`fa-${type}`,
{
'fa-spin': spin,
[`fa-${modifier}`]: modifier,
},
classes.icon
)
return (
<>
<i className={iconClassName} aria-hidden="true">
{children}
</i>
{accessibilityLabel ? (
<span className="sr-only">{accessibilityLabel}</span>
) : null}
</>
)
}
Icon.propTypes = {
type: PropTypes.string.isRequired,
spin: PropTypes.bool,
modifier: PropTypes.string,
classes: PropTypes.exact({
icon: PropTypes.string,
}),
accessibilityLabel: PropTypes.string,
children: PropTypes.oneOfType([
PropTypes.arrayOf(PropTypes.node),
PropTypes.node,
]),
}
export default Icon