"use client"; import "swiper/css"; import "swiper/css/effect-creative"; import "swiper/css/pagination"; import "swiper/css/autoplay"; import { AnimatePresence, motion, useAnimation, useInView, } from "framer-motion"; import { useEffect, useId, useRef, useState } from "react"; import React from "react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; interface Hero212Props { className?: string; } const Hero212 = ({ className }: Hero212Props) => { const images = [ { src: "/block-media/shadcnblocks/block/lummi/bw3.jpeg", alt: "تصویر نمونه", name: "Joanna Doe", }, { src: "/block-media/shadcnblocks/block/lummi/bw4.jpeg", alt: "تصویر نمونه", name: "مریم چناری", }, { src: "/block-media/shadcnblocks/block/lummi/bw5.jpeg", alt: "تصویر نمونه", name: "Joanna Doe", }, { src: "/block-media/shadcnblocks/block/lummi/bw6.jpeg", alt: "تصویر نمونه", name: "Joan Doe", }, { src: "/block-media/shadcnblocks/block/lummi/bw11.jpeg", alt: "تصویر نمونه", name: "Joan Doe", }, ]; const [currentIndex, setCurrentIndex] = useState(0); useEffect(() => { const timer = setTimeout(() => { setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length); }, 2500); return () => clearTimeout(timer); }, [currentIndex, images.length]); return (

صدها بلاک و کامپوننت آماده مبتنی بر رابط کاربری، استایل‌دهی مدرن و ری یو آی

تجربه‌ای متفاوت خلق کنید

{/* RTL: sit to the left of the button so handwriting doesn't cover it */}

همین امروز نسخه رایگان را امتحان کنید

); }; export { Hero212 }; interface MarqueeProps { className?: string; reverse?: boolean; pauseOnHover?: boolean; children?: React.ReactNode; vertical?: boolean; repeat?: number; [key: string]: unknown; } function Marquee({ className, reverse, pauseOnHover = false, children, vertical = false, repeat = 4, ...props }: MarqueeProps) { return (
{Array(repeat) .fill(0) .map((_, i) => (
{children}
))}
); } function Card() { const id = useId(); const controls = useAnimation(); const ref = useRef(null); const inView = useInView(ref, { once: true }); useEffect(() => { if (inView) { controls.start({ opacity: 1, transition: { delay: Math.random() * 2, ease: "easeOut", duration: 1 }, }); } }, [controls, inView]); return ( ); } export function SkiperUiMarquee() { return (
{Array.from({ length: 10 }).map((_, idx) => (
{Array.from({ length: 5 }).map((_, idx) => ( ))}
))}
); }