Migrate homepage patterns to the Core Icon block (LS-3229) - #45
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
The migrations are consistent with existing wp:icon usage in the theme and the only remaining outermost/icon-block instances match the documented intentional exceptions.
Pull request overview
This PR continues the LS-3229 migration by replacing outermost/icon-block instances in homepage-related patterns with the native core/icon block, using lightspeed/* icons registered by ls-plugin, while intentionally leaving two unmatched icons in homepage-where-to-start.php untouched.
Changes:
- Converted homepage pattern icon markup from inline SVG-based
outermost/icon-blockto dynamicwp:iconblocks withlightspeed/*slugs. - Preserved existing sizing/colour styling by mapping prior
width/colorintostyle.dimensions.widthandstyle.color.text. - Left exactly two
outermost/icon-blockinstances inpatterns/sections/homepage-where-to-start.phpas documented due to missing icon slugs.
File summaries
| File | Description |
|---|---|
| patterns/home-hero.php | Migrates the hero badge/prompt icons to wp:icon (dot, special-interests, arrow-right). |
| patterns/home-hero-static.php | Migrates the hero badge dot icon to wp:icon. |
| patterns/sections/homepage-cta.php | Migrates the CTA eyebrow dot icon to wp:icon. |
| patterns/sections/homepage-featured-work.php | Migrates the section eyebrow dot icon to wp:icon. |
| patterns/sections/homepage-what-we-build.php | Migrates section eyebrow + category-card icons to wp:icon (dot, category, cart, puzzle-piece, arrows-clockwise). |
| patterns/sections/homepage-where-to-fit.php | Migrates section eyebrow + package/checklist icons to wp:icon (dot, house, trending-up, building-office, check). |
| patterns/sections/homepage-where-to-start.php | Migrates section eyebrow dot and the “Proof” card icon to wp:icon, leaving two outermost/icon-block instances intentionally. |
| patterns/sections/homepage-why-lightspeed.php | Migrates section eyebrow dot and checklist check icons to wp:icon. |
Review details
- Files reviewed: 8/8 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…ration (LS-3720) (#49) * Fix legacy outermost/icon-block CSS selectors broken by Core Icon migration (LS-3720) Bug fix - Add .wp-block-icon alongside .wp-block-outermost-icon-block in _menu-motion.scss (mega-menu chevron hover/focus color + reduced-motion) - Add .wp-block-icon alongside .wp-block-outermost-icon-block .icon-container in work-archive-sections.scss (card-link-row hover/focus icon color) - Both fixes are additive: any not-yet-converted outermost/icon-block instance keeps working, core/icon instances now get the same treatment Cleanup - Remove dead .site-footer .icon-container svg{fill:currentColor} rule from _footer-motion.scss — redundant now that every lightspeed/* icon bakes fill="currentColor" into its own path, and WP core's default stylesheet already forces .wp-block-icon svg{fill:currentColor} - Delete assets/css/animations.min.css — stale, unenqueued build artifact with no reference anywhere in the codebase Context - Found via audit LS-3719, filed as bug LS-3720 - Not stacked on the LS-3229 batch PR chain (#44/#45/#47/#48) since none of these files overlap with those diffs; branched off develop Verification - npm run build:css run in full; only animations.css and work-archive-sections.css changed - Compiled CSS selector counts verified (4+4 and 2+2 respectively) - Confirmed zero remaining references to animations.min.css before deleting * Move mega-menu icon hover colour out of the motion partial (LS-3720) Bug fix - Relocate `.is-style-mega-menu-item-default` icon hover/focus `color` rule from `src/scss/animations/_menu-motion.scss` to `src/scss/structural/_mega-menu.scss` - Animations partial now only holds the `transition` property and its reduced-motion override, per AGENTS.md's motion-only rule for `src/scss/animations/**` Context - Addresses Copilot review feedback on PR #49: the colour swap is a non-motion property and belongs in the structural partial alongside the existing `.is-style-mega-menu-item-default` rules - Rebuilt `assets/css/animations.css` to reflect the change * Updating CHANGELOG.md
Icon block conversion
- Replace outermost/icon-block with core/icon across 8 homepage files
- Reference lightspeed/{name} icons instead of inline SVG
- Cover 35 of 37 instances (2 skipped, see below)
Icons used
- home-hero, home-hero-static, homepage-cta, homepage-featured-work: dot
- home-hero: special-interests, arrow-right
- homepage-what-we-build: category, cart, puzzle-piece, arrows-clockwise
- homepage-where-to-fit: house, trending-up, building-office, check (x12)
- homepage-where-to-start: folder
- homepage-why-lightspeed: check (x5)
Known gaps
- homepage-where-to-start.php: 2 instances left as outermost/icon-block
(notepad and clipboard-text shapes have no lightspeed collection match
yet); tracked in LS-3229's "Missing icons" list for a later bulk pass
Verification
- Zero unintended remaining outermost/icon-block references (2 expected exceptions)
- PHP block-rendering test confirms correct SVG output, no errors
Fix - homepage-where-to-start.php: converted the "Commercial" and "Process" card icons from outermost/icon-block to core/icon - Mapped to lightspeed/notepad and lightspeed/clipboard-text, now available after ls-plugin#24 Verification - php -l passes - Re-scanned all 8 Batch 2 files: 0 remaining outermost/icon-block instances Context - Closes out Batch 2's entry in LS-3229's "Missing icons" tracking list
154f22f to
2fc3ff6
Compare
|
Reviewed and approved by Zared in our meeting on Friday, 11 September 2026 — his review just wasn't logged as a formal GitHub approval on this PR. |
Summary
Replaces
outermost/icon-block(third-party "Icon Block" plugin) instances in the homepage patterns with WordPress 7.1's native Core Icon block (core/icon), referencing icons from thelightspeedcollection registered inls-plugin. Second of 5 stacked batches migrating all 38outermost/icon-blockusages across the theme (see LS-3229). Stacked onfeature/ls-3229-icon-block-navigation(#44).Files changed (8 files, 37 icon instances — 35 converted, 2 intentionally skipped)
patterns/home-hero.php—dot,special-interests,arrow-rightpatterns/home-hero-static.php—dotpatterns/sections/homepage-cta.php—dotpatterns/sections/homepage-featured-work.php—dotpatterns/sections/homepage-what-we-build.php—dot,category,cart,puzzle-piece,arrows-clockwisepatterns/sections/homepage-where-to-fit.php—dot,house,trending-up,building-office,check×12patterns/sections/homepage-where-to-start.php—dot,folderconverted; 2 instances left asoutermost/icon-block(see below)patterns/sections/homepage-why-lightspeed.php—dot,check×5Known gap — 2 skipped instances
patterns/sections/homepage-where-to-start.phphas two icons with no matching slug in thelightspeedcollection yet:lightspeed/notepad.lightspeed/clipboard-text.Per direction from Brandon: rather than sourcing icons one-off mid-batch, these are left untouched and logged in LS-3229's new "Missing icons — cross-batch tracking list" section, to be resolved in a single bulk-sourcing PR to
ls-pluginonce all 5 batches are complete.Markup change
Same pattern as Batch 1 —
core/iconis dynamic (server-rendered), so every instance collapses to a single self-closing comment, e.g.:Icon mapping verification
Every converted icon was verified by exact-path-matching the source
<svg>against the real files inls-plugin/assets/icons/lightspeed/. One ambiguous duplicate resolved by file context:sparkle.svg/special-interests.svgare byte-identical —home-hero.phpusesspecial-interestsper the mapping doc's file attribution (sparklebelongs only to a Batch 5 file).Test plan
outermost/icon-blockcount matches expected exceptions exactly (2 remaining, both inhomepage-where-to-start.php, both intentional)wp:iconinstance count matches the verified 35-instance mapping table exactly, per filewp:iconJSON attribute payload parses as valid JSON (scripted check across all 8 files)parse_blocks+render_blockviawp eval-file) on all 8 files — zero errors, correct<svg>/.wp-block-iconcount per file, including the partial file showing exactly 2 converted + 2 untouchedPart of LS-3229 (Batch 2 of 5). Next: Batch 3 (Work section) on a branch stacked on top of this one, once this PR is reviewed.