feat: #3614664 Build the global footer region in Canvas to the design
Rebuilds the Horizon Aid global footer region (canvas.page_region.vartheme_bs5_horizonaid.footer) to match the design, and updates the menu link content that feeds it.
Issue: https://www.drupal.org/project/horizonaid/issues/3614664
What changed
canvas.page_region.vartheme_bs5_horizonaid.footer.yml: rebuilt as 17 components — a dark edge-to-edge section (logo card, tagline, social menu block; quick-links menu block; heading, copy and Subscribe button), then a second dark section for the bottom bar (legal menu block, copyright). Every component now pinscomponent_version: activeinstead of a hash, so the tree cannot go stale against a rebuilt component.secondary--13--learn.yml,secondary--14--explore.yml,secondary--15--impact.yml,secondary--16--act.yml: the four quick links become top-level menu links (2 changed lines each).secondary--17--quicklinks.yml: theroute:<nolink>wrapper the links used to hang from is disabled, so the column shows the four links with no label, as the design does.footer--03--terms-and-conditions.yml: weighted ahead of the privacy link in the bottom bar.
Verified on a Varbase 11 site in a browser: dark navy band edge to edge with 48px top padding; logo, tagline and four gold social icons in the first column; Learn/Explore/Impact/Act with no label; "Join Our Mission" and its copy in white with the Subscribe button in accent blue as a pill; bottom bar shows Terms and Conditions and the privacy link on the left with the copyright on the right. Region config validates with zero violations, page renders with zero errors.
Limitations
- The structure was modelled on the reference site's own footer region, read read-only from its production environment, then adjusted to the design: the Subscribe button uses the accent variant rather than the reference site's secondary variant (which would be navy on navy); the logo points at the theme's light logo under
themes/contrib; the copyright sits in its own bottom-bar column. - Not yet proven through a full fresh install — a separate defect blocks that (Canvas component versions pinned in
canvas.content_template.node.event.fullthrough a config action do not exist at recipe-apply time; see #3614494). Structurally validated instead: 17 components, valid UUIDs, JSON-encoded inputs, no orphaned parents — matching the shape of the already-workingcanvas.content_template.node.event.card.yml, which uses the same flat format and the sameactivepinning.
Also: the design shows the privacy link as "Privacy Policy" while the page shipped by the upstream privacy recipe is titled "Privacy policy" and arrives unpublished, so on a stock install that link is inaccessible until the page is published. Upstream behaviour, not changed here.
AI-Generated: Yes
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release