"use client"; import { motion } from "framer-motion"; import { useState, useRef } from "react"; const results = [ { id: 1, name: "Facial Skin Transformation", beforeImg: "https://minio-api.nodecrew.me/saleor/marketing/use_case_2.webp", afterImg: "https://minio-api.nodecrew.me/saleor/marketing/use_case_2_1.webp", timeline: "4-6 Weeks", rating: 5, reviewCount: 2847, }, { id: 2, name: "Skin Radiance Transformation", beforeImg: "https://minio-api.nodecrew.me/saleor/marketing/use_case_3.webp", afterImg: "https://minio-api.nodecrew.me/saleor/marketing/use_case_3_1.webp", timeline: "6-8 Weeks", rating: 5, reviewCount: 1856, }, ]; function BeforeAfterSlider({ result }: { result: typeof results[0] }) { const [sliderPosition, setSliderPosition] = useState(50); const containerRef = useRef(null); const handleMouseMove = (e: React.MouseEvent) => { if (!containerRef.current) return; const rect = containerRef.current.getBoundingClientRect(); const x = ((e.clientX - rect.left) / rect.width) * 100; setSliderPosition(Math.max(0, Math.min(100, x))); }; const handleTouchMove = (e: React.TouchEvent) => { if (!containerRef.current) return; const rect = containerRef.current.getBoundingClientRect(); const x = ((e.touches[0].clientX - rect.left) / rect.width) * 100; setSliderPosition(Math.max(0, Math.min(100, x))); }; return (
{/* Before/After Slider */}
{/* After Image */} After - Smooth skin {/* Before Image (clipped) */}
Before - Wrinkled skin
{/* Slider Handle */}
{/* Labels */}
BEFORE
AFTER
{/* Timeline and Rating */}
{result.timeline}
{[1, 2, 3, 4, 5].map((star) => ( ))}
({result.reviewCount.toLocaleString()})
{/* Verified Badge */}
Verified
); } export default function BeforeAfterGallery() { const [selectedIndex, setSelectedIndex] = useState(0); const goToPrev = () => { setSelectedIndex(prev => prev === 0 ? results.length - 1 : prev - 1); }; const goToNext = () => { setSelectedIndex(prev => prev === results.length - 1 ? 0 : prev + 1); }; return (
Real Results

See the Transformation

{/* Desktop: Two transformations side by side */}
{results.map((result, index) => ( ))}
{/* Mobile: Carousel with one transformation at a time */}
{/* Carousel Navigation */} {/* Dot Indicators */}
{results.map((_, index) => (
{/* CTA */} Start Your Transformation
); }