import { MapPin, Star, Users, Calendar, ExternalLink, Castle, FerrisWheel, Waves, Tent, Sparkles } from 'lucide-react'; import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Park } from '@/types/database'; import { cn } from '@/lib/utils'; interface ParkListViewProps { parks: Park[]; onParkClick: (park: Park) => void; } export function ParkListView({ parks, onParkClick }: ParkListViewProps) { 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 (
{parks.map((park, index) => ( onParkClick(park)} >
{/* Image */}
{park.card_image_url ? ( <> {park.name}
) : (
{getParkTypeIcon(park.park_type)}
)} {/* Status Badge */} {park.status.replace('_', ' ').toUpperCase()}
{/* Content */}
{/* Header */}

{park.name}

{park.location && (
{park.location.city && `${park.location.city}, `} {park.location.state_province && `${park.location.state_province}, `} {park.location.country}
)}
{/* Rating */} {(park.average_rating != null && park.average_rating > 0) && (
{park.average_rating.toFixed(1)} ({park.review_count})
)}
{/* Description */} {park.description && (

{park.description}

)} {/* Tags */}
{formatParkType(park.park_type)} {park.opening_date && ( Opened {park.opening_date.split('-')[0]} )}
{/* Stats and Actions */}
{park.ride_count || 0} rides
{park.coaster_count || 0} coasters
{(park.review_count != null && park.review_count > 0) && (
{park.review_count} reviews
)}
))}
); }