'use client'; import '@/styles/emoji-picker.scss'; import dynamic from 'next/dynamic'; import { useState, useRef, useEffect } from 'react'; import { EmojiClickData, EmojiStyle, Categories } from 'emoji-picker-react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faFaceSmile } from '@fortawesome/free-regular-svg-icons'; const Picker = dynamic( () => { return import('emoji-picker-react'); }, { ssr: false } ); type Props = { onEmojiSelect: (emoji: string) => void; }; export default function EmojiPicker({ onEmojiSelect }: Props) { const [showPicker, setShowPicker] = useState(false); const wrapperRef = useRef(null); const handleEmojiClick = (emojiData: EmojiClickData) => { onEmojiSelect(emojiData.emoji); setShowPicker(false); // 선택 후 자동으로 닫기 }; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) { setShowPicker(false); } }; if (showPicker) { document.addEventListener('mousedown', handleClickOutside); } else { document.removeEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [showPicker]); return ( <>
{showPicker && ( )}
); }