Commit f017b3f
committed
feat(gallery): justified, carousel, and slideshow layouts
Three new design.layout values, all driven by the existing items/resolver
infrastructure (no Hugo-side changes).
- justified: Flickr-style row-balanced layout. Each tile's flex-basis is
derived from its precomputed aspect ratio at the configured row_height,
flex-grow proportional to ratio so wider images claim more leftover
row space. Pure CSS, no JS layout math. New design.row_height field
(clamped 120-640, default 240). Last item capped at max-width: 50% so
a lonely last-row image doesn't stretch grotesquely.
- carousel: CSS scroll-snap-type: x mandatory horizontal strip. Touch
swipe is native; optional Preact prev/next arrows render on md+ only.
Per-breakpoint flex-basis driven by design.columns (mobile always
shows ~1 + peeking next). Full-bleed scroll via negative margins
matched by inner padding so the strip feels native at any width.
- slideshow: Single-image presentation with crossfade transitions, dots,
arrows, optional autoplay with pause-on-hover, touch swipe, and a
click-through to the lightbox at full resolution. New design.autoplay
(default false) and design.autoplay_interval (ms, min 1000, default
5000) fields. Aspect defaults to "wide" for presentational feel.
Test site adds three new demos pointing at the same album folder so
users can compare layouts side-by-side. Block bundle grows from 39KB
to 66KB; pages without a gallery still ship 0KB (init.html gating).1 parent bdd3820 commit f017b3f
3 files changed
Lines changed: 485 additions & 33 deletions
0 commit comments