"use client"; import { AnimatePresence, motion, useMotionValue, useSpring, } from "framer-motion"; import { useCallback, useRef, useState } from "react"; import { cn } from "@/lib/utils"; const projects = [ { title: "طراحی مقیاس‌پذیر", img: "/block-media/shadcnblocks/block/photos/simone-hutsch-9jsQcDsxyqA-unsplash.jpg", year: "۱۴۰۴", type: "محصول", }, { title: "رابط شهری رنگارنگ", img: "/block-media/shadcnblocks/block/lummi/bw17.jpeg", year: "۱۴۰۴", type: "اتوماسیون بازاریابی", }, { title: "داشبورد مینیمال لوکس", img: "/block-media/shadcnblocks/block/lummi/bw12.jpeg", year: "۱۴۰۴", type: "رابط کاربری", }, { title: "صفحه اصلی مینیمال", img: "/block-media/shadcnblocks/block/lummi/bw13.jpeg", year: "۱۴۰۴", type: "طراحی محصول", }, { title: "معماری فرانت‌اند", img: "/block-media/shadcnblocks/block/lummi/bw14.jpeg", year: "۱۴۰۴", type: "تم گرم و دنج", }, { title: "کامپوننت در بستر واقعی", img: "/block-media/shadcnblocks/block/lummi/bw16.jpeg", year: "۱۴۰۴", type: "مودال تأیید با بلاک Dialog", }, ]; interface Projects12Props { className?: string; } const Projects12 = ({ className }: Projects12Props) => { const [hoveredIndex, setHoveredIndex] = useState(null); const [isHovering, setIsHovering] = useState(false); const containerRef = useRef(null); const mouseX = useMotionValue(0); const mouseY = useMotionValue(0); const springX = useSpring(mouseX, { stiffness: 300, damping: 30, mass: 0.8, }); const springY = useSpring(mouseY, { stiffness: 300, damping: 30, mass: 0.8, }); const handleContainerMouseMove = useCallback( (e: React.MouseEvent) => { if (!containerRef.current) return; const containerRect = containerRef.current.getBoundingClientRect(); const x = e.clientX - containerRect.left; const y = e.clientY - containerRect.top; mouseX.set(x - 50); mouseY.set(y + 30); }, [mouseX, mouseY], ); const handleProjectMouseEnter = useCallback((index: number) => { setHoveredIndex(index); setIsHovering(true); }, []); const handleContainerMouseLeave = useCallback(() => { setHoveredIndex(null); setIsHovering(false); }, []); return (

گالری استودیو

{projects.map((project, index) => (
handleProjectMouseEnter(index)} > {project.title}

{project.title}

{project.year}

{project.type}

))} {isHovering && hoveredIndex !== null && (
کاوش
→
)}
); }; export { Projects12 };