import { type Image } from "../build"; interface YearPhotosProps { year: string; images: Image[]; } export default function YearPhotos({ year, images }: YearPhotosProps) { return ( <div className="hidden"> <h2 className="text-2xl font-bold xl:text-3xl 2xl:text-4xl inter-semibold mb-4"> {year} </h2> <div className="grid grid-cols-2 lg:grid-cols-5 xl:grid-cols-7 grid-flow-row-dense gap-2" id={`gallery-${year}`} data-type="gallery" data-year={year} > {images.map((image) => { const aspectRatio = image.width / image.height; const date = new Date(image.date); const fmtDate = `${date.getDate()}/${(date.getMonth() + 1) .toString() .padStart(2, "0")}/${date.getFullYear()}`; aspectRatio < 0.95 ? image.tags.push("portrait") : aspectRatio > 1.05 ? image.tags.push("landscape") : image.tags.push("square"); return ( <a href={image.image} className={`w-full h-full hidden relative min-h-[228px] ${ aspectRatio < 0.95 ? "" : aspectRatio > 1.05 ? "lg:[grid-column:span_2]" : "aspect-square" }`} key={`${year}-${image.id}`} data-slide-name={image.id} data-src={image.thumbnail[1024]} data-srcset={`${image.thumbnail[512]} 512w, ${image.thumbnail[1024]} 1024w, ${image.thumbnail[2048]} 2048w`} data-sizes="(max-width: 1281x) 512px, (max-width: 2400px) 1024px, 2048px" data-download-url={image.image} data-type="image" data-tags={image.tags.join(",")} data-facebook-text={image.alt || "Photo by @radiquum"} data-pinterest-text={image.alt || "Photo by @radiquum"} data-tweet-text={image.alt || "Photo by @radiquum"} data-reddit-text={image.alt || "Photo by @radiquum"} data-bsky-text={image.alt || "Photo by @radiquum.wah.su"} data-ms-text={image.alt || "Photo by @radiquum@furry.engineer"} data-facebook-share-url={image.image} data-twitter-share-url={image.image} data-pinterest-share-url={image.image} data-reddit-share-url={image.image} data-bsky-share-url={image.image} data-ms-share-url={image.image} > <img src={image.thumbnail[512]} srcSet={`${image.thumbnail[512]} 512w, ${image.thumbnail[1024]} 1024w, ${image.thumbnail[2048]} 2048w`} sizes="(max-width: 1281px) 512px, (max-width: 2400px) 1024px, 2048px" className="w-full h-full object-cover rounded-sm" loading="lazy" alt={image.alt} /> <div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/75 to-95% to-transparent pt-8 p-2 invisible" data-overlay="true"> <div className="flex flex-col md:flex-row md:items-center md:gap-2 text-gray-200 text-xs lg:text-sm"> <div> {image.width}x{image.height} </div> <div>{fmtDate}</div> </div> </div> </a> ); })} </div> </div> ); }