Make entity names clickable

Update various components to wrap display names (parks, rides, manufacturers, designers, operators, etc.) in Link elements so they navigate to detail pages, aligning with the ParkDetail change. This includesRideDetail, RideListView, RideCreditCard, ParkDetail, and related imports, to enhance cohesion, interactivity, and browseability across the app.
This commit is contained in:
gpt-engineer-app[bot]
2025-11-12 03:40:29 +00:00
parent fd4e21734f
commit 2ccfe8c48a
2 changed files with 18 additions and 9 deletions

View File

@@ -4,6 +4,7 @@ import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import { Ride } from '@/types/database';
import { cn } from '@/lib/utils';
import { Link } from 'react-router-dom';
interface RideListViewProps {
rides: Ride[];
@@ -115,10 +116,12 @@ export function RideListView({ rides, onRideClick }: RideListViewProps) {
{formatCategory(ride.category)}
</Badge>
{ride.manufacturer && (
<Badge variant="outline" className="text-xs backdrop-blur-sm border-accent/20 group-hover:border-accent/40 transition-colors duration-300">
<Link to={`/manufacturers/${ride.manufacturer.slug}`}>
<Badge variant="outline" className="text-xs backdrop-blur-sm border-accent/20 group-hover:border-accent/40 transition-colors duration-300 hover:bg-accent/10">
<Factory className="w-3 h-3 mr-1" />
{ride.manufacturer.name}
</Badge>
</Link>
)}
</div>
</div>

View File

@@ -1,5 +1,5 @@
import { useState, lazy, Suspense, useEffect } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import { useParams, useNavigate, Link } from 'react-router-dom';
import { Header } from '@/components/layout/Header';
import { getBannerUrls } from '@/lib/cloudflareImageUtils';
import { trackPageView } from '@/lib/viewTracking';
@@ -471,9 +471,12 @@ export default function RideDetail() {
<Users className="w-4 h-4 text-muted-foreground" />
<div>
<div className="font-medium">Manufacturer</div>
<div className="text-sm text-muted-foreground">
<Link
to={`/manufacturers/${ride.manufacturer.slug}`}
className="text-sm text-primary hover:underline"
>
{ride.manufacturer.name}
</div>
</Link>
</div>
</div>
)}
@@ -483,9 +486,12 @@ export default function RideDetail() {
<Users className="w-4 h-4 text-muted-foreground" />
<div>
<div className="font-medium">Designer</div>
<div className="text-sm text-muted-foreground">
<Link
to={`/designers/${ride.designer.slug}`}
className="text-sm text-primary hover:underline"
>
{ride.designer.name}
</div>
</Link>
</div>
</div>
)}