Build Services page: Entry Points and Delivery by the Numbers (LS-1598) - #55
Open
brandonmarshal wants to merge 6 commits into
Open
Conversation
- Add patterns/sections/services-entry-points.php: "You don't have to buy everything at once." — eyebrow/heading/description on the left, a 2x2 grid of 4 entry-point link cards on the right (Start with discovery, Support review, Migration assessment, AI-readiness discussion), each linking to its corresponding service page - Reuses the existing Card - Link Row style and core/icon arrow — no new card style or icon needed Context - Section background uses surface.card-raised (#E8E8E8) rather than surface.card (used by Service Clusters), since Card - Link Row's own card background is already surface.card — matching the section to that token would make the cards blend into their background
- Add patterns/sections/services-delivery-numbers.php: "Twelve years of WordPress engineering, not a slide-deck claim." — a centered eyebrow/heading/description intro followed by 3 centered delivery-scale stats (WordPress depth, Platform launches, Approved client praise) - Reuses the existing Stat Segment style (is-style-stat-segment) — same building block as the Work archive's engagement row — composed centered with the value shown before its label, instead of that pattern's left-aligned label-first order. No new card style needed. Follow-up - Increased the stat label font size one token up (300 → 400) and the description to 16px (100 → 200) for readability
Bug fix - services-entry-points.php: switch the card grid from a fixed columnCount:2 to minimumColumnWidth, matching the technique already used in work-related-routes.php — WordPress's native auto-fit grid collapses to 1 column on mobile/tablet on its own, no CSS needed. Fixes 2-column squeeze forcing multi-line text wrap at narrow widths. - services-delivery-numbers.php: add a scoped SCSS partial that flips the shared Stat Segment divider from a vertical border-inline-end to a horizontal border-block-end once the row stacks below 782px (WP's own columns-stacking breakpoint), with the trailing divider correctly stripped from the last stacked item. Scoped to this section only — the shared stat-segment.json style used elsewhere is untouched.
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved moderate icon-sizing and responsive-layout issues remain, along with contradictory task statuses.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds the Services page’s Entry Points and Delivery by the Numbers sections, including responsive styling, asset wiring, and documentation updates.
Changes:
- Adds entry-point service cards and delivery metrics.
- Adds responsive stat-divider styling and build/enqueue integration.
- Updates task tracking and changelog entries.
File summaries
| File | Summary | Review findings |
|---|---|---|
src/scss/structural/services-delivery-numbers.scss |
Responsive divider styling | No findings. |
specs/001-services-page/tasks.md |
Task status tracking | Nit (3 votes): T020 and T021 should reflect the added stylesheet and wiring. |
patterns/sections/services-entry-points.php |
Entry-point card grid | Moderate (3 votes): Nest icon dimensions under style; increase the grid minimum width to preserve the intended layout. |
patterns/sections/services-delivery-numbers.php |
Delivery metrics section | Moderate (2 votes): Nest the eyebrow icon dimensions under style. |
package.json |
CSS build wiring | No findings. |
inc/animations.php |
Asset registration and detection | No findings. |
functions.php |
Editor stylesheet enqueue | No findings. |
CHANGELOG.md |
Release notes | No findings. |
assets/css/services-delivery-numbers.css |
Compiled stylesheet | No findings. |
Review details
Files not reviewed (1)
- assets/css/services-delivery-numbers.css: Generated file
Suppressed comments (1)
patterns/sections/services-entry-points.php:85
- The arrow has the same invalid root-level
dimensionsattribute, so its requested 14px width is ignored and it will render at the icon default size. Putdimensions.widthunderstyle, as in the existingcore/iconusages.
<!-- wp:icon {"icon":"lightspeed/<?php echo esc_attr( $ls_arrow_icon_slug ); ?>","className":"has-text-color","style":{"color":{"text":"var(--wp--custom--color--text--subtle)"}},"dimensions":{"width":"14px"}} /-->
- Files reviewed: 8/9 changed files
- Comments generated: 4
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Bug fix - services-entry-points.php, services-delivery-numbers.php: fix wp:icon dimensions being a sibling of style instead of nested inside it — core/icon serializes dimensions as a block support under style.dimensions, not a root attribute, so the width was being silently ignored and every icon rendered at the 24px default - services-entry-points.php: increase the card grid's minimumColumnWidth from 260px to 340px — at common desktop widths (confirmed live at 1440px) the smaller value let a 3rd card fit per row, breaking the intended 2x2 layout into 3+1 Context - specs/001-services-page/tasks.md: update T020/T021 from N/A to done with the actual files/wiring — they were correctly N/A when the section was first built (no SCSS needed), but the later mobile-divider fix added a real stylesheet, making them stale
brandonmarshal
added a commit
that referenced
this pull request
Sep 11, 2026
Bug fix - services-cta.php: fix wp:icon dimensions being a sibling of style instead of nested inside it — same bug class already fixed on PR #55, the eyebrow dot was rendering at the 24px default instead of 8px - inc/animations.php: load corner-glow.css unconditionally instead of gating it on is_page('services') — services-cta.php declares Inserter: true, so an editor can place it (and this shared class) on any page, where the condition would leave it caught only by the render_block/footer fallback. Same precedent as card-shells/ cta-buttons: cheap enough (~400 bytes) to load unconditionally Cleanup - Use UK-English spelling ("colour"/"colours", "centred") in prose documentation comments in services-cta.php and CHANGELOG.md, matching AGENTS.md's own established convention — CSS property names and values are unaffected, only English prose
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds two more sections to the Services page: "Entry Points" (You don't have to buy everything at once) and "Delivery by the Numbers" (Twelve years of WordPress engineering). Together with Hero, Linked Decisions, Service Clusters, and Service Tiles from earlier PRs, this covers 6 of the 7 sections on the page — only the closing CTA remains, on a separate stacked branch.
Stacked on #54 — this branch is
feature/ls-1598-services-page-batch-3, based offfeature/ls-1598-services-page-batch-2.Entry Points
patterns/sections/services-entry-points.php: eyebrow/heading/description on the left, a 2x2 grid of 4 entry-point link cards on the right (Start with discovery, Support review, Migration assessment, AI-readiness discussion), each linking to its corresponding service page.core/iconarrow — no new card style or icon needed.Delivery by the Numbers
patterns/sections/services-delivery-numbers.php: a centered eyebrow/heading/description intro followed by 3 centered delivery-scale stats (WordPress depth, Platform launches, Approved client praise).is-style-stat-segment) — same building block as the Work archive's engagement row — composed centered with the value shown before its label, instead of that pattern's left-aligned label-first order. No new card style needed.Mobile/tablet fixes
columnCount:2tominimumColumnWidth(matching the technique already used inwork-related-routes.php) — WordPress's native auto-fit grid collapses to 1 column on mobile/tablet on its own, no CSS needed. Fixes a 2-column squeeze that was forcing multi-line text wrap at narrow widths.border-inline-endto a horizontalborder-block-endonce the row stacks below 782px (WordPress's own columns-stacking breakpoint), with the trailing divider correctly stripped from the last stacked item. Scoped to this section only — the sharedstat-segment.jsonstyle used elsewhere (Work archive) is untouched.Test plan
npm run schema:validate— all JSON files passnpm run patterns:escape— clean, no warningsnpm run security:scan— cleanphp -lon both new pattern files — no syntax errorsvendor/bin/phpcs --standard=WordPresson both new pattern files andinc/animations.php— cleanStacks on #54 (LS-1598).