"use client"; import type { MotionValue } from "motion/react"; import { motion, useScroll, useTransform } from "motion/react"; import React, { useRef } from "react"; import { AuroraText } from "@/components/magicui/aurora-text"; import { cn } from "@/lib/utils"; interface Feature249Props { className?: string; } const Feature249 = ({ className }: Feature249Props) => { return ( با یادآورهای هوشمند و اولویتبندی سرنخ، زمان تیم روی معاملات با احتمال بیشتر صرف میشود و چرخه فروش کوتاهتر میشود. پیشبینی درآمد را دقیقتر کنید چرخه فروش را از سرنخ تا قرارداد در یک مسیر مشخص پیش ببرید > } > ); }; export { Feature249 }; // Below is the modified component from Aceternity UI // Original source: npx shadcn@latest add https://ui.aceternity.com/registry/container-scroll-animation.json // Modified to follow our coding standards and design system // We respect copyright and attribution to the original creators export const ContainerScroll = ({ titleComponent, children, }: { titleComponent: string | React.ReactNode; children: React.ReactNode; }) => { const containerRef = useRef(null); const { scrollYProgress } = useScroll({ target: containerRef, }); const [isMobile, setIsMobile] = React.useState(false); React.useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth <= 768); }; checkMobile(); window.addEventListener("resize", checkMobile); return () => { window.removeEventListener("resize", checkMobile); }; }, []); const scaleDimensions = () => { // Keep scale ≤ 1 so the 3D card never bleeds past the preview frame. return isMobile ? [0.7, 0.9] : [0.95, 1]; }; const rotate = useTransform(scrollYProgress, [0, 1], [20, 0]); const scale = useTransform(scrollYProgress, [0, 1], scaleDimensions()); const translate = useTransform(scrollYProgress, [0, 1], [0, -100]); return ( {children} ); }; export const Header = ({ translate, titleComponent, }: { translate: MotionValue; titleComponent: React.ReactNode; }) => { return ( {titleComponent} ); }; export const Card = ({ rotate, scale, children, }: { rotate: MotionValue; scale: MotionValue; translate: MotionValue; children: React.ReactNode; }) => { return ( {children} ); };
با یادآورهای هوشمند و اولویتبندی سرنخ، زمان تیم روی معاملات با احتمال بیشتر صرف میشود و چرخه فروش کوتاهتر میشود.