Booking Page Design Spec

Context

The Holli Hemlock site needs a Booking page where potential clients can submit inquiries and browse available acts. The form handler is TBD — the form will be wired up later. Acts should be a content-managed collection (markdown with front matter) consistent with how performances, media, and photos are managed.

Acts Collection

Directory: /acts/

Directory data file: /acts/acts.json

{
  "tags": "act",
  "permalink": false,
  "order": 100,
  "bannerImage": "",
  "description": ""
}

Individual act file example: /acts/what-makes-a-broken-man.md

---
title: "What Makes a Broken Man?"
bannerImage: "/assets/images/what-makes-a-broken-man.jpg"
tags:
  - transgender
  - unfolding
  - identity
order: 1
description: "Our next performer bloomed into herself on stage..."
---

Note: The tags field here serves double duty — the directory data file uses "tags": "act" for the Eleventy collection, while the per-file tags list holds thematic tags for display. We'll use a separate front matter field themes (list of strings) for the display tags, and reserve tags for the Eleventy collection. Updated example:

Corrected directory data file: /acts/acts.json

{
  "tags": "act",
  "permalink": false,
  "order": 100,
  "bannerImage": "",
  "themes": [],
  "description": ""
}

Corrected act file example: /acts/what-makes-a-broken-man.md

---
title: "What Makes a Broken Man?"
bannerImage: "/assets/images/what-makes-a-broken-man.jpg"
themes:
  - transgender
  - unfolding
  - identity
order: 1
description: "Our next performer bloomed into herself on stage..."
---

Eleventy collection (in .eleventy.js):

eleventyConfig.addCollection("allActs", function(collectionApi) {
  return collectionApi.getFilteredByTag("act").sort((a, b) => {
    return (a.data.order || 100) - (b.data.order || 100);
  });
});

Migration: Move data from _data/acts/what-makes-a-broken-man.json into the new markdown collection format. Delete the old JSON file and _data/acts/ directory if no other files depend on it.

Booking Page

File: /booking.njk

Front matter:

---
layout: layouts/base.njk
title: Booking
---

Structure (top to bottom):

Section 1: Booking Inquiry Form

Section 2: Acts Showcase

Styling (additions to bundle.css)

Form Styles

Act Card Styles

Navigation Update

File: _includes/partials/nav.njk

Add <a href="/booking/">Booking</a> after the Gallery link, before the Instagram icon.

Verification

  1. Run yarn build (or npx @11ty/eleventy) — confirm no build errors
  2. Run yarn start (or npx @11ty/eleventy --serve) — open in browser
  3. Verify: