import React from 'react'; import { YStack, XStack } from '@tamagui/stacks'; import { SizableText as Text } from '@tamagui/text'; import { Button } from '@tamagui/button'; import { Share2, QrCode, Link, Users } from 'lucide-react'; import AppShell from '../components/AppShell'; import { useEventData } from '../context/EventDataContext'; import { buildEventShareLink } from '../services/eventLink'; import { useAppearance } from '@/hooks/use-appearance'; import { useTranslation } from '@/guest/i18n/useTranslation'; export default function ShareScreen() { const { event, token } = useEventData(); const { t } = useTranslation(); const { resolved } = useAppearance(); const isDark = resolved === 'dark'; const cardBorder = isDark ? 'rgba(255, 255, 255, 0.12)' : 'rgba(15, 23, 42, 0.12)'; const cardShadow = isDark ? '0 18px 40px rgba(2, 6, 23, 0.4)' : '0 16px 30px rgba(15, 23, 42, 0.12)'; const [copyState, setCopyState] = React.useState<'idle' | 'copied' | 'failed'>('idle'); const shareUrl = buildEventShareLink(event, token); const qrUrl = shareUrl ? `https://api.qrserver.com/v1/create-qr-code/?size=240x240&data=${encodeURIComponent(shareUrl)}` : ''; const handleCopy = React.useCallback(async () => { if (!shareUrl) { return; } try { await navigator.clipboard?.writeText(shareUrl); setCopyState('copied'); } catch (error) { console.error('Copy failed', error); setCopyState('failed'); } finally { window.setTimeout(() => setCopyState('idle'), 2000); } }, [shareUrl]); const handleShare = React.useCallback(async () => { if (!shareUrl) return; const title = event?.name ?? t('share.defaultEvent', 'Fotospiel'); const data: ShareData = { title, text: title, url: shareUrl }; if (navigator.share && (!navigator.canShare || navigator.canShare(data))) { try { await navigator.share(data); } catch (error) { // user dismissed } } else { await handleCopy(); } }, [event?.name, handleCopy, shareUrl]); return ( {t('share.invite.title', 'Invite guests')} {t('share.invite.description', 'Share the event link or show the QR code to join.')} {qrUrl ? ( {t('share.invite.qrAlt', ) : ( )} {t('share.invite.qrLabel', 'Show QR')} {copyState === 'copied' ? t('share.copySuccess', 'Copied') : copyState === 'failed' ? t('share.copyError', 'Copy failed') : t('share.invite.copyLabel', 'Copy link')} {t('share.invite.guestsTitle', 'Guests joined')} {event?.name ? t('share.invite.guestsSubtitleEvent', 'Share {event} with your guests.', { event: event.name }) : t('share.invite.guestsSubtitle', 'Share the event with your guests.')} ); }