Skip to content

Migrate products and events to design-system-base layout#1396

Merged
stefan-burke merged 7 commits intomainfrom
claude/migrate-products-design-system-zpnDB
May 5, 2026
Merged

Migrate products and events to design-system-base layout#1396
stefan-burke merged 7 commits intomainfrom
claude/migrate-products-design-system-zpnDB

Conversation

@stefan-burke
Copy link
Copy Markdown
Member

Summary

  • Replaces _layouts/item.html (now deleted) with design-system-base.html for products and events.
  • Adds product-*, event-*, and shared item-* blocks that mirror the original item.html structure: header, gallery, meta, hire-pricing, purchase-link, tabs, add-ons, features, specs, contact-section, plus event-only event-products and event-map.
  • Each product / event uses product-intro + product-outro (or event-intro + event-outro) snippets so the long common block sequences are defined once and reused across the collection — this also gives template users a worked example of the snippet system.
  • Refactors property-contact-section, property-content, and property-map to share new partials with the new product/event blocks (no behaviour change for properties).

Test plan

  • bun run build produces all 14 product pages, all 5 event pages, and the existing property/news/category pages
  • bun test (full suite) passes — 2968 / 2968
  • Updated category-products, product-ordering, and search integration tests so test fixtures author body content as markdown blocks (required under design-system-base)
  • Verified rendered HTML for products with hire-pricing (doggy-day-care), tabs (eleventy, ultrawidget-pro, smarthingy-home-hub), add-ons (mini-gizmo, ultrawidget-pro), features+specs+gallery (classic-wotzit-wrapper), and the snippet-inside-blocks case (mini-gizmo + contact-cta)
  • Verified events with map (lunar-networking) and related-products (summer-expo)
  • Regenerated BLOCKS_LAYOUT.md and .pages.yml

https://claude.ai/code/session_01GXHrZrqLKNrqNhPeLeRHet


Generated by Claude Code

claude and others added 7 commits May 5, 2026 00:41
Replaces _layouts/item.html with design-system-base.html plus new
product-*, event-*, and shared item-* blocks. Each product/event uses
product-intro/outro and event-intro/outro snippets so common block
sequences are defined once and reused across the collection.

New blocks (and per-collection allowlists):
 - product-header / event-header (shared item-header-block.html)
 - product-gallery / event-gallery (shared item-gallery-block.html)
 - product-/event-/property-contact-section (shared item-contact-section-block.html)
 - product-meta, event-meta (reuse new _item-rating-paragraph.html and _item-categories-paragraph.html)
 - hire-pricing, purchase-link, product-tabs, product-add-ons, product-features, product-specs
 - event-products, event-map

Removes the now-orphaned item.html layout and its includes (item-event-*,
item-reviews-*, item-map-section, tabs.html).
product-features, product-specs, hire-pricing, and purchase-link are now
sugar blocks: each maps page data to the canonical design-system block
shape (icon-links, features, stats, link-button respectively) via new
computed properties on products.11tydata.js, then delegates to the
design-system template.

Drops the ad-hoc CSS classes (feature-card list, specs-grid, hire-prices,
purchase-button) and removes the orphaned partials. product-add-ons keeps
its bespoke add-on-card rendering but loses its redundant
`<div class="design-system">` wrapper (the layout already sets that on
<body>).

Extends features/stats/link-button to accept their items/text/href
parameters directly so sugar blocks don't need to construct a `block`
object literal in Liquid (LiquidJS doesn't expand object literals as
include arguments). Pattern matches the existing icon-links partial.
Single `tabs` block allowed on products, events, and properties — all
three render the same `tabs` data via tabs-inner.html, so there's no
reason to duplicate the schema. The property-specific `.property-tabs`
SCSS block is gone too; the global `#tabs` styles in tabs.scss handle
both contexts.

Updates the three property markdown files and the product-intro snippet
to reference `tabs` instead of the old type names.
…ts-design-system-zpnDB

# Conflicts:
#	.pages.yml
#	BLOCKS_LAYOUT.md
#	src/_includes/design-system/blocks/property-contact-section.html
#	src/_includes/design-system/blocks/property-tabs.html
#	src/_includes/design-system/render-block.html
#	src/_layouts/item.html
#	src/_lib/utils/block-schema/property-contact-section.js
#	src/_lib/utils/block-schema/property-tabs.js
#	test/integration/eleventy/product-ordering.test.js
#	test/integration/eleventy/search.test.js
@stefan-burke stefan-burke added this pull request to the merge queue May 5, 2026
Merged via the queue into main with commit 4a4176e May 5, 2026
3 checks passed
@stefan-burke stefan-burke deleted the claude/migrate-products-design-system-zpnDB branch May 5, 2026 02:02
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