CC-03: Add a persistent promo strip (drill pack and bowl-buying guides)
- Source document:
.agents/core-content-promotion-plan.md(§1.3 “Persistent promo strip”) - Owner: 🤖 Agent
- Priority: Low–Medium
- Status: Not started
- Related: CC-22 (seasonal content swaps, user-owned); CC-18 (exit-intent). Don’t stack too many promotional layers.
Task
Add a slim, dismissible banner, visible on desktop and mobile, that rotates between drill pack and bowl-buying-guide highlights.
Context
- Put it in
_layouts/default.html, above or below the navbar (_includes/navbar.html, which is a fixed-top Bootstrap 4 navbar). Watch for overlap with the fixed navbar and the masthead padding. - Drive the content from data (e.g.,
_data/promos.ymlwith message, link, start/end dates) so seasonal swaps (CC-22) need no code changes. - Rotation: prefer a CSS/JS rotation that respects
prefers-reduced-motion, or show a single promo chosen at build time. Avoid auto-rotating carousels that fail WCAG 2.2.2 (pause/stop/hide). - JS goes in
assets/js/(no inline scripts). Store dismissal inlocalStorage. - Mustn’t cause layout shift (CLS). Reserve the space, or render it server-side at a fixed height.
Completion criteria
- Strip shows on all pages, can be dismissed with the keyboard, and stays dismissed.
- Content comes from a data file; at least the drill pack and the buying guide (
/guide/how-to-choose-a-set-of-lawn-bowls/) are included. - No CLS regression; Lighthouse accessibility and performance ≥ 90 on
/and a sample post. bundle exec jekyll buildcompletes without errors.