import { useState, useEffect, lazy, Suspense } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { Header } from '@/components/layout/Header'; import { getBannerUrls } from '@/lib/cloudflareImageUtils'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent } from '@/components/ui/card'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Dialog, DialogContent } from '@/components/ui/dialog'; import { AdminFormSkeleton } from '@/components/loading/PageSkeletons'; import { ArrowLeft, MapPin, Star, Globe, Calendar, Edit, Ruler } from 'lucide-react'; import { Company } from '@/types/database'; import { supabase } from '@/integrations/supabase/client'; import { DesignerPhotoGallery } from '@/components/companies/DesignerPhotoGallery'; // Lazy load admin form const DesignerForm = lazy(() => import('@/components/admin/DesignerForm').then(m => ({ default: m.DesignerForm }))); import { useAuth } from '@/hooks/useAuth'; import { useUserRole } from '@/hooks/useUserRole'; import { toast } from '@/hooks/use-toast'; import { getErrorMessage } from '@/lib/errorHandler'; import { submitCompanyUpdate } from '@/lib/companyHelpers'; import { VersionIndicator } from '@/components/versioning/VersionIndicator'; import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs'; import { trackPageView } from '@/lib/viewTracking'; import { useAuthModal } from '@/hooks/useAuthModal'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; import { useCompanyDetail } from '@/hooks/companies/useCompanyDetail'; import { useCompanyStatistics } from '@/hooks/companies/useCompanyStatistics'; export default function DesignerDetail() { const { slug } = useParams<{ slug: string }>(); const navigate = useNavigate(); const [isEditModalOpen, setIsEditModalOpen] = useState(false); const { user } = useAuth(); const { isModerator } = useUserRole(); const { requireAuth } = useAuthModal(); // Use custom hooks for data fetching const { data: designer, isLoading: loading } = useCompanyDetail(slug, 'designer'); const { data: statistics, isLoading: statsLoading } = useCompanyStatistics(designer?.id, 'designer'); // Update document title when designer changes useDocumentTitle(designer?.name || 'Designer Details'); // Update Open Graph meta tags useOpenGraph({ title: designer?.name || '', description: designer?.description || (designer ? `${designer.name} - Ride Designer${designer.headquarters_location ? ` based in ${designer.headquarters_location}` : ''}` : ''), imageUrl: designer?.banner_image_url, imageId: designer?.banner_image_id, type: 'profile', enabled: !!designer }); // Track page view when designer is loaded useEffect(() => { if (designer?.id) { trackPageView('company', designer.id); } }, [designer?.id]); const handleEditSubmit = async (data: any) => { try { await submitCompanyUpdate( designer!.id, data, user!.id ); toast({ title: "Edit Submitted", description: "Your edit has been submitted for review." }); setIsEditModalOpen(false); } catch (error) { const errorMsg = getErrorMessage(error); toast({ title: "Error", description: errorMsg, variant: "destructive" }); } }; if (loading) { return (
); } if (!designer) { return (

Designer Not Found

); } return (
{/* Back Button and Edit Button */}
{/* Hero Section */}
{(designer.banner_image_url || designer.banner_image_id) ? ( {designer.name} ) : designer.logo_url ? (
{designer.name}
) : (
)}
Designer

{designer.name}

{designer.headquarters_location && (
{designer.headquarters_location}
)}
{designer.average_rating > 0 && (
{designer.average_rating.toFixed(1)}
{designer.review_count} {designer.review_count === 1 ? "review" : "reviews"}
)}
{/* Company Info */}
{designer.founded_year && (
{designer.founded_year}
Founded
)} {designer.website_url && ( Visit Website )}
{/* Tabs */} Overview Rides {!statsLoading && statistics?.ridesCount ? `(${statistics.ridesCount})` : ''} Photos {!statsLoading && statistics?.photosCount ? `(${statistics.photosCount})` : ''} History {designer.description && (

About

{designer.description}

)}

Rides

View all rides designed by {designer.name}

{/* Edit Modal */} }> setIsEditModalOpen(false)} />
); }