diff --git a/src/components/rides/RideCard.tsx b/src/components/rides/RideCard.tsx index 05684bcc..a8f1fe83 100644 --- a/src/components/rides/RideCard.tsx +++ b/src/components/rides/RideCard.tsx @@ -1,7 +1,7 @@ import { useNavigate } from 'react-router-dom'; import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; -import { Star, MapPin, Clock, Zap, FerrisWheel, Waves, Theater, Train } from 'lucide-react'; +import { Star, MapPin, Clock, Zap, FerrisWheel, Waves, Theater, Train, ArrowUp, CheckCircle, Calendar, Hammer, XCircle } from 'lucide-react'; import { MeasurementDisplay } from '@/components/ui/measurement-display'; import { Ride } from '@/types/database'; import { getCloudflareImageUrl } from '@/lib/cloudflareImageUtils'; @@ -42,6 +42,15 @@ export function RideCard({ ride, showParkName = true, className, parkSlug }: Rid } }; + const getStatusIcon = (status: string) => { + switch (status) { + case 'operating': return ; + case 'seasonal': return ; + case 'under_construction': return ; + default: return ; + } + }; + const formatCategory = (category: string) => { return category.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1) @@ -50,7 +59,7 @@ export function RideCard({ ride, showParkName = true, className, parkSlug }: Rid return (
@@ -69,26 +78,32 @@ export function RideCard({ ride, showParkName = true, className, parkSlug }: Rid loading="lazy" /> ) : ( -
- {getRideIcon(ride.category)} +
+
+
+
+ {getRideIcon(ride.category)} +
+
)} {/* Gradient Overlay */} -
+
{/* Status Badge */} - {ride.status.replace('_', ' ').toUpperCase()} + {getStatusIcon(ride.status)} + {ride.status.replace('_', ' ').toUpperCase()}
- + {/* Header */}
-

+

{ride.name}

@@ -105,43 +120,57 @@ export function RideCard({ ride, showParkName = true, className, parkSlug }: Rid
{/* Category Badge */} - - {formatCategory(ride.category)} - +
+
+ {getRideIcon(ride.category)} +
+ + {formatCategory(ride.category)} + +
{/* Stats */}
{Number(ride.max_speed_kmh) > 0 && ( -
- - +
+
+ +
+
)} {Number(ride.max_height_meters) > 0 && ( -
- +
+
+ +
+
)} {Number(ride.duration_seconds) > 0 && ( -
- - {Math.floor(ride.duration_seconds / 60)} - min +
+
+ +
+ {Math.floor(ride.duration_seconds / 60)} + min
)}
{ride.average_rating > 0 && ( -
- - {ride.average_rating.toFixed(1)} +
+
+ +
+ {ride.average_rating.toFixed(1)} {ride.review_count > 0 && ( - ({ride.review_count}) + ({ride.review_count}) )}
)}