From ff152970fdeb2b1d20d514f992bf3ebe1c8101df Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:04:07 +0000 Subject: [PATCH] Refactor: Improve Rides tab UI --- src/pages/ParkDetail.tsx | 46 ++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/pages/ParkDetail.tsx b/src/pages/ParkDetail.tsx index 2a21189c..c9a84ce7 100644 --- a/src/pages/ParkDetail.tsx +++ b/src/pages/ParkDetail.tsx @@ -6,7 +6,9 @@ import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Separator } from '@/components/ui/separator'; -import { MapPin, Star, Clock, Phone, Globe, Calendar, ArrowLeft, Users, Zap, Camera, Castle, FerrisWheel, Waves, Tent } from 'lucide-react'; +import { MapPin, Star, Clock, Phone, Globe, Calendar, ArrowLeft, Users, Zap, Camera, Castle, FerrisWheel, Waves, Tent, Plus } from 'lucide-react'; +import { useAuth } from '@/hooks/useAuth'; +import { useUserRole } from '@/hooks/useUserRole'; import { ReviewsSection } from '@/components/reviews/ReviewsSection'; import { RideCard } from '@/components/rides/RideCard'; import { Park, Ride } from '@/types/database'; @@ -20,6 +22,8 @@ export default function ParkDetail() { slug: string; }>(); const navigate = useNavigate(); + const { user } = useAuth(); + const { isModerator, isAdmin } = useUserRole(); const [park, setPark] = useState(null); const [rides, setRides] = useState([]); const [loading, setLoading] = useState(true); @@ -409,15 +413,39 @@ export default function ParkDetail() { -
- {rides.map(ride => ( - - ))} + {/* Header with Add Ride button */} +
+

Rides at {park.name}

+ {user && (isModerator() || isAdmin()) && ( + + )}
+ + {/* Conditional rendering */} + {rides.length === 0 ? ( + + + +

No rides yet

+

+ Be the first to add a ride to this park +

+
+
+ ) : ( +
+ {rides.map(ride => ( + + ))} +
+ )}