Skip to main content
grant.is/
    • writing
    • projects
    • series
    • equipment
    • instagram

    Theme Lab

    Component gallery

    Real partials, real front-matter, real fixtures. Every card below is rendered with the same inputs we use on the live site so you can preview, compare, and copy/paste the payloads without maintaining screenshots.

    Series badges

    Reticle badges driven by the post header’s series strings, slug-aware tint swaps, and spacing tokens so legends stay readable.

    Series badge — On Self

    Single token

    Default reticle with corner brackets for short labels.

    [ OnSelf ]
    Partial: styleguide/series-badge
    headerStyle: "max"
    series:
      - "On Self"
    

    Series badge — Downloads & Attachments

    Multi-word reticle

    Longer strings split around the reticle so the badge stays centered.

    [ Downloads&Attachments ]
    Partial: styleguide/series-badge
    headerStyle: "max"
    series:
      - "Downloads & Attachments"
    

    Series badge — Museum Archives

    Slug-driven tint

    Slug-specific modifiers can adjust corner colors when needed.

    [ MuseumArchives ]
    Partial: styleguide/series-badge
    headerStyle: "max"
    series:
      - "Museum Archives"
    

    Download blocks

    Download slots and gallery buttons that ship inside the hero masthead; every row here mirrors the data object the partial expects.

    Download block — Article + Images

    PDF + ZIP

    Pairs article and image downloads with matching icon/note text.

    ArticlePDF ImagesZIP
    Partial: styleguide/download-block
    headerStyle: "max"
    downloadArticle: "/downloads/2025-grant-essay.pdf"
    downloadImages: "/downloads/2025-grant-images.zip"
    

    Download block — Gallery + Action

    Button state

    Inline call-to-action blends a gallery button with supplementary text.

    ManualPDF
    Partial: styleguide/download-block
    headerStyle: "max"
    gallery: true
    downloadArticle: "/downloads/2025-lab-manual.pdf"
    

    Metadata rows

    Switch between hero metadata, location pins, TL;DR grids, and read-time attachments without touching a live post.

    Metadata row — Hero baseline

    Date + reading time

    Standard hero metadata row with reading time and word count.

    Nov 10, 2025 8 min 1480 words
    Partial: styleguide/meta-row
    headerStyle: "max"
    date: 2025-11-10
    readingTime: 8
    wordCount: 1480
    

    Metadata row — Location + TL;DR

    Place + notes

    Adds location and TL;DR list beneath the hero row.

    Jul 1, 2025 5 min 980 words Santa Barbara & Zug

    TL;DR

    • Cover-to-cover reading: 8 min
    • Playful listening cards ahead
    Partial: styleguide/meta-row
    headerStyle: "max"
    date: 2025-07-01
    readingTime: 5
    wordCount: 980
    location: "Santa Barbara & Zug"
    tldr:
      - "Cover-to-cover reading: 8 min"
      - "Playful listening cards ahead"
    

    Listening cards

    Now-playing cards that hydrate artwork + metadata from front matter (or fall back to placeholders).

    Listening card — Track + album

    Dataset-driven

    Pulls artist/title/album from front matter for lightweight now-playing blocks.

    Listening while writing

    Meteorite

    Anna of the North · Crazy Life

    Partial: listening-card.html
    listening:
      artist: "Anna of the North"
      title: "Meteorite"
      album: "Crazy Life"
    

    Listening card — Track only

    Minimal payload

    Smallest footprint: artist + title only; falls back to placeholder art.

    Listening while writing

    Propagation

    Com Truise

    Partial: listening-card.html
    listening:
      artist: "Com Truise"
      title: "Propagation"
    

    Avatars

    Token-driven avatar sizes, rings, and stacks for profile treatments.

    Avatars — Sizes & rings

    Tokens

    Small/medium/large avatars with muted, interactive, and strong rings.

    Avatars & Profile Treatments

    Profile small
    Profile medium
    Gradient ring avatar
    Experimental hover avatar

    Tokens

    --avatar-size-sm · --avatar-size-md · --avatar-size-lg
    --avatar-ring-width · --avatar-ring-color · --avatar-ring-exp
    Stacked avatar 1
    Stacked avatar 2

    Stack spacing offsets + ring swap for mixed identities.

    <div class="avatar avatar--lg avatar--interactive">
      <img src="/images/profile.jpg" alt="Profile"/>
    </div>
    <div class="avatar-stack">...</div>
    Partial: styleguide/avatars.html
    # Avatars use image paths + tokenized sizes/rings
    avatarSizes: [sm, md, lg]
    avatarRings: [muted, interactive, strong]
    

    Avatar placeholders — Guilloché seeds

    Generated

    Canvas guillochés act as deterministic placeholders when profile images are missing.

    Guilloché placeholders

    Aria
    Bennett Labs
    Celeste · Archives

    Deterministic canvases stay consistent per seed; swap in when profile art is missing.

    Partial: styleguide/avatar-placeholders.html
    # Deterministic placeholders keyed to strings
    placeholderSeeds: [&#34;Aria&#34;, &#34;Bennett Labs&#34;, &#34;Celeste · Archives&#34;]
    

    Quotes

    Styled pull quotes using the site’s serif face and attribution.

    Quote — Serif pull

    Content

    Pull-quote with serif body and italic attribution, matching the on-page shortcode styling.

    In photography there is a reality so subtle that it becomes more real than reality.

    — Alfred Stieglitz 🔗
    Partial: styleguide/quote.html

    Pictures with Words

    Isolated PW building blocks (hero, rail, masonry, spread, filmstrip, anchor nav) rendered from the live demo bundle so tweaks stay in sync.

    PW Hero

    Centered

    Full-bleed hero with palette overlay pulled from the demo bundle.

    hero-1.jpg

    Pictures with Words

    Pictures with Words Demo Manifest

    How to assemble image-heavy stories with Hugo’s resource pipeline, responsive AVIF/WebP/JPEG outputs, and EXIF-aware overlays.

    Partial: pw/component-hero.html

    Image rail

    6-up scroll

    Scrollable thumb rail with section jump links and progress pill.

    Image rail Tap a frame to jump to that section
    Progress 0%
    masonry/masonry-1.jpg masonry/masonry-2.jpg masonry/masonry-3.jpg masonry/masonry-4.jpg masonry/masonry-5.jpg masonry/masonry-6.jpg
    Partial: pw/component-rail.html

    Masonry wall

    3 cols

    Masonry shortcode rendered against the demo bundle images.

    masonry/masonry-1.jpg
    masonry/masonry-1.jpg
    masonry/masonry-2.jpg
    masonry/masonry-2.jpg
    masonry/masonry-3.jpg
    masonry/masonry-3.jpg
    masonry/masonry-4.jpg
    masonry/masonry-4.jpg
    masonry/masonry-5.jpg
    masonry/masonry-5.jpg
    masonry/masonry-6.jpg
    masonry/masonry-6.jpg
    Partial: pw/component-masonry.html

    Staggered spread

    Triptych

    Staggered trio spread for mid-story emphasis.

    spread-1.jpg
    spread-1.jpg
    spread-2.jpg
    spread-2.jpg
    spread-3.jpg
    spread-3.jpg
    A staggered trio for mid-story emphasis.
    Partial: pw/component-spread.html

    Filmstrip

    440px rail

    Horizontal reel with snap points and lightbox hooks.

    filmstrip/filmstrip-1.jpg
    filmstrip/filmstrip-1.jpg
    filmstrip/filmstrip-2.jpg
    filmstrip/filmstrip-2.jpg
    filmstrip/filmstrip-3.jpg
    filmstrip/filmstrip-3.jpg
    filmstrip/filmstrip-4.jpg
    filmstrip/filmstrip-4.jpg

    Drag or scroll horizontally; each frame is AVIF/WebP with JPEG fallback.

    Swipe to explore
    Partial: pw/component-filmstrip.html

    Anchor nav

    Inline chips

    TOC-driven chip nav used under the hero.

    Jump to
    Partial: pw/component-anchor-nav.html
    © 2025 grant.is/