MasonryGrid.tsx
1013 Bytes
import React from 'react';
import { ImageItem } from '../types';
import ImageCard from './ImageCard';
interface MasonryGridProps {
images: ImageItem[];
onImageClick: (image: ImageItem) => void;
onLike: (image: ImageItem) => void;
currentUser?: string;
}
const MasonryGrid: React.FC<MasonryGridProps> = ({ images, onImageClick, onLike, currentUser }) => {
return (
<div className="w-full px-4 md:px-8 py-6">
<div className="columns-2 md:columns-3 lg:columns-4 xl:columns-5 gap-4 space-y-4">
{images.map((img) => (
<ImageCard
key={img.id}
image={img}
onClick={onImageClick}
onLike={onLike}
currentUser={currentUser}
/>
))}
</div>
{images.length === 0 && (
<div className="flex flex-col items-center justify-center h-64 text-gray-400">
<p>暂无图片,快来生成第一张吧!</p>
</div>
)}
</div>
);
};
export default MasonryGrid;