Skip to content

Rebuild buttonkin-games with Chobble Template blocks layout#1

Merged
stefan-burke merged 10 commits into
mainfrom
claude/rebuild-buttonkin-blocks-xdTsS
Apr 17, 2026
Merged

Rebuild buttonkin-games with Chobble Template blocks layout#1
stefan-burke merged 10 commits into
mainfrom
claude/rebuild-buttonkin-blocks-xdTsS

Conversation

@stefan-burke
Copy link
Copy Markdown
Member

Summary

Rebuilds the Button Kin site into the new Chobble Template blocks-layout format, migrating content from the existing buttonkin repo.

The 5 requested snippets (composed of design-system blocks)

All live in snippets/ and are reused throughout the site via the snippet block type:

  • footer-content.md — contact-form block + socials snippet reference. The template renders this at the end of <main> on every page.
  • socials.mdicon-links block listing email, newsletter, RSS, Itch, Bluesky, Medium, Tumblr, Instagram.
  • recent-blog-posts.md — horizontal items block over the news collection.
  • featured-games.mditems block over the new games collection, filtered by data.featured == true.
  • upcoming-events.mditems block over the upcomingEvents collection.

Pages

URL File Notes
/ pages/home.md New-game hero (Jude's World), intro, featured games, newsletter signup embed, recent blog posts, upcoming events
/releases/ pages/releases.md Index of the games collection
/releases/{game}/ games/*/index.md One page per game, rebuilt with hero + split-image + split-video + stats + cta blocks
/blog/ pages/blog.md News archive
/services/ + /services/layout/ + /services/writing/ pages/services*.md PLACEHOLDER TEXT
/events/ + /events/past/ pages/events*.md Main events page + past events archive
/media/ + /media/streams/ + /media/playthroughs/ + /media/press/ pages/media*.md PLACEHOLDER TEXT except playthroughs (YouTube embeds from existing content)
/about/ pages/about.md Migrated from existing about page
/contact/ pages/contact.md Contact form + socials

Content migrated from the old repo

  • 6 games → games/ collection (Jude's World, Drama Llamas, Bumbling, Caltrop Kaiju, Psychic Night School, Righteous Jaunt)
  • 32 newsletter posts → news/ collection
  • About copy, socials, images (press kits, logos, newsletter images), PDFs

New content

  • games/games.json — new collection config (tags: games, permalink /releases/{slug}/)
  • news/news.json — wired up with navigationParent: "Blog"
  • _data/social-icons.json — adds Bluesky, Email, Itch, Medium, Tumblr icons used by site.socials
  • .pages.yml — adds a games collection for CMS editing
  • _data/site.json / _data/meta.json — updated for Button Kin details

Navigation (via eleventyNavigation)

  • Home → Releases (Jude's World, Drama Llamas) → Blog → Services (Layout, Writing) → Events (Past Events) → About → Media (Streams, Playthroughs, Press) → Contact

Where content is missing

Per instruction, sections with no existing content use literal PLACEHOLDER TEXT rather than invented copy — Services pages, Media/Streams, Media/Press reviews, and the body copy of the Conventions/Online Games/Past Event placeholder events under events/.

Test plan

  • CI build succeeds in GitHub Actions (Eleventy merges template + content)
  • / renders with all 6 homepage sections (hero, intro, featured games, newsletter, blog, events)
  • The 5 snippets render in their expected places (featured-games on home + about, socials in footer-content + about + contact, upcoming-events on home + events, recent-blog-posts on home)
  • footer-content snippet's contact-form renders on every page
  • Each game page renders with hero + content blocks + CTA
  • Nav dropdowns show Releases → Jude's World/Drama Llamas, Services → Layout/Writing, Events → Past Events, Media → Streams/Playthroughs/Press
  • News posts are reachable from /blog/ and show in recent-blog-posts snippet
  • Social icons (Bluesky, Medium, Tumblr, Itch) render in the footer

https://claude.ai/code/session_01Cpc5nwayCYvfafPhueEd3G

claude added 10 commits April 16, 2026 15:20
Migrates content from the existing buttonkin.com repo into the new
blocks-based page structure. The five core snippets
(footer-content, socials, recent-blog-posts, featured-games,
upcoming-events) are composed entirely of design-system blocks and
reused via the snippet block type throughout the site.

Content migrated:
- Six games (Jude's World, Drama Llamas, Bumbling, Caltrop Kaiju,
  Psychic Night School, Righteous Jaunt) rebuilt as blocks-layout pages
  under a new 'games' collection mounted at /releases/
- 32 newsletter posts moved to the 'news' collection, now surfaced as
  the Blog archive at /blog/
- About page rebuilt from existing copy; images and PDFs copied over

Pages added with PLACEHOLDER TEXT where content doesn't yet exist:
Services (Layout, Writing), Events (main + past), Media (Streams,
Playthroughs, Press), Contact

Navigation uses eleventyNavigation with dropdowns for Releases
(Jude's World, Drama Llamas), Services, Events and Media.
- Add _data/config.json with cart_mode: null so template doesn't
  require stripe-checkout/order-complete pages we don't need
- Swap {% render "youtube.html" %} liquid includes in the
  Jude's World launch newsletter post for plain iframe embeds
  (the template no longer ships that include)
- Prefix game image paths with src/ so the template's
  normalizeImagePath resolves them at src/games/... rather than
  src/images/games/... (which doesn't exist)
- Vendor the placeholder SVGs from the template at
  images/placeholders/ so news posts without thumbnails render
  instead of crashing on the missing placeholder images
The template's `src/assets/icons/iconify/` already ships with a
set of cached hugeicons SVGs; anything else has to be fetched
from the Iconify API at build time. The CI build failed fetching
icons that weren't in the cache (newspaper, layers-01, file-01,
play-circle, live-streaming-02, news, pencil-edit-02 etc.).

Replace every icon reference with one already cached in the
template so the build is fully offline for iconify lookups:

- socials.md: newspaper→book-02, simple-icons:*→hugeicons
  equivalents (gears for itch, global for bluesky, note-edit
  for medium, tag-01 for tumblr)
- services.md: layers-01→image-02, pencil-edit-02→note-edit
- media.md: live-streaming-02→youtube, play-circle→image-02,
  news→book-02
- media-press.md + drama-llamas: file-01→pdf-02
- _data/social-icons.json: switch the custom keys (bluesky,
  itch, medium, tumblr, email) to hugeicons from the cache too

Verified the full build pipeline (ci-merge + bun install + eleventy)
runs clean locally on a fresh template clone.
Extracted the colours, fonts, shadows, and border styling from the
old Button Kin site's src/css/style.scss and mapped them onto the
Chobble design-system's CSS custom properties:

- --color-bg / --body-background: #f6d9e1 (light pink)
- --body-background-alt: slightly darker pink for alt sections
- --color-link: #923a52 (dark pink)
- --color-link-hover / --color-secondary: #004d3b (dark green)
- --color-accent: #b35b72 (the old shop-button mid pink)
- --color-tint: #fff0f4 for icon/badge backgrounds
- --font-family-heading: Calistoga (loaded from Google Fonts),
  the same display face the old site used
- --font-family-body: the old condensed sans stack
  (AvenirNext → HelveticaNeue-CondensedBold → Ubuntu Condensed
   → Arial Narrow → sans-serif)
- Softer shadow scale (--shadow-sm / --shadow-md / --box-shadow)
  and --border: 2px solid #f6d9e1 matching the old spec-card
- Dark-section palette recoloured to deep-green + cream so dark
  blocks still feel like the Button Kin brand
- --list-marker: a pink ✦ instead of the default bullet
The old site kept these under /adventures/; they're now part of
the single games collection so they show up under /releases/
alongside the six main games.

D&D 5e adventures:
- A Fey Mystery of Glen Dourn (featured)
- The Tillvayle Committee
- Red Gold
- Bardic Origins: The Storied Bastion
- Bardic Origins: The Lyric Grove
- Bardic Origins: Timbrel Sleet's Intrepid Players

Drama Llamas postcard one-shots:
- Beach Bar-a-Llama
- Flora and Llama
- Llama Warrior

Each page follows the same blocks recipe as the existing games:
hero with external buy buttons, section-header / split-image for
the body copy, stats for system/players/play-time, features for
reviews when available, cta at the bottom. Images (covers, maps,
character portraits, thumbs) copied across and referenced with
src/ paths so the template resolves them correctly.
Homepage:
- Move the intro under the hero into a split-image block so Yvris's
  convention photo (images/alex.jpg) sits beside the text

Releases:
- Tag Bumbling as featured (it joins Drama Llamas and Jude's World
  in the featured-games snippet) and add it to the navigation
  dropdown alongside the other two
- Swap the 150x120 thumbnails for the much higher-resolution product
  photos (~2000px square) where the old assets repo had one, or for
  the cover.png where it didn't (a-fey-mystery-of-glen-dourn,
  psychic-night-school)
- Restore the per-release Buy Direct image-cards block from the
  original `products` frontmatter (one card per product photo with
  price + direct Stripe checkout link)
- Restore the itch.io widget iframe from the original `itch_widget`
  frontmatter as an html block on the 9 releases that had one
- Bardic Origins series + Red Gold keep the small thumbs because the
  old repo only ever had 150x120 images for them

Blog:
- For each post that contained an image, set frontmatter `thumbnail`
  to the first /images/newsletter/* image found in the body, so the
  news listing cards stop using placeholder colour swatches
The template just gained two first-class blocks we can now lean on:

- iframe-embed: a proper iframe block with src, title, aspect_ratio,
  max_width, sandbox, allow — replaces our hand-rolled
  `<div class="iframe-container"><iframe…>` html blocks.
- buy-options: semantic "things you can buy" with image, title,
  subtitle, price (+ schema.org Product markup), replacing the
  image-cards block we'd been stretching into the Buy Direct role.

Changes:
- New snippets/newsletter.md: section-header intro + iframe-embed
  (Buttondown signup) + link-button to the blog archive. Homepage
  now calls it via `type: snippet, reference: newsletter` instead
  of embedding the iframe by hand inside a split-html block.
- 9 game pages swapped their hand-rolled itch.io <iframe> html
  blocks for iframe-embed blocks.
- 7 game pages swapped the "## Buy Direct" image-cards block for
  buy-options, splitting the old "£15 · Main rulebook" string into
  the separate `price` and `subtitle` fields that buy-options
  expects. Price values are bare numbers so the block can emit
  the currency (GBP) via its schema.org markup.
- A Fey Mystery of Glen Dourn and Red Gold each get a proper
  `callout` block (variant: warning, alert icon) for their content
  warnings, replacing the "Content warning: …" line that had been
  crammed into `cta.description`
- Drama Llamas' downloads moved from a generic `icon-links` block
  to the new `downloads` block (takes {file, label} pairs and
  picks up file size / type automatically)
- Moved files/ → assets/files/ so they end up served at
  /assets/files/*.pdf; the template's passthrough-copy only ships
  src/assets and src/images, so the previous /files/ URLs 404'd.
  Updated the drama-llamas download paths accordingly.

Verified locally: both block types render in the built HTML
(<aside class="callout callout--warning"> and <ul class="downloads">),
and the three PDFs are now present under _site/assets/files/.
footer sidebar content, and URL redirects

Press kit pages:
- Created /press-kits/drama-llamas/ and /press-kits/judes-world/
  from the old liquid templates — contact info, about Yvris,
  game descriptions, Kickstarter basics, art galleries, logo
  download lists, and press coverage links. All converted to
  blocks (section-header, gallery, markdown).
- Updated media-press.md to remove PLACEHOLDER TEXT and add the
  real press coverage links.
- Redirect: /drama-llamas-press-kit/ and /judes-world-press-kit/
  point to the new locations.

Custom of the Sea:
- Created /custom-of-the-sea/ page — the old cots.md was a
  pre-launch signup for an upcoming regency folk horror game.
  Uses the newsletter snippet for the signup form.

Favicon:
- Copied favicon.ico from the old repo into assets/.

Site description:
- Added "description" and "email" fields to site.json from the
  old site.json.

Suitability callouts:
- Added a callout (variant: info) block to all 6 main games with
  the human-readable suitability sentence from the original
  frontmatter. D&D adventures and Drama Llamas one-shots already
  have the info in their stats blocks so they don't need it.

Footer sidebar content:
- Rebuilt footer-content.md to mirror the old sidebar: a
  split-image block with the BK logo + studio tagline + nav
  links (dark variant), the recent-blog-posts snippet, then
  the existing contact form + socials.

URL redirects for old paths:
- /games/ and /adventures/ → /releases/
- /newsletter/, /archive/, /blog/page1 through /blog/page23 → /blog/
- Every game/adventure slug at root (e.g. /bumbling/, /drama-llamas/,
  /a-fey-mystery-of-glen-dourn/) → /releases/{slug}/
- /oh-my-stars/ and /tags/press-kit/ → / (already existed)

Verified locally: 24 redirect HTML files generated, both press
kit pages render with galleries, callout blocks appear on all 6
main games, favicon copied to _site/assets/favicon.ico.
The template's news-post.html uses `layout: base` which renders
posts with the simpler CSS bundle and no design-system footer
blocks. This override switches to `layout: design-system-base.html`
(following the same pattern as property.html: set blocks: false
so the base layout renders our content directly).

The post layout now renders as proper design-system sections:
- compact header section with h1 title, subtitle, and date
- compact hero image section (thumbnail via {% image %} shortcode
  if present, cropped to 16/9)
- narrow-container prose section for the post body
- gallery section if the post has one
- "All blog posts" back-link at the bottom

Because each news post now goes through design-system-base, it
automatically picks up the footer-content snippet blocks (logo,
recent posts, contact form, socials) that appear on every other
page — posts were the only page type that was missing these.
@stefan-burke stefan-burke merged commit 7937e60 into main Apr 17, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants