import React, { useMemo } from 'react' import withDefaults from '../utils/with-defaults' import useTheme from '../styles/use-theme' import { NormalTypes } from '../utils/prop-types' import { ZeitUIThemes } from '../styles/themes' interface Props { type?: NormalTypes className?: string } const defaultProps = { type: 'default' as NormalTypes, className: '', } type NativeAttrs = Omit, keyof Props> export type DotProps = Props & typeof defaultProps & NativeAttrs const getColor = (type: NormalTypes, theme: ZeitUIThemes): 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 Dot: React.FC> = ({ type, children, className, ...props }) => { const theme = useTheme() const color = useMemo(() => getColor(type, theme), [type, theme]) return ( {children} ) } const MemoDot = React.memo(Dot) export default withDefaults(MemoDot, defaultProps)