import { MapPin, Star, Users, Clock, Castle, FerrisWheel, Waves, Tent } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Park } from '@/types/database'; interface ParkCardProps { park: Park; } export function ParkCard({ park }: ParkCardProps) { const navigate = useNavigate(); const handleClick = () => { navigate(`/parks/${park.slug}`); }; const getStatusColor = (status: string) => { switch (status) { case 'operating': return 'bg-green-500/20 text-green-400 border-green-500/30'; case 'seasonal': return 'bg-yellow-500/20 text-yellow-400 border-yellow-500/30'; case 'under_construction': return 'bg-blue-500/20 text-blue-400 border-blue-500/30'; default: return 'bg-red-500/20 text-red-400 border-red-500/30'; } }; const getParkTypeIcon = (type: string) => { switch (type) { case 'theme_park': return; case 'amusement_park': return; case 'water_park': return ; case 'family_entertainment': return ; default: return ; } }; const formatParkType = (type: string) => { return type.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' '); }; return {/* Image Placeholder with Gradient */} {park.card_image_url ? : {getParkTypeIcon(park.park_type)} } {/* Gradient Overlay */} {/* Status Badge */} {park.status.replace('_', ' ').toUpperCase()} {/* Header */} {park.name} {park.location && {park.location.city && `${park.location.city}, `}{park.location.country} } {/* Description */} {park.description && {park.description} } {/* Park Type */} {formatParkType(park.park_type)} {/* Stats */} {park.ride_count > 0 && ( {park.ride_count} rides )} {park.coaster_count > 0 && ( {park.coaster_count} )} {park.average_rating > 0 && ( {park.average_rating.toFixed(1)} {park.review_count > 0 && ( ({park.review_count}) )} )} ; }
{park.description}