// pages/gallery.jsx — Gallery with category filter function GalleryPage() { const { t, lang } = useApp(); const [active, setActive] = useState(0); const [lightbox, setLightbox] = useState(null); // Real photo pool. Category index: 0 All · 1 Rooms · 2 Common · 3 Kraków. // Files live under project/images/{rooms/,hostel,krakow}/. const R = "images/rooms/", K = "images/krakow/", H = "images/hostel/"; const images = [ { cat: 1, src: R + "comfort-2/01.jpg", pl: "Pokój Comfort", en: "Comfort room" }, { cat: 2, src: H + "kitchen.jpg", pl: "Wspólna kuchnia", en: "Shared kitchen" }, { cat: 1, src: R + "standard-1/01.jpg", pl: "Pokój Standard", en: "Standard room" }, { cat: 3, src: K + "rynek-aerial.jpg", pl: "Rynek Główny", en: "Main Square" }, { cat: 1, src: R + "comfort-2/02.jpg", pl: "Pokój Comfort · detal", en: "Comfort room · detail" }, { cat: 1, src: R + "standard-1/02.jpg", pl: "Pokój Standard", en: "Standard room" }, { cat: 3, src: K + "old-town-street.jpg", pl: "Stare Miasto", en: "Old Town" }, { cat: 1, src: R + "comfort-1/01.jpg", pl: "Pokój Comfort I", en: "Comfort room I" }, { cat: 1, src: R + "standard-2/01.jpg", pl: "Pokój Standard II", en: "Standard room II" }, { cat: 3, src: K + "wawel-dusk.jpg", pl: "Wawel o zmierzchu", en: "Wawel at dusk" }, { cat: 1, src: R + "comfort-2/03.jpg", pl: "Pokój Comfort", en: "Comfort room" }, { cat: 1, src: R + "standard-1/03.jpg", pl: "Pokój Standard", en: "Standard room" }, { cat: 3, src: K + "mariacka.jpg", pl: "Bazylika Mariacka", en: "St. Mary's Basilica" }, { cat: 1, src: R + "comfort-2/04.jpg", pl: "Prywatna łazienka", en: "Private bathroom" }, { cat: 1, src: R + "comfort-1/02.jpg", pl: "Pokój Comfort I", en: "Comfort room I" }, { cat: 3, src: K + "old-town-carriage.jpg", pl: "Stare Miasto · dorożka", en: "Old Town · carriage" }, { cat: 1, src: R + "comfort-2/05.jpg", pl: "Pokój Comfort", en: "Comfort room" }, { cat: 1, src: R + "standard-1/04.jpg", pl: "Pokój Standard", en: "Standard room" }, { cat: 3, src: K + "wawel-aerial.jpg", pl: "Wawel z lotu ptaka", en: "Wawel from above" }, { cat: 1, src: R + "standard-2/02.jpg", pl: "Pokój Standard II", en: "Standard room II" }, { cat: 1, src: R + "comfort-2/06.jpg", pl: "Pokój Comfort", en: "Comfort room" }, { cat: 3, src: K + "wawel-cathedral.jpg", pl: "Katedra na Wawelu", en: "Wawel Cathedral" }, { cat: 3, src: K + "wawel-vistula.jpg", pl: "Wawel nad Wisłą", en: "Wawel over the Vistula" }, { cat: 3, src: K + "wawel-dusk-portrait.jpg", pl: "Wawel o zmierzchu", en: "Wawel at dusk" }, ]; const label = (im) => (lang === "pl" ? im.pl : im.en); const filtered = images.filter((im) => active === 0 || im.cat === active); return (
{t.gallery.eyebrow}

{t.gallery.title}

{t.gallery.body}

{t.gallery.cats.map((c, i) => ( ))}
{/* Uniform responsive grid — equal 4:3 tiles, columns auto-fill the width, so rows always align and there is no ragged negative space. */}
{filtered.map((im, i) => ( ))}
{lightbox && (
setLightbox(null)} style={{ position: "fixed", inset: 0, background: "rgba(15,12,10,.88)", backdropFilter: "blur(8px)", zIndex: 1000, display: "grid", placeItems: "center", padding: 40, cursor: "zoom-out", }}>
{label(lightbox)} · Long Street Aparthostel
)}
); } Object.assign(window, { GalleryPage });