'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { useLanguage } from '@/context/LanguageContext'; import { eventsApi, Event } from '@/lib/api'; import { formatPrice, formatDateShort, formatTime } from '@/lib/utils'; import { CalendarIcon, MapPinIcon, } from '@heroicons/react/24/outline'; export default function LinktreePage() { const { t, locale } = useLanguage(); const [nextEvent, setNextEvent] = useState(null); const [loading, setLoading] = useState(true); // Social links from environment variables const whatsappLink = process.env.NEXT_PUBLIC_WHATSAPP; const instagramHandle = process.env.NEXT_PUBLIC_INSTAGRAM; const telegramHandle = process.env.NEXT_PUBLIC_TELEGRAM; const tiktokHandle = process.env.NEXT_PUBLIC_TIKTOK; useEffect(() => { eventsApi.getNextUpcoming() .then(({ event }) => { if (event) { const endTime = event.endDatetime || event.startDatetime; if (new Date(endTime).getTime() <= Date.now()) { setNextEvent(null); return; } } setNextEvent(event); }) .catch(console.error) .finally(() => setLoading(false)); }, []); const formatDate = (dateStr: string) => formatDateShort(dateStr, locale as 'en' | 'es'); const fmtTime = (dateStr: string) => formatTime(dateStr, locale as 'en' | 'es'); // Handle both full URLs and handles const instagramUrl = instagramHandle ? (instagramHandle.startsWith('http') ? instagramHandle : `https://instagram.com/${instagramHandle.replace('@', '')}`) : null; const telegramUrl = telegramHandle ? (telegramHandle.startsWith('http') ? telegramHandle : `https://t.me/${telegramHandle.replace('@', '')}`) : null; const tiktokUrl = tiktokHandle ? (tiktokHandle.startsWith('http') ? tiktokHandle : `https://www.tiktok.com/@${tiktokHandle.replace('@', '')}`) : null; return (
{/* Profile Header */}
Spanglish

Spanglish

{t('linktree.tagline')}

{/* Next Event Card */}

{t('linktree.nextEvent')}

{loading ? (
Loading…
) : nextEvent ? (

{locale === 'es' && nextEvent.titleEs ? nextEvent.titleEs : nextEvent.title}

{formatDate(nextEvent.startDatetime)} • {fmtTime(nextEvent.startDatetime)}
{nextEvent.location}
{nextEvent.price === 0 ? t('events.details.free') : formatPrice(nextEvent.price, nextEvent.currency)} {!nextEvent.externalBookingEnabled && ( {nextEvent.availableSeats} {t('events.details.spotsLeft')} )}
{t('linktree.moreInfo')}
) : (

{t('linktree.noEvents')}

)}
{/* Social Links */}

{t('linktree.joinCommunity')}

{/* WhatsApp */} {whatsappLink && (

{t('linktree.whatsapp.title')}

{t('linktree.whatsapp.subtitle')}

)} {/* Telegram */} {telegramUrl && (

{t('linktree.telegram.title')}

{t('linktree.telegram.subtitle')}

)} {/* Instagram */} {instagramUrl && (

{t('linktree.instagram.title')}

{t('linktree.instagram.subtitle')}

)} {/* TikTok */} {tiktokUrl && (

{t('linktree.tiktok.title')}

{t('linktree.tiktok.subtitle')}

)}
{/* Website Link */}
{t('linktree.visitWebsite')}
{/* Footer */}

{t('footer.copyright', { year: new Date().getFullYear().toString() })}

); }