'use client'; import { useState } from 'react'; interface ShareButtonsProps { title: string; description: string; url?: string; } export default function ShareButtons({ title, description, url }: ShareButtonsProps) { const [showShareMenu, setShowShareMenu] = useState(false); const shareUrl = url || (typeof window !== 'undefined' ? window.location.href : ''); const handleKakaoShare = () => { if (typeof window !== 'undefined' && (window as any).Kakao) { (window as any).Kakao.Share.sendDefault({ objectType: 'feed', content: { title: title, description: description, imageUrl: 'https://developers.kakao.com/assets/img/about/logos/kakaolink/kakaolink_btn_medium.png', link: { mobileWebUrl: shareUrl, webUrl: shareUrl, }, }, buttons: [ { title: '자세히 보기', link: { mobileWebUrl: shareUrl, webUrl: shareUrl, }, }, ], }); } else { alert('카카오톡 공유 기능을 사용할 수 없습니다.'); } }; const handleFacebookShare = () => { const facebookUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(shareUrl)}`; window.open(facebookUrl, '_blank', 'width=600,height=400'); }; const handleTwitterShare = () => { const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(title)}&url=${encodeURIComponent(shareUrl)}`; window.open(twitterUrl, '_blank', 'width=600,height=400'); }; const handleCopyLink = async () => { try { await navigator.clipboard.writeText(shareUrl); alert('링크가 복사되었습니다!'); setShowShareMenu(false); } catch (err) { alert('링크 복사에 실패했습니다.'); } }; const handleNativeShare = async () => { if (navigator.share) { try { await navigator.share({ title: title, text: description, url: shareUrl, }); setShowShareMenu(false); } catch (err) { console.log('Share cancelled or failed', err); } } else { setShowShareMenu(true); } }; return (
{/* 공유 메뉴 (모바일에서 네이티브 공유가 안 될 때) */} {showShareMenu && ( <> {/* 배경 오버레이 */}
setShowShareMenu(false)} >
{/* 공유 메뉴 */}

공유하기

{/* 카카오톡 */} {/* 페이스북 */} {/* 트위터 */} {/* 링크 복사 */}
)}
); }