Skip to content

feat(onboarding): show 4 starter sites per row on laptop and up#478

Merged
ineagu merged 2 commits into
developmentfrom
feat/onboarding-4-sites-per-row
Jun 22, 2026
Merged

feat(onboarding): show 4 starter sites per row on laptop and up#478
ineagu merged 2 commits into
developmentfrom
feat/onboarding-4-sites-per-row

Conversation

@ineagu

@ineagu ineagu commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Widen the onboarding starter-sites grid from 3 to 4 columns on laptop and up so users see ~8 templates at once instead of leaving large empty margins on wider screens. Cards get narrower but stay tall enough to read clearly (aspect-ratio 0.84/1).

Closes #477

What changed

  • onboarding/src/scss/_general.scssob-general--laptop() now sets grid-template-columns: repeat(4, minmax(0, 1fr)) (was 1fr 1fr 1fr). minmax(0, 1fr) prevents grid blowout from long titles. This cascades to the desktop/desktop-large breakpoints (which were empty). Tablet stays at 2 columns, mobile at 1.
  • onboarding/src/Components/Sites.js
    • Page size 9 → 12 in the initial useState, the reset effect, and the lazy-load increment — so every render and each scroll-load fills whole rows. 12 divides evenly by both 3 and 4, so rows stay full at every breakpoint.
    • Search row padding % 3 → % 4 (and 3 - remainder → 4 - remainder) so the "Not quite right? Browse more" divider lands on a clean row boundary under the 4-column grid.

How to test

  1. yarn build (compiles the onboarding bundle — build/ is gitignored, so only src/ is committed here).
  2. Open the Neve onboarding starter-sites step on a screen ≥992px.
  3. Verify 4 sites per row (2 on tablet ≥660px, 1 on mobile).
  4. Scroll to confirm lazy-load appends full rows of 4.
  5. Run a search and confirm the "Browse more" divider sits on a clean row boundary with no orphaned trailing card.

Notes

  • Source-only change; the compiled bundle is produced by the build step.
  • A reviewer alternative was to gate 4 columns at the desktop breakpoint (≥1200px) and keep laptops at 3, for slightly larger cards in the 992–1199px band. This PR instead applies 4 columns from 992px up per the requested behavior ("4 per row on laptop"). Easy to switch if preferred.

Check before Pull Request is ready:

Widen the onboarding starter-sites grid from 3 to 4 columns at the
laptop breakpoint (>=992px) so users see ~8 templates at once instead
of leaving large empty margins on wider screens. Tablet stays at 2
columns, mobile at 1.

Keep the JS in sync with the new column count:
- Page size 9 -> 12 (initial useState, the reset effect, and the
  lazy-load increment) so each render fills whole rows. 12 divides
  evenly by both 3 and 4, so rows stay full at every breakpoint.
- Search "Browse more" divider padding % 3 -> % 4 so the divider lands
  on a clean row boundary under the 4-column grid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QrGf4K9upxDKhRPVCztoLs
@ineagu ineagu added enhancement Request to improve or optimize an existing feature or functionality in the project small (1-3h) This label is used for issues that can be completed within 3 hours or less. labels Jun 22, 2026
@ineagu ineagu changed the base branch from master to development June 22, 2026 14:05
@ineagu ineagu requested a review from HardeepAsrani June 22, 2026 14:06
@HardeepAsrani

Copy link
Copy Markdown
Member

@codex[agent] Fix the failing e2e test by making the selector more specific.

@HardeepAsrani HardeepAsrani added the pr-checklist-skip Allow this Pull Request to skip checklist. label Jun 22, 2026
@pirate-bot pirate-bot added the pr-checklist-complete The Pull Request checklist is complete. (automatic label) label Jun 22, 2026
The grid now renders a full page of 12 cards, so card page-shot buttons
(e.g. "Gallery", "Ballet Blog", "All Courses") contain "all" as a substring.
The non-exact getByRole('button', { name: 'All' }) locator then resolved to
multiple elements (Playwright strict mode violation). Match the All/Free
filter buttons by exact name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYVWBEDjCM3wzBP6Ew1Ku4
@pirate-bot

