Skip to content

SEO: admin-page style tweaks (canvas, preview cards, sticky tabs)#49874

Merged
angelablake merged 3 commits into
trunkfrom
add/seo-off-white-page-canvas
Jun 24, 2026
Merged

SEO: admin-page style tweaks (canvas, preview cards, sticky tabs)#49874
angelablake merged 3 commits into
trunkfrom
add/seo-off-white-page-canvas

Conversation

@angelablake

@angelablake angelablake commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Fixes # N/A

Tracking issue: JETPACK-1764

Proposed changes

A few visual-polish tweaks to the modernized Jetpack SEO admin pages, so they read more clearly and stay consistent with the other recently-refreshed dashboards (Newsletter, Social, VideoPress).

  • Off-white page canvas — paint the page shell #fcfcfc (via --jetpack-seo-page-bg-canvas) on every SEO tab so the white settings cards stand out instead of white-on-white. Matches the Newsletter/Social/VideoPress convention.
  • Social link-preview body contrast — the __card-body (domain/title/description block) used bg-surface-neutral, which now matches the canvas and read as white on the white card. Stepped it to bg-surface-neutral-weak so it reads as a recessed panel, distinct from both the card and the page. The preview image is unchanged.
  • Sticky tab strip fix — the dashboard tab strip scrolled away instead of staying pinned. SEO is route-based, so Tabs.Root wrapped only the strip and its sticky containing block was strip-height. Fixed by rendering the route content inside Tabs.Root (passed as children) — mirroring the Newsletter and VideoPress dashboards — so the strip's containing block spans the full page. .jetpack-seo-tabs is flex: 0 0 auto for the scrolling tabs, with a :has(.jetpack-seo-page-content--flush) branch that re-applies the layout mixin's fill treatment to the full-bleed DataViews Content tab so it is unchanged.

CSS + small markup change (content moved inside Tabs.Root); no behavior/logic changes.

Related product discussion/links

  • Tracking issue: JETPACK-1764 (Phase 1: Jetpack SEO — The Home Base → Fast Follow)

Does this pull request change what data or activity we track or use?

No.

Testing instructions

  • Install this PR's build (Jetpack Beta, by PR number) and go to Jetpack → SEO.
  • Canvas: the background behind the cards reads faint off-white; white cards stand out; consistent across Overview / Settings / Content / AI; matches the Newsletter page.
  • Sticky tabs: on a long tab (Settings or AI), scroll down — the tab strip stays pinned at the top the whole way.
  • Content tab (regression check): open Content (the DataViews list) — confirm it still fills the width, loads, and behaves as before.
  • Preview body: on Settings, the social (Facebook/X) link preview's lower content block should be a soft gray, clearly distinct from the white card and the page. The Google preview and the preview image are unchanged.
  • Note: a separate, pre-existing washed-out look on WordPress.com (Dotcom) is environmental and out of scope here.

Apply the off-white canvas to every SEO admin tab via the shared page-shell
selector, matching the convention adopted by the Newsletter, Social, and
VideoPress dashboards. Bound to a named CSS variable, with the three-layer
override (body, .jp-admin-page, .jp-admin-page__page) so each tab inherits the
canvas without opting out.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WoA dev site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin (Jetpack), and enable the add/seo-off-white-page-canvas branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack add/seo-off-white-page-canvas

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

@github-actions

