aether-rides / VehicleCard.tsx
lattmamb's picture
Upload 32 files (#1)
a1a9b91 verified
import { useState } from 'react';
import { Link } from 'react-router-dom';
import { Vehicle } from '@/data/vehicles';
import { ChevronRight } from 'lucide-react';
interface VehicleCardProps {
vehicle: Vehicle;
}
const VehicleCard = ({ vehicle }: VehicleCardProps) => {
const [isHovered, setIsHovered] = useState(false);
return (
<div
className="bg-[#161617] rounded-lg overflow-hidden transition-all duration-300 hover:shadow-xl hover:shadow-blue-900/10"
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
>
<div className="relative">
<div className={`h-52 bg-gradient-to-br from-[#202022] to-[#121214] overflow-hidden flex items-center justify-center transition-transform duration-500 ${isHovered ? 'scale-105' : 'scale-100'}`}>
<img
src={vehicle.image}
alt={`${vehicle.name} ${vehicle.model}`}
className="h-40 object-contain transform transition-all duration-500"
/>
</div>
<div className="absolute top-3 right-3 bg-blue-600/80 text-xs font-bold text-white px-2 py-1 rounded">
{vehicle.category}
</div>
</div>
<div className="p-5">
<div className="mb-4">
<h3 className="text-xl font-bold text-white">
{vehicle.name} {vehicle.model}
</h3>
<p className="text-gray-400 text-sm mt-1 line-clamp-2">
{vehicle.description}
</p>
</div>
<div className="flex justify-between items-center mb-4">
<div>
<span className="text-2xl font-bold text-white">${vehicle.price}</span>
<span className="text-gray-400 text-sm">/day</span>
</div>
<div className="text-right">
<span className="text-gray-400 text-sm">Subscription</span>
<p className="text-gray-300 font-medium">${vehicle.pricePerMonth}/mo</p>
</div>
</div>
<div className="grid grid-cols-2 gap-2 mb-5">
<div className="bg-[#1a1a1c] p-2 rounded text-center">
<p className="text-xs text-gray-400">Range</p>
<p className="text-sm font-medium text-white">{vehicle.specs.range}</p>
</div>
<div className="bg-[#1a1a1c] p-2 rounded text-center">
<p className="text-xs text-gray-400">0-60 mph</p>
<p className="text-sm font-medium text-white">{vehicle.specs.acceleration}</p>
</div>
</div>
<Link
to={`/vehicles/${vehicle.id}`}
className="bg-blue-600 hover:bg-blue-700 w-full py-3 rounded-md font-medium transition-colors text-white flex items-center justify-center gap-1"
>
View Details
<ChevronRight size={16} />
</Link>
</div>
</div>
);
};
export default VehicleCard;