Copy link
Copy Markdown
Collaborator

Plugin build for 1f51577 is ready 🛎️!

@Codex

Codex AI commented Jun 22, 2026

Copy link
Copy Markdown

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 127.0.0.11
    • Triggering command: REDACTED, pid is -1 (packet block)
  • api.themeisle.com
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl --cd /home/REDACTED/wor--verify s/@openai/codex-/home/REDACTED/.cache/ms-playwright/webkit-2287/minibrowser-wpe/sys/lib/libjxl.so.0.8.2 x86-64.so.2 (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl -v (dns block)
  • fonts.googleapis.com
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl --cd /home/REDACTED/wor--verify s/@openai/codex-/home/REDACTED/.cache/ms-playwright/webkit-2287/minibrowser-wpe/sys/lib/libjxl.so.0.8.2 x86-64.so.2 (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl -v (dns block)
  • secure.gravatar.com
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl --cd /home/REDACTED/wor--verify s/@openai/codex-/home/REDACTED/.cache/ms-playwright/webkit-2287/minibrowser-wpe/sys/lib/libjxl.so.0.8.2 x86-64.so.2 (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl -v (dns block)
  • wordpress.org
    • Triggering command: /opt/hostedtoolcache/node/22.22.3/x64/bin/node node /home/REDACTED/work/templates-patterns-collection/templates-patterns-collection/e2e-tests/node_modules/.bin/wp-env start /tmp/runc-process262611402 --detach --pid-file /run/containerd/io.containerd.runtime.v2.task/moby/af3ba89c285e43ec4ca997334ed1d79a140431e42633e69cbb6e562908063fbd/08adfb9306af7e2c1f02968a1dbdb0c1762761bc3e08262f72d2870043d1fc6b.pid af3ba89c285e43ec4ca997334ed1d79a140431e42633e69cbb6e562908063fbd (dns block)
    • Triggering command: /opt/hostedtoolcache/node/22.22.3/x64/bin/node node /home/REDACTED/work/templates-patterns-collection/templates-patterns-collection/e2e-tests/node_modules/@wordpress/scripts/scripts/test-playwright.js specs/onboarding.spec.js -g Site Listing Page Rendering --local core.hooksPath n/getconf (dns block)
    • Triggering command: /opt/hostedtoolcache/node/22.22.3/x64/bin/node node /home/REDACTED/work/templates-patterns-collection/templates-patterns-collection/e2e-tests/node_modules/@wordpress/scripts/scripts/test-playwright.js specs/onboarding.spec.js -g Site Listing Page Rendering docker awk e6a864e9b032c98aa27a74141df5a8305a0/log.json snapshots/019eefbash y-server-cert ns-collection/e2--root ldd t/we�� nibrowser-wpe/li/run/containerd/io.containerd.runtime.v2.task/moby/af3ba89c285e43ec4ca997334ed1dsh bash ools/ldd e6a864e9b032c98aa27a74141df5a8305a0/2fb1023d4c4570855d71a18fb2f5fdc25c193c2089a75aa26d59bbfae5aabb74.pid runtime-runc/mob-C de_modules/.bin//home/REDACTED/work/templates-patterns-collection/templates-patterns-collection /lib64/ld-linux-hash-object (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@ineagu ineagu merged commit 4c1e8eb into development Jun 22, 2026
8 checks passed
@ineagu ineagu deleted the feat/onboarding-4-sites-per-row branch June 22, 2026 15:31
@pirate-bot

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 1.4.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@pirate-bot pirate-bot added the released Indicate that an issue has been resolved and released in a particular version of the product. label Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Request to improve or optimize an existing feature or functionality in the project pr-checklist-complete The Pull Request checklist is complete. (automatic label) pr-checklist-skip Allow this Pull Request to skip checklist. released Indicate that an issue has been resolved and released in a particular version of the product. small (1-3h) This label is used for issues that can be completed within 3 hours or less.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Onboarding grid: show 4 starter sites per row on laptop and up

4 participants