import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { supabase } from '@/integrations/supabase/client'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Star } from 'lucide-react'; interface SimilarRidesProps { currentRideId: string; parkId: string; parkSlug: string; category: string; } interface SimilarRide { id: string; name: string; slug: string; image_url: string | null; average_rating: number; status: string; } export function SimilarRides({ currentRideId, parkId, parkSlug, category }: SimilarRidesProps) { const [rides, setRides] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchSimilarRides() { const { data, error } = await supabase .from('rides') .select('id, name, slug, image_url, average_rating, status') .eq('park_id', parkId) .eq('category', category) .neq('id', currentRideId) .order('average_rating', { ascending: false }) .limit(4); if (!error && data) { setRides(data); } setLoading(false); } fetchSimilarRides(); }, [currentRideId, parkId, category]); if (loading || rides.length === 0) { return null; } return ( Similar Rides You Might Enjoy
{rides.map((ride) => (
{ride.image_url ? (
{ride.name}
) : (
No image
)}

{ride.name}

{ride.average_rating.toFixed(1)} {ride.status}
))}
); }