import React, { useCallback, useContext } from 'react'; import { SKIN_COLORS } from './constants'; import { Context } from './Context'; import { useSkinToneMessage } from './hooks/useSkinToneMessage'; import { SkinToneKey } from './types'; export interface SkinToneProps { active: boolean; children?: React.ReactNode; onSelect: (skinTone: SkinToneKey, event: React.MouseEvent) => void; skinTone: SkinToneKey; } export function SkinTone({ active, children, skinTone, onSelect }: SkinToneProps) { const { classNames } = useContext(Context); const className = [classNames.skinTone]; const color = SKIN_COLORS[skinTone]; const title = useSkinToneMessage(skinTone); if (active) { className.push(classNames.skinToneActive); } const handleClick = useCallback( (event: React.MouseEvent) => { event.stopPropagation(); onSelect(skinTone, event); }, [skinTone, onSelect], ); return ( ); }