import { Theme } from '@mui/material'; import React, { useCallback } from 'react'; import { makeStyles } from 'tss-react/mui'; interface IProps { onSelect: (emoji: string) => void; } const useStyles = makeStyles()((theme: Theme) => { return { emojiGrid: { display: 'flex', flexDirection: 'row', borderRadius: '4px', backgroundColor: theme.palette.ui03 }, emojiButton: { cursor: 'pointer', padding: '5px', fontSize: '1.5em' } }; }); const EmojiSelector: React.FC = ({ onSelect }) => { const { classes } = useStyles(); const emojiMap: Record = { thumbsUp: '👍', redHeart: '❤️', faceWithTearsOfJoy: '😂', faceWithOpenMouth: '😮', fire: '🔥' }; const emojiNames = Object.keys(emojiMap); const handleSelect = useCallback( (emoji: string) => (event: React.MouseEvent) => { event.preventDefault(); onSelect(emoji); }, [ onSelect ] ); return (
{emojiNames.map(name => ( {emojiMap[name]} ))}
); }; export default EmojiSelector;