"use client"; import Image from "next/image"; import Link from "next/link"; import { useEffect, useRef, useState } from "react"; import { BLACK_ITEMS } from "@/data/home"; import BilingualTitle from "@/components/ui/BilingualTitle"; export type BlackItemData = { id: string; image: string; alt: string; nameFa: string; nameEn: string; href: string; }; type BlackCollectionProps = { items?: BlackItemData[]; }; export default function BlackCollection({ items }: BlackCollectionProps) { const list: BlackItemData[] = items?.length ? items : BLACK_ITEMS.map((item) => ({ id: item.id, image: item.image, alt: item.alt, nameFa: item.nameFa, nameEn: item.nameEn, href: `/products?color=black&item=${item.id}`, })); const ref = useRef(null); const [visible, setVisible] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) { setVisible(true); return; } const io = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { setVisible(true); io.disconnect(); } }, { threshold: 0.15, rootMargin: "0px 0px -6% 0px" }, ); io.observe(el); return () => io.disconnect(); }, []); return (
); }