V4 WooCommerce Store#82
Merged
Merged
Conversation
…pass workflow - Remove 400-line stale inline PatternComplianceChecker class - Pass 2: pt-cli check patterns/ --theme=elayne (all patterns, not just changed) - Pass 3a: pt-cli check:templates templates/ --theme=elayne - Pass 3b: pt-cli check:templates parts/ --theme=elayne - Note Pass 1 (wp pattern validate) is local-only — requires live WP database - Bump PHP from 8.0 to 8.2
…tyles
Introduces the Elayne WooCommerce store vertical (v4.0.0):
- patterns/woocommerce/: hero, shop categories, featured products, ticker,
our story, newsletter, category hero/toolbar, filters sidebar, cart,
checkout, product top/gallery/variations/color-swatches/style-options/
accordion-tabs/atc-section/engraving/trust-badges/mobile-atc-bar/related
- templates/: archive-product, archive-product-spa, single-product, taxonomy-product_cat
- styles/store.json: Store style variation (Jost font, teal palette)
- assets/fonts/store/: Jost variable fonts
- assets/js/: category-filter-drawer, woocommerce-product-page
- assets/styles/woocommerce.css + block-styles/elayne-{ticker,avatar-circle,
category-hero,category-products,category-toolbar,shop-filters-sidebar,
woo-categories-grid,woo-newsletter-search,woo-our-story-watermark}.css
- patterns/images/store/: leather-bag hero + 10 product placeholders + 4 SVG icons
- patterns/images/fandb/: Facebook and Instagram outline SVG icons
…blog columns - Add spa-articles-intro, spa-beauty-intro, spa-book-intro, spa-wellness-posts, spa-overlapping-feature-columns, spa-overlapping-feature-columns-reversed - Add legal-about-intro attorney profile intro section - Add blog-post-columns-landscape (renamed from blog-post-columns.php)
Unbalanced tags: 9 opening, 10 closing divs. Extra </div> was at the end of the alignwide grid group with no matching opening tag.
- Rename loop variable $id to $gallery_id (avoids WordPress global override) - Put <?php on its own line in all multi-line embedded PHP blocks - Put ?> at correct indentation inside foreach scope - Restructure endforeach blocks to separate PHP close tags
- Add missing doc comment for elayne_enqueue_category_filter_drawer() - Add full stop to inline comment - Replace short array syntax [] with array() in register_block_type calls
Lock file requires symfony/string >=8.4; --dev is deprecated in Composer 2 (dev deps installed by default).
WP.org theme guidelines prohibit registering custom block types in themes (plugin territory). Replace elayne/product-attributes-table and elayne/shipping-returns-content block registrations with render_block filters on core/group blocks identified by specific classNames.
Replace blue outline/shadow with high-contrast white outline and black box-shadow ring, meeting WCAG focus indicator visibility requirements.
Document that register_block_type() must not be used in themes per WP.org plugin-territory guidelines; use render_block filter instead.
Width:100 + centred alignment on product-button block in archive-product.html, archive-product-spa.html, and taxonomy-product_cat.html so the ATC button spans the full card width consistently across all product archive views.
…clear-filters styles - Add .elayne-clear-filters-btn styles (uppercase, orange, hover-to-primary) for the JS-injected sidebar clear link - Raise product image selector to 3-class specificity (0,3,0) so the custom 3/4 aspect-ratio beats WooCommerce's default 1/1 rule at (0,2,0) - Update hover selector from .wc-block-grid__product to .wc-block-product - Change product button from text-align:left to width:100%; add display:block on link
Commented out position:sticky on .is-style-elayne-category-toolbar — sticky header was conflicting with page scroll behaviour; top/z-index values retained for when it is re-enabled.
- Bump pattern count from 110/103 to 140+ in README.md and readme.txt - Add WooCommerce Store vertical description (24 patterns) in README and readme.txt - Update template count from 14 to 17 - Add CHANGELOG entries for: elayne-clear-filters-btn CSS, CC0 product placeholder images, product button full-width change, and image selector specificity fix
…variants Convert archive-product.html and taxonomy-product_cat.html to ship unconfigured attribute filter placeholders (Ollie pattern — no hardcoded attributeIds) and add a rating filter; add demo-store-specific variants (archive-product-store.html, taxonomy-product_cat-store.html) with pre-wired Leather Colour/Style/Features attribute filters pushed to the store DB via the rebuild script. Update docs and changelog accordingly.
Full-screen overlay with prev/next navigation, keyboard (Escape/arrows) and backdrop-click to close. Lightbox is appended to <body> at init to avoid ancestor stacking-context clipping.
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.
This branch delivers a comprehensive WooCommerce store integration for the Elayne block theme, adding 26 new WooCommerce-specific patterns, 5 new templates, a full suite of block-style CSS files, the Jost variable font, and product placeholder image assets — establishing a complete FSE-based store vertical. Alongside the store feature, the CI pipeline is modernised to use pt-cli's three-pass compliance workflow with PHP 8.4, a product gallery lightbox is introduced via a custom
product-image.phptemplate override, and theregister_block_type()ticker is refactored to use therender_blockfilter to comply with WP.org plugin-territory rules. Additional work includes a new spa vertical (7 patterns), alegal-about-intropattern, a rename ofblog-post-columns.phptoblog-post-columns-landscape.phpfor naming consistency, and a wide-ranging monorepo sync that updates the majority of existing patterns and aligns CLAUDE.md, vibe config, and AGENTS.md with current toolchain guidance.WooCommerce Store Vertical:
patterns/woocommerce/covering the full purchase funnel: hero, shop landing, category hero, category toolbar, shop categories grid, filters sidebar, featured products, product top section, add-to-cart section, gallery, trust badges, variations, colour swatches, engraving option, style options, accordion tabs, mobile ATC bar, related products, cart, checkout, newsletter, our-story, testimonials, and ticker.archive-product-store.html,taxonomy-product_cat-store.html,single-product.html,taxonomy-product_cat.html,archive-product-spa.html) and astyles/store.jsonstyle variation, with base templates made distributable and demo-store demo variants kept separate per the three-tier WooCommerce strategy.elayne-category-hero.css,elayne-category-products.css,elayne-category-toolbar.css,elayne-shop-filters-sidebar.css,elayne-ticker.css,elayne-woo-categories-grid.css,elayne-woo-newsletter-search.css,elayne-woo-our-story-watermark.css,elayne-avatar-circle.css) plus a globalassets/styles/woocommerce.css, all registered viawp_enqueue_block_style()for zero-cost loading on non-store pages.assets/fonts/store/, 11 CC0-compatible product placeholder images, 4 store SVG icons, and addedassets/js/category-filter-drawer.jsandassets/js/woocommerce-product-page.jsfor drawer and product-page interactivity.Bug Fixes and Compliance:
register_block_type()usage for the ticker block with arender_blockfilter oncore/groupblocks identified byclassName, resolving a WP.org plugin-territory violation documented in CLAUDE.md.functions.phpand theproduct-image.phptemplate override, resolved a spurious closing</div>inlegal-team.php, and applied CSS fixes for product image specificity, button full-width display, and category toolbar sticky positioning.CI Pipeline and Toolchain:
.github/workflows/pattern-compliance.ymlwith the pt-cli three-pass workflow (Gutenberg structural validator → pt-cli compliance checker → HTML template checker) and bumped the runner PHP version to 8.4.composer.jsondependency fromelayne-clitopt-cli v2, addinglayout:createandcheckComposer scripts, and added ascripts/rebuild-demo.phpWP-CLI utility (excluded from WP.org distribution via.distignore) for rebuilding demo pages from pattern PHP files in a live WP context.Pattern Library Expansion and Sync:
spa-articles-intro.php,spa-beauty-intro.php,spa-book-intro.php,spa-overlapping-feature-columns.php,spa-overlapping-feature-columns-reversed.php,spa-wellness-posts.php) and a newlegal-about-intro.phppattern, raising the documented pattern count to 140+.Files Changed:
patterns/blog-post-columns-landscape.php(renamed frompatterns/blog-post-columns.php).distignore(Modified).github/workflows/pattern-compliance.yml(Modified).vibe/config.toml(Modified).vibe/prompts/vibe.md(Modified)AGENTS.md(Modified)CHANGELOG.md(Modified)CLAUDE.md(Modified)README.md(Modified)composer.json(Modified)functions.php(Modified)parts/sidebar.html(Modified)patterns/agency-services-showcase.php(Modified)patterns/author-box.php(Modified)patterns/blog-post-columns-fandb.php(Modified)patterns/blog-post-columns-portrait.php(Modified)patterns/blog-post-list.php(Modified)patterns/career-opportunities.php(Modified)patterns/case-study-detailed.php(Modified)patterns/client-logo-wall.php(Modified)patterns/client-reviews.php(Modified)patterns/contact-details.php(Modified)patterns/contact-side-by-side.php(Modified)patterns/cta-newsletter.php(Modified)patterns/event-upcoming-grid.php(Modified)patterns/fandb-about-intro.php(Modified)patterns/fandb-chef-profile.php(Modified)patterns/fandb-events-grid.php(Modified)patterns/fandb-hours-location.php(Modified)patterns/fandb-testimonials-food.php(Modified)patterns/faq.php(Modified)patterns/footer-simple.php(Modified)patterns/footer-standard.php(Modified)patterns/footer-with-nav-columns.php(Modified)patterns/four-column-wellness-posts.php(Modified)patterns/header-double-bar.php(Modified)patterns/header-mobile.php(Modified)patterns/header-social-logo-hamburger-light.php(Modified)patterns/header-social-logo-hamburger.php(Modified)patterns/header-standard-with-tel-number.php(Modified)patterns/header-standard.php(Modified)patterns/header-top-bar-centered-menu.php(Modified)patterns/hero-cover-slanted-legal.php(Modified)patterns/hero-cover-slanted.php(Modified)patterns/hero-fandb-cover-fullwidth.php(Modified)patterns/hero-fandb-split-layout.php(Modified)patterns/hero-modern-light.php(Modified)patterns/hero-two-tone.php(Modified)patterns/hero-with-cta.php(Modified)patterns/legal-contact.php(Modified)patterns/legal-hero-split.php(Modified)patterns/legal-hero-with-stats.php(Modified)patterns/legal-hero.php(Modified)patterns/legal-stats.php(Modified)patterns/legal-team.php(Modified)patterns/menu-daily-specials.php(Modified)patterns/menu-drinks-grid.php(Modified)patterns/menu-food-grid.php(Modified)patterns/menu-pricing-table.php(Modified)patterns/nail-salon-hero.php(Modified)patterns/overlapping-feature-columns-reversed.php(Modified)patterns/overlapping-feature-columns.php(Modified)patterns/plumbing-contact.php(Modified)patterns/plumbing-header.php(Modified)patterns/plumbing-hero.php(Modified)patterns/plumbing-why-us.php(Modified)patterns/post-featured-two-column.php(Modified)patterns/pricing-comparison.php(Modified)patterns/review-text-image-overlap.php(Modified)patterns/spa-booking-cta.php(Modified)patterns/stats-list.php(Modified)patterns/template-index-grid.php(Modified)patterns/template-index-list.php(Modified)patterns/template-page-404.php(Modified)patterns/template-page-archive.php(Modified)patterns/template-page-left-sidebar.php(Modified)patterns/template-page-no-title.php(Modified)patterns/template-page-right-sidebar.php(Modified)patterns/template-page-search.php(Modified)patterns/template-page.php(Modified)patterns/template-post-centered.php(Modified)patterns/template-post-left-sidebar.php(Modified)patterns/template-post-right-sidebar.php(Modified)patterns/template-post-wide.php(Modified)patterns/testimonial-card.php(Modified)patterns/testimonials-grid.php(Modified)patterns/two-column-feature.php(Modified)patterns/wellness-cover-highlight.php(Modified)readme.txt(Modified)style.css(Modified)templates/archive-product.html(Modified)assets/fonts/store/jost-v20-latin-italic-variable.woff2(Added)assets/fonts/store/jost-v20-latin-variable.woff2(Added)assets/js/category-filter-drawer.js(Added)assets/js/woocommerce-product-page.js(Added)assets/styles/block-styles/elayne-avatar-circle.css(Added)assets/styles/block-styles/elayne-category-hero.css(Added)assets/styles/block-styles/elayne-category-products.css(Added)assets/styles/block-styles/elayne-category-toolbar.css(Added)assets/styles/block-styles/elayne-shop-filters-sidebar.css(Added)assets/styles/block-styles/elayne-ticker.css(Added)assets/styles/block-styles/elayne-woo-categories-grid.css(Added)assets/styles/block-styles/elayne-woo-newsletter-search.css(Added)assets/styles/block-styles/elayne-woo-our-story-watermark.css(Added)assets/styles/woocommerce.css(Added)patterns/images/fandb/icon-facebook-outline.svg(Added)patterns/images/fandb/icon-instagram-outline.svg(Added)patterns/images/store/icon-heart.svg(Added)patterns/images/store/icon-return.svg(Added)patterns/images/store/icon-shield-check.svg(Added)patterns/images/store/icon-truck.svg(Added)patterns/images/store/leather-bag.webp(Added)patterns/images/store/product-placeholder-I.webp(Added)patterns/images/store/product-placeholder-II.webp(Added)patterns/images/store/product-placeholder-III.webp(Added)patterns/images/store/product-placeholder-IV.webp(Added)patterns/images/store/product-placeholder-IX.webp(Added)patterns/images/store/product-placeholder-V.webp(Added)patterns/images/store/product-placeholder-VI.webp(Added)patterns/images/store/product-placeholder-VII.webp(Added)patterns/images/store/product-placeholder-VIII.webp(Added)patterns/images/store/product-placeholder-X.webp(Added)patterns/legal-about-intro.php(Added)patterns/spa-articles-intro.php(Added)patterns/spa-beauty-intro.php(Added)patterns/spa-book-intro.php(Added)patterns/spa-overlapping-feature-columns-reversed.php(Added)patterns/spa-overlapping-feature-columns.php(Added)patterns/spa-wellness-posts.php(Added)patterns/woocommerce/shop-filters-sidebar.php(Added)patterns/woocommerce/woo-cart.php(Added)patterns/woocommerce/woo-category-hero.php(Added)patterns/woocommerce/woo-category-toolbar.php(Added)patterns/woocommerce/woo-checkout.php(Added)patterns/woocommerce/woo-featured-products.php(Added)patterns/woocommerce/woo-hero.php(Added)patterns/woocommerce/woo-newsletter.php(Added)patterns/woocommerce/woo-our-story.php(Added)patterns/woocommerce/woo-product-accordion-tabs.php(Added)patterns/woocommerce/woo-product-atc-section.php(Added)patterns/woocommerce/woo-product-color-swatches.php(Added)patterns/woocommerce/woo-product-engraving-option.php(Added)patterns/woocommerce/woo-product-gallery.php(Added)patterns/woocommerce/woo-product-mobile-atc-bar.php(Added)patterns/woocommerce/woo-product-related.php(Added)patterns/woocommerce/woo-product-style-options.php(Added)patterns/woocommerce/woo-product-top.php(Added)patterns/woocommerce/woo-product-trust-badges.php(Added)patterns/woocommerce/woo-product-variations.php(Added)patterns/woocommerce/woo-shop-categories.php(Added)patterns/woocommerce/woo-shop-landing.php(Added)patterns/woocommerce/woo-testimonials.php(Added)patterns/woocommerce/woo-ticker.php(Added)scripts/rebuild-demo.php(Added)styles/store.json(Added)templates/archive-product-spa.html(Added)templates/archive-product-store.html(Added)templates/single-product.html(Added)templates/taxonomy-product_cat-store.html(Added)templates/taxonomy-product_cat.html(Added)woocommerce/single-product/product-image.php(Added)Dependency lock files updated: composer.lock,