'use client'; import { useState, useEffect } from 'react'; import { useParams } from 'next/navigation'; import Link from 'next/link'; import Header from '@/components/Header'; import Footer from '@/components/Footer'; import { createClient } from '@/lib/supabase/client'; export default function GigDetailPage() { const params = useParams(); const id = params?.id as string; const supabase = createClient(); const [gig, setGig] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (!id) return; const fetchGig = async () => { const { data } = await supabase .from('marketplace_gigs') .select('*') .eq('id', id) .eq('status', 'active') .maybeSingle(); setGig(data); setLoading(false); }; fetchGig(); }, [id]); if (loading) { return (
); } if (!gig) { return (

Gig Not Found

Back to Gigs
); } return (
Marketplace / Gigs / {gig.title}

{gig.title}

{gig.company}
📍 {gig.location} 🎬 {gig.gig_type} {gig.rate && 💵 {gig.rate}} {gig.start_date && ( 📅 {new Date(gig.start_date).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })} {gig.end_date && ` – ${new Date(gig.end_date).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}`} )}

Project Details

{gig.description}

How to Respond

{gig.contact_method ? (
{gig.contact_method}
) : (

Contact the poster directly through the platform.

)}
Posted {new Date(gig.created_at).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}
← Back to Gig Board
); }