70 lines
3.4 KiB
TypeScript
70 lines
3.4 KiB
TypeScript
import { Container } from "@/components/container";
|
|
import { Heading } from "@/components/heading";
|
|
import Image from "next/image";
|
|
|
|
const galleryImages = [
|
|
{
|
|
url: "https://images.unsplash.com/photo-1617372591452-9adad3e8070e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wyOTY1MDl8MHwxfHNlYXJjaHwyfHxtaWFtaSUyMGJlYWNoJTIwZml0bmVzcyUyMHNwb3J0cyUyMHRyYWluaW5nJTIwb3V0ZG9vciUyMGd5bXxlbnwwfDB8fHwxNzY4MzEyMjA3fDA&ixlib=rb-4.1.0&q=80&w=1080",
|
|
alt: "Outdoor training Miami",
|
|
span: "md:col-span-2 md:row-span-2",
|
|
},
|
|
{
|
|
url: "https://images.unsplash.com/photo-1617372591456-cd79c5f0ac6e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wyOTY1MDl8MHwxfHNlYXJjaHwzfHxtaWFtaSUyMGJlYWNoJTIwZml0bmVzcyUyMHNwb3J0cyUyMHRyYWluaW5nJTIwb3V0ZG9vciUyMGd5bXxlbnwwfDB8fHwxNzY4MzEyMjA3fDA&ixlib=rb-4.1.0&q=80&w=1080",
|
|
alt: "Yoga on the beach",
|
|
span: "md:col-span-1 md:row-span-1",
|
|
},
|
|
{
|
|
url: "https://images.unsplash.com/photo-1624480484750-648abd54aa00?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wyOTY1MDl8MHwxfHNlYXJjaHw1fHxtaWFtaSUyMGJlYWNoJTIwZml0bmVzcyUyMHNwb3J0cyUyMHRyYWluaW5nJTIwb3V0ZG9vciUyMGd5bXxlbnwwfDB8fHwxNzY4MzEyMjA3fDA&ixlib=rb-4.1.0&q=80&w=1080",
|
|
alt: "Athlete hydration",
|
|
span: "md:col-span-1 md:row-span-1",
|
|
},
|
|
];
|
|
|
|
export function MiamiGallery() {
|
|
return (
|
|
<section className="py-24 bg-white">
|
|
<Container>
|
|
<div className="flex flex-col md:flex-row justify-between items-end mb-12 gap-6">
|
|
<div className="max-w-2xl">
|
|
<Heading className="text-4xl md:text-5xl font-black mb-4">
|
|
TRAIN WHERE THE <span className="text-pink-500">VIBE</span> IS
|
|
</Heading>
|
|
<p className="text-neutral-600 text-lg">
|
|
Miami isn't just a location; it's a lifestyle. Our training sessions take place in the most iconic spots across the city.
|
|
</p>
|
|
</div>
|
|
<div className="hidden md:block">
|
|
<div className="flex -space-x-4">
|
|
{[1, 2, 3, 4].map((i) => (
|
|
<div key={i} className="w-12 h-12 rounded-full border-4 border-white bg-neutral-200 overflow-hidden">
|
|
<img src={`https://i.pravatar.cc/150?u=${i}`} alt="Client" />
|
|
</div>
|
|
))}
|
|
<div className="w-12 h-12 rounded-full border-4 border-white bg-cyan-500 flex items-center justify-center text-white text-xs font-bold">
|
|
+500
|
|
</div>
|
|
</div>
|
|
<p className="text-xs font-bold text-neutral-400 mt-2 text-right uppercase tracking-widest">Trusted by locals</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="grid grid-cols-1 md:grid-cols-3 md:grid-rows-2 gap-4 h-[600px]">
|
|
{galleryImages.map((img, idx) => (
|
|
<div key={idx} className={`relative overflow-hidden rounded-3xl group ${img.span}`}>
|
|
<Image
|
|
src={img.url}
|
|
alt={img.alt}
|
|
fill
|
|
className="object-cover transition-transform duration-700 group-hover:scale-110"
|
|
/>
|
|
<div className="absolute inset-0 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-end p-8">
|
|
<p className="text-white font-bold text-xl">{img.alt}</p>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</Container>
|
|
</section>
|
|
);
|
|
}
|