"use client"; import { useRef } from "react"; import { motion, Variants, useScroll, useTransform } from "framer-motion"; // تعریف Variants با انیمیشن‌های نرم‌تر و روان‌تر const containerVariants: Variants = { hidden: { opacity: 0, filter: "blur(8px)", // بلور اولیه کمی بیشتر برای حس نرم‌تر شدن }, visible: { opacity: 1, filter: "blur(0px)", transition: { duration: 1.2, // زمان طولانی‌تر برای محو شدن بلور when: "beforeChildren", staggerChildren: 0.15, // فاصله زمانی کمی بیشتر بین ورود هر خط }, }, }; const itemVariants: Variants = { hidden: { y: 30, opacity: 0 }, // شروع از فاصله کمی پایین‌تر visible: { y: 0, opacity: 1, transition: { duration: 1.2, // مدت زمان لغزش به بالا // این منحنی (easeOutExpo) راز انیمیشن‌های نرم سبک اپل است ease: [0.16, 1, 0.3, 1] as [number, number, number, number], }, }, }; export default function Hero() { const ref = useRef(null); // هوک‌ها برای افکت پارالاکس و محو شدن هنگام اسکرول const { scrollYProgress } = useScroll({ target: ref, offset: ["start start", "end start"], }); const y = useTransform(scrollYProgress, [0, 1], ["0%", "50%"]); const opacity = useTransform(scrollYProgress, [0, 0.8], [1, 0]); return (
{ // آپدیت متغیرهای CSS برای موقعیت موس جهت افکت نورافکن const { currentTarget, clientX, clientY } = e; const { left, top } = currentTarget.getBoundingClientRect(); currentTarget.style.setProperty("--mouse-x", `${clientX - left}px`); currentTarget.style.setProperty("--mouse-y", `${clientY - top}px`); }} > {/* لایه پس‌زمینه: نورافکن (Spotlight) */}
{/* لایه پس‌زمینه: خطوط گرید */}
{/* کانتینر اصلی محتوا */} توسعه نرم‌افزار با بالاترین کیفیت راهکارهای دیجیتال برای فردای شما ما با ترکیب خلاقیت و تکنولوژی‌های پیشرفته، نرم‌افزارهایی خلق می‌کنیم که نه تنها نیازهای امروز شما را برآورده می‌کنند، بلکه مسیر رشد آینده کسب‌وکار شما را هموار می‌سازند.
); }