Copy link
Copy Markdown
Contributor

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • ✅ Add a "[Status]" label (In Progress, Needs Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖


Follow this PR Review Process:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Make sure to test your changes on all platforms that it applies to. You're responsible for the quality of the code you ship.
  3. You can use GitHub's Reviewers functionality to request a review.
  4. When it's reviewed and merged, you will be pinged in Slack to deploy the changes to WordPress.com simple once the build is done.

If you have questions about anything, reach out in #jetpack-developers for guidance!

@jp-launch-control

jp-launch-control Bot commented Jun 24, 2026

Copy link
Copy Markdown

Code Coverage Summary

This PR did not change code coverage!

That could be good or bad, depending on the situation. Everything covered before, and still is? Great! Nothing was covered before? Not so great. 🤷

Full summary · PHP report · JS report

Give `.jetpack-seo-preview__card-body` the `bg-surface-neutral-weak` (#f4f4f4)
surface instead of `bg-surface-neutral` (#fcfcfc), which now matches the page
canvas and read as white on the white card. The preview image keeps the
original surface token. Also broadens the canvas changelog entry to cover the
page-wide style tweaks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@angelablake angelablake changed the title SEO: off-white page canvas for better card contrast SEO: admin-page style tweaks (canvas, preview cards, sticky tabs) Jun 24, 2026
@angelablake angelablake force-pushed the add/seo-off-white-page-canvas branch from 479fbc6 to 26016fe Compare June 24, 2026 03:40
@angelablake angelablake marked this pull request as ready for review June 24, 2026 03:40
@angelablake angelablake added [Status] Needs Review This PR is ready for review. and removed [Status] In Progress labels Jun 24, 2026
@angelablake angelablake requested a review from Copilot June 24, 2026 03:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Jetpack SEO admin UI styling/layout to better match other modernized Jetpack dashboards, improving visual separation and keeping the route-based tab strip sticky while scrolling.

Changes:

  • Add an off-white canvas background for the SEO admin page shell so white cards stand out.
  • Adjust the social link-preview card body background to a more recessed neutral surface.
  • Restructure the SEO dashboard tabs wrapper so the tab strip remains pinned during scroll, with special handling for the full-bleed Content (DataViews) tab.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
projects/packages/seo/changelog/update-seo-admin-page-style-tweaks Adds a changelog entry describing the SEO admin page visual polish.
projects/packages/seo/changelog/fix-seo-sticky-header-tabs Adds a changelog entry describing the sticky tab strip fix.
projects/packages/seo/_inc/screens/settings/style.scss Tweaks social preview card body background to improve contrast with the page canvas/cards.
projects/packages/seo/_inc/dashboard/dashboard-page.tsx Wraps route content inside the dashboard tab/navigation component.
projects/packages/seo/_inc/dashboard/dashboard-nav.tsx Extends the nav component to render route content within Tabs.Root and adds a CSS hook class.
projects/packages/seo/_inc/admin-page-layout.scss Introduces canvas background styling and tab/root layout rules (including a flush/content-specific layout path).

Significance: patch
Type: changed

Visual polish for the SEO admin pages: a slightly off-white (#fcfcfc) page canvas so the white settings cards stand out (matching the Newsletter, Social, and VideoPress dashboards), and a recessed gray body on the social link-preview card so its content reads apart from the card and the page.
Comment on lines +24 to +28
* The route's content is rendered as `children` INSIDE `Tabs.Root`, so the
* sticky tab strip's containing block spans the full page height and stays
* pinned while the content scrolls. This mirrors the modernized Newsletter and
* VideoPress dashboards; rendering the content as a sibling of `Tabs.Root`
* leaves the strip in a strip-height containing block and it unsticks on scroll.
Comment on lines +206 to +209
// Recessed surface (`#f4f4f4`) rather than `bg-surface-neutral` (#fcfcfc):
// the latter now matches the page canvas and reads as white on the white
// card, so the link-preview body needs the darker step to stand apart from
// both the card and the page. The image keeps `bg-surface-neutral`.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Significance: patch
Type: changed

Visual polish for the SEO admin pages: a slightly off-white (#fcfcfc) page canvas so the white settings cards stand out (matching the Newsletter, Social, and VideoPress dashboards), and a recessed gray body on the social link-preview card so its content reads apart from the card and the page.
Comment on lines +24 to +28
* The route's content is rendered as `children` INSIDE `Tabs.Root`, so the
* sticky tab strip's containing block spans the full page height and stays
* pinned while the content scrolls. This mirrors the modernized Newsletter and
* VideoPress dashboards; rendering the content as a sibling of `Tabs.Root`
* leaves the strip in a strip-height containing block and it unsticks on scroll.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Significance: patch
Type: changed

Visual polish for the SEO admin pages: a slightly off-white (#fcfcfc) page canvas so the white settings cards stand out (matching the Newsletter, Social, and VideoPress dashboards), and a recessed gray body on the social link-preview card so its content reads apart from the card and the page.
Comment on lines +24 to +28
* The route's content is rendered as `children` INSIDE `Tabs.Root`, so the
* sticky tab strip's containing block spans the full page height and stays
* pinned while the content scrolls. This mirrors the modernized Newsletter and
* VideoPress dashboards; rendering the content as a sibling of `Tabs.Root`
* leaves the strip in a strip-height containing block and it unsticks on scroll.
Render the route content inside `Tabs.Root` (passed as `children`), mirroring the
modernized Newsletter and VideoPress dashboards, so the sticky
`.jp-admin-page-tabs` strip has a full-height containing block and stays pinned
while the content scrolls. SEO is route-based (no `Tabs.Panel`), so previously
the content was a sibling of `Tabs.Root` and the strip's containing block was
only strip-height — it unstuck on the first scroll.

`.jetpack-seo-tabs` is `flex: 0 0 auto` (sizes to full content height so the
strip pins the whole way down), with a `:has(.jetpack-seo-page-content--flush)`
branch that re-applies the layout mixin's fill treatment to the full-bleed
Content (DataViews) tab's content div — reproducing the exact context it had as
a direct page-column child, leaving that tab unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@angelablake angelablake force-pushed the add/seo-off-white-page-canvas branch from 2ad07cb to efd1faf Compare June 24, 2026 04:32
@angelablake angelablake merged commit 2532621 into trunk Jun 24, 2026
76 checks passed
@angelablake angelablake deleted the add/seo-off-white-page-canvas branch June 24, 2026 04:51
@github-actions github-actions Bot removed the [Status] Needs Review This PR is ready for review. label Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants