import { useState, useEffect, useRef } from 'react'; import { motion } from 'framer-motion'; import { Box, Typography } from '@mui/material'; import { useInView } from 'react-intersection-observer'; import { Users, Shield, Lock, Download, Smartphone, QrCode, } from "lucide-react"; import { BorderBeam } from "../lightswind/border-beam"; import LazyImage from "../common/LazyImage"; import records1 from "../../assets/images/records-new-1.svg" import records2 from "../../assets/images/records-new-2.svg" import records3 from "../../assets/images/records-new-3.svg" import MatrimonySwipeCards from "../common/MatrimonySwipeCards"; const AppPromoteSection = () => { const [isVisible, setIsVisible] = useState(false); useEffect(() => { setIsVisible(true); }, []); const fadeInUp = { hidden: { opacity: 0, y: 60 }, visible: { opacity: 1, y: 0, transition: { duration: 0.6, ease: "easeOut" }, }, }; const staggerContainer = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.2, }, }, }; const scaleIn = { hidden: { opacity: 0, scale: 0.8 }, visible: { opacity: 1, scale: 1, transition: { duration: 0.5 }, }, }; const features = [ { icon: records1, title: "100% Screened Profiles", description: "Search by location, community, profession & more from lakhs of active profiles", color: "bg-pink-50 dark:bg-pink-900/20", }, { icon: records2, title: "Verifications by Personal Visit", description: "Special listing for profiles verified by our agents through personal visits", color: "bg-blue-50 dark:bg-blue-900/20", }, { icon: records3, title: "Control over Privacy", description: "Restrict unwanted access to contact details & photos/videos", color: "bg-purple-50 dark:bg-purple-900/20", }, ]; return ( <>
{/* Hero Section */}
{/* Background Image with Overlay */}
{/*
*/}
{/* Content */}
{/* Bringing People{" "} Together */} {/* Features Grid */} {features.map((feature, index) => (

{feature.title}

{feature.description}

))}
{/* App Download Section */}
{/* Left Content */}

Connect with your matches anytime, anywhere

Impress your matches with instant chats!

{/*
Match Hour */}

Thirukalyanam Match Hour

Register to join an online event to connect with members of your community in a short time

{/* Voice & Video Calling */}

Voice & Video Calling

Enjoy secure conversations using our voice & video calling services without revealing your number

{/* Introducing Video Profiles */}

Introducing Video Profiles

Stand out amongst others and engage faster! Introduce yourself by adding a video to your profile

{/* Right - Phone Mockup */}
{/* Stats Section */} {/* Stats Section with MUI Counter */}
{[ { number: 25, label: "Years of Trust" }, { number: 10000000, label: "Happy Users" }, { number: 100, label: "Verified Profiles" }, { number: 24, label: "Support" }, ].map((stat, index) => { const [ref, inView] = useInView({ threshold: 0.3, triggerOnce: true, delay: index * 100, }); const Counter = ({ endValue }) => { const [count, setCount] = useState(0); useEffect(() => { if (inView) { const duration = 2000; // 2 seconds const startTime = Date.now(); const animate = () => { const elapsed = Date.now() - startTime; const progress = Math.min(elapsed / duration, 1); const easeProgress = 1 - Math.pow(1 - progress, 3); // easeOut cubic const currentValue = Math.floor(easeProgress * endValue); setCount(currentValue); if (progress < 1) { requestAnimationFrame(animate); } else { setCount(endValue); } }; animate(); } }, [inView, endValue]); return ( {stat.number >= 1000000 ? `${(count / 1000000).toFixed(0)}M+` : stat.number === 100 ? `${count}%` : stat.number === 24 ? `${count}/7` : `+${count}` } ); }; return ( {stat.label} ); })}
); }; export default AppPromoteSection;