import * as React from 'react'; import Avatar from '@mui/joy/Avatar'; import Box from '@mui/joy/Box'; import IconButton from '@mui/joy/IconButton'; import Stack from '@mui/joy/Stack'; import Sheet from '@mui/joy/Sheet'; import Typography from '@mui/joy/Typography'; import CelebrationOutlinedIcon from '@mui/icons-material/CelebrationOutlined'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import InsertDriveFileRoundedIcon from '@mui/icons-material/InsertDriveFileRounded'; import { MessageProps } from '../types'; type ChatBubbleProps = MessageProps & { variant: 'sent' | 'received'; }; export default function ChatBubble(props: ChatBubbleProps) { const { content, variant, timestamp, attachment = undefined, sender } = props; const isSent = variant === 'sent'; const [isHovered, setIsHovered] = React.useState(false); const [isLiked, setIsLiked] = React.useState(false); const [isCelebrated, setIsCelebrated] = React.useState(false); return ( {sender === 'You' ? sender : sender.name} {timestamp} {attachment ? (
{attachment.fileName} {attachment.size}
) : ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > {content} {(isHovered || isLiked || isCelebrated) && ( setIsLiked((prevState) => !prevState)} > {isLiked ? '❤️' : } setIsCelebrated((prevState) => !prevState)} > {isCelebrated ? '🎉' : } )} )}
); }