"use client"; import { JustifiedImage, justifyPortfolioImages, } from "@/utils/justifyPortfolioImages"; import { useEffect, useRef, useState } from "react"; import { ImageCard } from "./ImageCard"; interface Props { images: JustifiedImage[]; rowHeight?: number; gap?: number; } export function JustifiedGallery({ images, rowHeight = 200, gap = 4 }: Props) { const containerRef = useRef(null); const [containerWidth, setContainerWidth] = useState(1200); const [rows, setRows] = useState([]); useEffect(() => { if (!containerRef.current) return; const observer = new ResizeObserver(([entry]) => { setContainerWidth(entry.contentRect.width); }); observer.observe(containerRef.current); return () => observer.disconnect(); }, []); useEffect(() => { const newRows = justifyPortfolioImages(images, containerWidth, rowHeight, gap); setRows(newRows); }, [images, containerWidth, rowHeight, gap]); return (
{rows.length === 0 && (

No images to display

)} {rows.map((row, i) => (
{row.map((img) => (
))}
))}
); }