"use client"; import { motion } from "framer-motion"; import { useEffect, useMemo, useState } from "react"; import { cn } from "@/lib/utils"; interface GalleryImage { src: string; alt: string; className: string; } interface Gallery30Props { className?: string; } const IMAGES: GalleryImage[] = [ { src: "/block-media/shadcnblocks/block/guri3/img2.jpeg", alt: "پرتره خلاقانه در فضای شهری", className: "md:w-50 size-47 rotate-7 md:rotate-0 z-1 absolute md:-left-10 md:bottom-1/4 lg:left-0 md:h-72", }, { src: "/block-media/shadcnblocks/block/guri3/img11.jpeg", alt: "عکس هنری با نور طبیعی", className: "md:w-38 size-47 -rotate-7 md:rotate-0 z-1 md:left-1/5 md:h-45 absolute md:-top-10", }, { src: "/block-media/shadcnblocks/block/guri3/img6.jpeg", alt: "ترکیب‌بندی مدرن در استودیو", className: "md:w-50 size-45 z-1 md:right-2/5 absolute md:-top-40 md:h-52", }, { src: "/block-media/shadcnblocks/block/guri3/img5.jpeg", alt: "پرتره با پس‌زمینه مینیمال", className: "hidden md:block size-40 z-1 md:-top-42 md:h-42 absolute md:-right-10 md:w-60", }, { src: "/block-media/shadcnblocks/block/guri3/img7.jpeg", alt: "عکاسی فشن در فضای باز", className: "md:w-55 hidden md:block z-1 top-1/5 md:h-65 md:absolute -right-10 lg:right-28", }, { src: "/block-media/shadcnblocks/block/guri3/img14.jpeg", alt: "صحنه خلاقانه با نورپردازی نرم", className: "md:w-50 hidden md:block z-1 md:h-78 md:absolute -bottom-5 -right-40", }, { src: "/block-media/shadcnblocks/block/guri3/img13.jpeg", alt: "پرتره هنری با کنتراست بالا", className: "hidden md:block z-1 right-1/5 md:absolute -bottom-1/4 md:h-48 md:w-60", }, { src: "/block-media/shadcnblocks/block/guri3/img12.jpeg", alt: "عکس تبلیغاتی با استایل مدرن", className: "hidden md:block z-1 right-3/5 -bottom-1/6 md:absolute md:h-48 md:w-60", }, ]; const shuffleImages = (images: GalleryImage[]) => [...images] .sort(() => Math.random() - 0.5) .map((image) => ({ ...image, delay: Math.random() * 0.4, })); const Gallery30 = ({ className }: Gallery30Props) => { const images = useMemo(() => IMAGES, []); const [shuffledImages, setShuffledImages] = useState(() => shuffleImages(images), ); useEffect(() => { setShuffledImages(shuffleImages(images)); }, [images]); return (

بلاک‌های اختصاصی ری یو آی

مجموعه‌ای از بلاک‌های طراحی‌شده با دقت برای ساخت رابط‌های مدرن، سریع و چشم‌نواز. هر المان برای الهام و سرعت در پروژه‌های شما آماده شده است.

{shuffledImages.map((image) => ( {image.alt} ))}
); }; const Illustration = () => { return (
); }; export { Gallery30 };