From 54608c2be4537aa160250d751b522247b0ced4e3 Mon Sep 17 00:00:00 2001 From: Keith Solomon Date: Sat, 4 Jul 2026 19:54:06 -0500 Subject: [PATCH] docs(spec): record the 2026-07-04 hero-scope revision (Services-only) --- .../specs/2026-07-04-contact-page-design.md | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/docs/superpowers/specs/2026-07-04-contact-page-design.md b/docs/superpowers/specs/2026-07-04-contact-page-design.md index 57fcae5..071d6ac 100644 --- a/docs/superpowers/specs/2026-07-04-contact-page-design.md +++ b/docs/superpowers/specs/2026-07-04-contact-page-design.md @@ -107,21 +107,12 @@ $showHero = in_array( The new `$showHero` is: ```php -$showHero = in_array( - true, - array( - isServicesDescendant() && get_field( 'hero_style' ) === 'default', - is_home(), - is_archive(), - is_single(), - is_search(), - is_404(), - ), - true -); +$showHero = isServicesDescendant() && get_field( 'hero_style' ) === 'default'; ``` -The `is_home() / is_archive() / is_single() / is_search() / is_404()` conditions still gate the hero on those views, bypassing the Services check (so blog posts still get the inner-page layout they had before, single posts still get the dark hero from `page-hero.php`, etc.). The Services gate only applies to the `page` post type. +The hero renders only on the Services page, its direct children, and its grandchildren — and only when the editor has set `hero_style` to `'default'`. The blog index, archives, single posts, search, and 404 views do **not** render the inner-page hero at all. Those views rely on their own templates (`front-page.php`, `single.php`, `search.php`, `404.php`, `archive.php`) for any visual treatment. + +> **Note:** an earlier draft of this spec kept `is_home() / is_archive() / is_single() / is_search() / is_404()` in the bypass list so blog posts and single posts kept their old hero behavior. The user revised this on 2026-07-04 after seeing the live result: the Services hero treatment should not apply to any non-Services view. The change is captured in commits `2fb1d67` (header.php) and `ee9c9ce` (test update). ## ACF Field Group Changes @@ -266,9 +257,8 @@ The Leaflet map pin (orange-01 + white) and the actual Leaflet embed code are no 3. The Gravity Forms shortcode `[gravityform id="1" title="false"]` renders below the address items, with custom field styling: uppercase CWC Blue 01 labels, CWC Orange 01 right-aligned required asterisks, 30% opacity CWC Blue 03 input fills with CWC Blue 03 borders, slightly rounded corners, comfortable padding, a substantially taller message textarea, and a submit button matching the header's Contact button. 4. The right column is a placeholder for the Leaflet map, fills 50% of the viewport width on desktop (edge to edge), and drops below the form on mobile. 5. No hero is rendered on the contact page. There is a ~3rem top margin below the header and no page title above the body. -6. The inner-page hero renders on the Services page, on its direct children, and on its grandchildren — and ONLY on those pages. Pages that have `hero_style = 'default'` but are not Services descendants lose their hero. -7. Blog posts, archives, search, and 404 still render their existing heroes (the Services gate does not apply to those views). -8. No new console errors, axe violations, or PHPCS errors. -9. Existing pages (Services children/grandchildren with the inner-page hero, single posts, archives, search, 404) render unchanged. -10. Existing tests (`mobile-homepage`, `site-a11y`, `inner-page`) continue to pass. -11. The block is reusable: adding the `Contact Info` block to another page renders the same layout. +6. The inner-page hero renders on the Services page, on its direct children, and on its grandchildren — and ONLY on those pages. Pages that have `hero_style = 'default'` but are not Services descendants lose their hero. The blog index, archives, single posts, search, and 404 also do **not** render the inner-page hero. +7. No new console errors, axe violations, or PHPCS errors. +8. Existing pages that are Services descendants render with the inner-page hero; all other pages (blog, archives, single posts, search, 404, non-Services `page` posts) render without it. +9. Existing tests (`mobile-homepage`, `site-a11y`, `inner-page`) continue to pass. +10. The block is reusable: adding the `Contact Info` block to another page renders the same layout.