import { Icon } from '@iconify/react/dist/iconify.js'; import { isNil } from 'lodash-es'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useCopyToClipboard } from 'react-use'; import NoColor from '../assets/NoColor.svg'; import { useColorFunction } from '../ColorFunctionContext'; import styles from './ColorStand.module.css'; import { NotificationType, useNotification } from './Notifications'; import { SegmentedControl } from './SegmentedControl'; type ColorValueProps = { value: string | null; }; function ColorValue({ value }: ColorValueProps) { const [cpState, copyToClipboard] = useCopyToClipboard(); const { showToast } = useNotification(); const handleCopy = useCallback(() => { if (!isNil(value)) { copyToClipboard(value); } }, [value]); useEffect(() => { if (!isNil(cpState.error)) { showToast(NotificationType.ERROR, 'Failed to copy to clipboard', 'tabler:alert-circle', 3000); } else if (!isNil(cpState.value)) { showToast( NotificationType.SUCCESS, `${cpState.value} has been copied to clipboard.`, 'tabler:circle-check', 3000, ); } }, [cpState]); return (