ligonier-demo/app/ligonier/photo_gallery.tsx

35 lines
919 B
TypeScript

import { useLoaderData } from 'react-router';
import { useState } from 'react';
import { Header } from './header';
import { Footer } from './footer';
import { PhotoCard } from './photo_card';
export function PhotoGallery() {
const imageData = useLoaderData();
const [isGallery, setGallery] = useState(false);
return (
<div>
<Header isGallery={isGallery} handleClick={()=> setGallery(!isGallery)} />
<Photos
imageData={imageData}
isGallery={isGallery}
/>
<Footer />
</div>
);
}
function Photos({ imageData, isGallery}) {
const listClassNames = "flex flex-wrap"
const galleryClassNames = "grid md:grid-cols-2 xl:grid-cols-3"
const photoCards = imageData.map(image =>
<PhotoCard
key={image.id}
data={image}
/>);
return (
<div className={`${isGallery ? galleryClassNames : listClassNames} md:m-20 md:mt-10 m-10 gap-10 mt-10 xl:ml-50 xl:mr-50`}>
{photoCards}
</div>
);
}