nexxtway/react-rainbow

View on GitHub
src/components/HelpText/icons/warning.js

Summary

Maintainability
A
1 hr
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import { useTheme } from '../../../libs/hooks';
import { darken } from '../../../styles/helpers/color';
import getIconSize from '../helpers/getIconSize';

function WarningIcon({ className, style, isFocused, iconSize }) {
    const warning = useTheme().rainbow.palette.warning.main;
    const background = isFocused ? darken(warning) : warning;
    const size = getIconSize(iconSize);
    return (
        <svg width={size + 2} height={size} viewBox="0 0 24 22" className={className} style={style}>
            <path
                fill={background}
                d="M12 0c1.342 0 2.512.738 3.138 1.834l8.378 14.675c.307.539.484 1.162.484 1.828C24 20.36 22.378 22 20.378 22H3.622C1.622 22 0 20.36 0 18.337c0-.582.135-1.133.375-1.622l.109-.206L8.862 1.834C9.453.8 10.53.084 11.778.007L12 0zm.198 16.5c-.506 0-.916.41-.916.916s.41.917.916.917.917-.41.917-.917c0-.506-.41-.916-.917-.916zm-.013-9.732c-.34 0-.663.142-.892.393-.23.25-.342.586-.312.924l.482 5.966c.034.373.347.659.722.659s.687-.286.721-.66l.482-5.965c.03-.338-.082-.673-.311-.924-.229-.25-.553-.393-.892-.393z"
            />
        </svg>
    );
}
WarningIcon.propTypes = {
    className: PropTypes.string,
    style: PropTypes.object,
    isFocused: PropTypes.bool,
    iconSize: PropTypes.oneOf(['small', 'medium']),
};

WarningIcon.defaultProps = {
    className: undefined,
    style: undefined,
    isFocused: false,
    iconSize: 'medium',
};
export default WarningIcon;