united-tattoo/components/services-mobile-carousel.tsx

126 lines
5.1 KiB
TypeScript

"use client"
import { Button } from "@/components/ui/button"
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel"
import Link from "next/link"
const services = [
{
title: "Black & Grey Realism",
description: "Photorealistic tattoos with incredible depth and detail using black and grey shading techniques.",
features: ["Lifelike portraits", "Detailed shading", "3D effects"],
price: "Starting at $250",
bgColor: "bg-gray-100",
},
{
title: "Cover-ups & Blackout",
description: "Transform old tattoos into stunning new pieces with expert cover-up techniques or bold blackout designs.",
features: ["Free consultation", "Creative solutions", "Complete coverage"],
price: "Starting at $300",
bgColor: "bg-black",
},
{
title: "Fine Line & Micro Realism",
description: "Delicate, precise linework and tiny realistic designs that showcase incredible detail.",
features: ["Single needle work", "Intricate details", "Minimalist aesthetic"],
price: "Starting at $150",
bgColor: "bg-purple-100",
},
{
title: "Traditional & Neo-Traditional",
description: "Bold American traditional and neo-traditional styles with vibrant colors and strong lines.",
features: ["Classic designs", "Bold color palettes", "Timeless appeal"],
price: "Starting at $200",
bgColor: "bg-red-100",
},
{
title: "Anime & Watercolor",
description: "Vibrant anime characters and painterly watercolor effects that bring art to life on skin.",
features: ["Character designs", "Soft color blends", "Artistic techniques"],
price: "Starting at $250",
bgColor: "bg-blue-100",
},
]
export function ServicesMobileCarousel() {
return (
<div className="lg:hidden bg-black text-white py-12">
<div className="px-4 mb-8">
<div className="mb-6">
<span className="text-sm font-medium tracking-widest text-white/60 uppercase">Our Services</span>
</div>
<h3 className="text-4xl font-bold tracking-tight text-balance">Choose Your Style</h3>
</div>
<Carousel
opts={{
align: "start",
loop: true,
}}
className="w-full"
>
<CarouselContent className="-ml-2 md:-ml-4">
{services.map((service, index) => (
<CarouselItem key={index} className="pl-2 md:pl-4 basis-[85%] sm:basis-[75%] md:basis-[70%]">
<div className="min-h-[50vh] flex items-center justify-center p-4 relative">
<div className="max-w-sm relative">
<div className="mb-6">
<span className="text-sm font-medium tracking-widest text-white/60 uppercase">
Service {String(index + 1).padStart(2, "0")}
</span>
</div>
<h3 className="text-3xl font-bold tracking-tight mb-6 text-balance">
{service.title.split(" ").map((word, i) => (
<span key={i} className="block">
{word}
</span>
))}
</h3>
<div className="space-y-6 mb-8">
<p className="text-lg text-white/80 leading-relaxed">{service.description}</p>
<div className="space-y-2">
{service.features.map((feature, idx) => (
<p key={idx} className="text-white/70 flex items-center">
<span className="w-1 h-1 bg-white/40 rounded-full mr-3"></span>
{feature}
</p>
))}
</div>
<p className="text-2xl font-bold text-white">{service.price}</p>
</div>
<Button
asChild
className="bg-white text-black hover:bg-white/90 !text-black px-8 py-4 text-lg font-medium tracking-wide transition-all duration-300 hover:scale-105"
>
<Link href="/book">BOOK NOW</Link>
</Button>
<div className="mt-8">
<div className="relative">
<img
src={`/abstract-geometric-shapes.png?height=250&width=300&query=${service.title.toLowerCase()} tattoo example`}
alt={service.title}
className="w-full max-w-xs h-auto object-cover rounded-lg shadow-2xl"
/>
<div className="absolute -bottom-2 -right-2 w-12 h-12 bg-white/5 rounded-lg"></div>
</div>
</div>
</div>
</div>
</CarouselItem>
))}
</CarouselContent>
<div className="flex justify-center mt-8 space-x-4">
<CarouselPrevious className="relative translate-y-0 left-0 bg-white/10 border-white/20 text-white hover:bg-white/20" />
<CarouselNext className="relative translate-y-0 right-0 bg-white/10 border-white/20 text-white hover:bg-white/20" />
</div>
</Carousel>
</div>
)
}