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 ? (
<>
>
) : (
{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
)}
))}
);
}