import React, { useMemo } from 'react' import withDefaults from '../utils/with-defaults' import useTheme from '../use-theme' import { NormalTypes } from '../utils/prop-types' import { HuiThemes } from '../themes' interface Props { type?: NormalTypes } const defaultProps = { type: 'default' as NormalTypes } type NativeAttrs = Omit, keyof Props> export type DotProps = Props & typeof defaultProps & NativeAttrs const getColor = (type: NormalTypes, theme: HuiThemes): string => { const colors: { [key in NormalTypes]?: string } = { default: theme.palette.accents_2, success: theme.palette.success, warning: theme.palette.warning, error: theme.palette.error } return colors[type] || (colors.default as string) } const DotIcon: React.FC> = ({ type }) => { const theme = useTheme() const color = useMemo(() => getColor(type, theme), [type, theme]) return ( ) } const MemoDotIcon = React.memo(DotIcon) export default withDefaults(MemoDotIcon, defaultProps)