Skip to content

Social: modernize Add-account modal + connected-accounts onto WPDS (#48824 PR 2.5)#48833

Merged
dhasilva merged 11 commits into
trunkfrom
update/social-modernization-modal-wpds
May 25, 2026
Merged

Social: modernize Add-account modal + connected-accounts onto WPDS (#48824 PR 2.5)#48833
dhasilva merged 11 commits into
trunkfrom
update/social-modernization-modal-wpds

Conversation

@keoshi
Copy link
Copy Markdown
Contributor

@keoshi keoshi commented May 14, 2026

Summary

Follow-up polish to PR 2 under the Social modernization umbrella (#48824). Refreshes the connected-accounts list and the shared Add-account modal onto a single WPDS disclosure-row visual language. Stacks on PR 2 — depends on it merging first.

Closes the umbrella's deferred "Per-account inline disclosure rows" item.

Beyond the primitive swaps, two changes are worth calling out explicitly: this PR migrates the Add-account modal to the @wordpress/ui Dialog, and it adds a free-plan upsell to the per-connection message-template editor (a disabled textarea + Upgrade link) on the modernized chassis. Both are detailed in Highlights, and the upsell adds a Tracks event — see the data/privacy section.

Highlights

  • Single disclosure pattern for both surfaces. ServiceItem (modal) and ConnectionInfo (chassis Overview) render as a flat-row Collapsible.Trigger with a CSS-rotate chevron, and each list lives inside a single Card.Root with edge-to-edge dividers. The whole row is one click target; the profile-name link and the status/action controls stop propagation so they don't toggle the row.
  • Add-account modal on the WPDS Dialog. The modal moves from the wp-components Modal to @wordpress/ui's Dialog (size="large", full on mobile), dropping the custom 65rem width. The Dialog portals its own backdrop/popup, so the in-modal info-icon tooltip clears the frame without the previous z-index: 100001 workaround. While listing services the frame is pinned (integer top/bottom insets) below #wpadminbar with scrollbar-gutter: stable both-edges, so expanding a row scrolls inside the frame instead of growing/re-centering it or shifting its contents.
  • WPDS-only primitives. __experimentalInputControl replaces raw <input>s for Mastodon/Bluesky; the info-icon affordance is now an IconButton (built-in tooltip) from @wordpress/ui; the Bluesky reconnect message uses Notice from @wordpress/ui; layout flex wrappers use Stack; typography uses Text (with body-lg for the account name / service title); the chevron and decorative icons come from @wordpress/ui's Icon. Breakpoint detection uses useViewportMatch from @wordpress/compose.
  • New free-plan upsell on the message-template editor. On the modernized chassis (non-Simple sites), when the social-message-templates sticker or the social-enhanced-publishing plan is missing, ConnectionTemplateEditor now renders a disabled textarea seeded with the site's default share message plus an Upgrade link — previously it rendered nothing. Legacy, Simple, and block-editor surfaces are unchanged (still render nothing). This is a new user-facing free-plan nudge, not just a primitive swap.
  • New size="medium" variant on ConnectionIcon — 32×32 avatar + 16×16 service icon for the chassis Overview rows. Default stays small (28×28 / 14×14) so other call sites (dataviews, scheduled posts, sharing activity) are untouched.
  • Compact + neutral controls. Disconnect button → size="compact" tone="neutral"; in-row Connect / Reconnect button → size="compact". The account name renders in neutral foreground at body-lg (15px), with the network label beneath in --wpds-color-fg-content-neutral-weak.
  • Tokens. SCSS pass replaces hardcoded gaps, paddings, focus widths, white surfaces, and font weights with --wpds-dimension-* / --wpds-typography-* / --wpds-color-* tokens (with safe physical fallbacks), and uses --wpds-motion-* tokens for the disclosure/chevron transitions.
  • Tests. Render-smoke + interaction tests for the modern components (ModernConnectionInfo, ModernServiceItem, ModernServicesList, ModernServiceConnectionInfo, ModernCustomInputs, ModernManageConnectionsModal), including a click-on-name-doesn't-toggle regression test for the disclosure row.

Screenshots

Note: the modal screenshots below predate the Dialog migration; the services list / Card layout is unchanged, only the modal frame primitive differs.

Chassis Overview — connected accounts card

Connected accounts card

Chassis Overview — expanded connection (MarkAsShared + WPDS Tooltip + neutral Disconnect)

Expanded connection row

Chassis Overview — expanded connection with Message Templates editor (sticker + paid plan)

Expanded connection row with per-connection message template editor

Add-account modal — services joined as one Card

Modal services list

Add-account modal — Bluesky expanded with InputControl

Bluesky expanded with InputControl

Testing instructions:

  1. Pull this branch and rebuild: jetpack build packages/publicize --deps (or rsync the Jetpack plugin to a Jurassic Ninja site — fortunately-specific-gentoo.jurassic.ninja is set up if you'd rather skip the build).
  2. Activate the Publicize module on a Jetpack-connected site: wp jetpack module activate publicize.
  3. Without paid Social features, dismiss the pricing-page nudge: wp option update jetpack-social_show_pricing_page 0 (otherwise should_preempt_to_legacy() routes the request back to the legacy SocialAdminPage).
  4. Enable the chassis filter: add_filter( 'rsm_jetpack_ui_modernization_social', '__return_true' ); and connect at least 2-3 social accounts (mix of OAuth services like LinkedIn/Tumblr and custom-input services like Mastodon/Bluesky if possible).
  5. Go to wp-admin → Jetpack → SocialOverview tab. Expected: a single "Connected accounts" Card with rows separated by dividers; 32×32 avatars on the left, account name in neutral foreground + network name underneath in muted gray, chevron on the right.
  6. Click anywhere on a row — including the white space or the network name. Expected: the row toggles open and the chevron rotates 180°. Clicking again toggles it closed.
  7. Click the username Link inside a row (the part with the ↗ arrow). Expected: opens the profile in a new tab and does not toggle the row.
  8. Expand a connection. Expected: the disclosure body shows the "Mark the connection as shared" toggle, an i info icon next to it, the connection template editor, and a compact neutral "Disconnect" button.
  9. Hover the i info icon. Expected: the IconButton tooltip opens with zero delay showing "If enabled, the connection will be available to all administrators, editors, and authors." It renders fully (not clipped by the surrounding Card).
  10. Click the page-header Add account button. Expected: the WPDS Dialog opens; the services list is one continuous Card with rows separated by dividers (no per-service Card borders). The frame sits clear of the admin bar at the top.
  11. Click anywhere on the Bluesky or Mastodon row. Expected: the row expands inline with WPDS InputControl fields (Handle / App password), label above input, help text below. Type a Bluesky handle ending in .bsky.social with a dot in the middle (e.g. foo.bar.bsky.social) — the inline error text appears in red and the input border turns red.
  12. Expand a service with an existing connection (e.g. Tumblr) and hover the i info icon next to the "Mark the connection as shared" toggle inside the modal. Expected: tooltip opens with zero delay above the Dialog frame (not behind it) — no z-index workaround needed.
  13. Expand a service whose disclosure is tall enough to overflow (e.g. Instagram, with its preview). Expected: the Dialog frame stays put and a scrollbar appears inside the frame; the rows/buttons do not shift left, and the frame does not re-center.
  14. Click the Disconnect button inside the modal disclosure. Expected: it uses the same compact, neutral outline styling as the chassis Overview disconnect button, and the confirmation dialog still opens.
  15. Turn the filter off and reload. Expected: the legacy Social admin page renders unchanged, and the Add-account modal opened from it renders the legacy UI (wp-components Modal + legacy inputs) — the modernized Dialog/internals only appear with the filter on. (The legacy page never mounts ModernizationProvider, so the shared components keep their original rendering.)

Message Templates interoperability + free-plan upsell

The per-connection message template editor (ConnectionTemplateEditor) is mounted inside both ConnectionInfo and ServiceConnectionInfo. It self-gates on social-message-templates (WPCOM blog sticker) AND social-enhanced-publishing (paid plan).

  1. Paid path. Confirm both flags are active: from the browser console on the Social admin page, JetpackScriptData.site.plan.features.active.includes('social-message-templates') && JetpackScriptData.site.plan.features.active.includes('social-enhanced-publishing') returns true. Expand a connection — a "Custom message for this connection" textarea appears between the "Mark the connection as shared" toggle and "Disconnect". Type a template with tokens like {title}/{content}; the value debounces and autosaves via updateConnectionById (~1s after typing pauses) and persists across reloads. The "Available placeholders" popover renders inside the disclosure panel without clipping.
  2. Free-plan upsell (new). On a non-Simple site with the chassis filter on but without the message-templates sticker / enhanced-publishing plan, expand a connection. Expected: a disabled "Custom message for this connection" textarea seeded with the site's default share message, plus an Upgrade link. Clicking the link fires the jetpack_social_per_network_customization_upgrade_click Tracks event and navigates to the upgrade flow. On Simple sites and in the block editor, no editor renders.
  3. Open the Add-account modal and expand a service row with an existing connection — the same template editor (paid editor or free-plan upsell, per the site's plan) appears inside the modal's disclosure panel, with no styling regressions vs. the chassis Overview surface.

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

Yes — one net-new Tracks event. The new free-plan upsell on ConnectionTemplateEditor fires jetpack_social_per_network_customization_upgrade_click when the Upgrade link is clicked. It only fires on the modernized chassis (flag-gated) for sites missing the message-templates feature, carries no new personal data, and is the only tracking change.

Everything else is a behavior-preserving primitive swap: the underlying components in ConnectionInfo, ServiceItem, Disconnect, ConnectionName, ConnectionIcon, CustomInputs, and ManageConnectionsModal move to their WPDS equivalents without changing the data flow, REST calls, post-meta keys, or option reads/writes. No new REST endpoints, no new external requests. The form-submission path inside the modal (requestAccess via FormData) is unchanged — InputControl forwards name to the underlying <input> so FormData(form) continues to pick up the handle / app-password values exactly as before.

🤖 Generated with Claude Code

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

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 update/social-modernization-modal-wpds branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack update/social-modernization-modal-wpds

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 github-actions Bot added [Feature] Publicize Now Jetpack Social, auto-sharing [Package] Publicize [Plugin] Jetpack Issues about the Jetpack plugin. https://wordpress.org/plugins/jetpack/ [Plugin] Social Issues about the Jetpack Social plugin labels May 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

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!


Jetpack plugin:

The Jetpack plugin has different release cadences depending on the platform:

  • WordPress.com Simple releases happen as soon as you deploy your changes after merging this PR (PCYsg-Jjm-p2).
  • WoA releases happen weekly.
  • Releases to self-hosted sites happen monthly:
    • Scheduled release: June 2, 2026
    • Code freeze: June 1, 2026

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Social plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.

@github-actions github-actions Bot added the [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. label May 14, 2026
@keoshi keoshi added [Status] Needs Review This PR is ready for review. and removed [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. labels May 14, 2026
@keoshi keoshi self-assigned this May 14, 2026
@jp-launch-control
Copy link
Copy Markdown

jp-launch-control Bot commented May 14, 2026

Code Coverage Summary

Coverage changed in 5 files.

File Coverage Δ% Δ Uncovered
projects/packages/publicize/_inc/components/services/service-item-details.tsx 0/13 (0.00%) 0.00% 2 ❤️‍🩹
projects/packages/publicize/_inc/components/connection-management/connection-template/index.tsx 35/37 (94.59%) -1.41% 1 ❤️‍🩹
projects/packages/publicize/_inc/components/services/connect-form.tsx 14/26 (53.85%) 1.67% 1 ❤️‍🩹
projects/packages/publicize/_inc/components/connection-management/index.tsx 19/20 (95.00%) 0.88% 0 💚
projects/packages/publicize/_inc/components/manage-connections-modal/index.tsx 22/22 (100.00%) 0.00% 0 💚

7 files are newly checked for coverage. Only the first 5 are listed here.

File Coverage
projects/packages/publicize/_inc/components/connection-management/connection-info-modern.tsx 8/9 (88.89%) 💚
projects/packages/publicize/_inc/components/manage-connections-modal/index-modern.tsx 19/19 (100.00%) 💚
projects/packages/publicize/_inc/components/services/custom-inputs-modern.tsx 18/18 (100.00%) 💚
projects/packages/publicize/_inc/components/services/service-connection-info-modern.tsx 10/10 (100.00%) 💚
projects/packages/publicize/_inc/components/services/service-item-modern.tsx 17/17 (100.00%) 💚

Full summary · PHP report · JS report

@keoshi keoshi force-pushed the update/social-modernization-overview branch from 8713182 to f6c81e3 Compare May 15, 2026 15:13
@keoshi keoshi requested a review from a team as a code owner May 15, 2026 15:13
@keoshi keoshi force-pushed the update/social-modernization-modal-wpds branch from 6179a7a to 3e6290e Compare May 15, 2026 15:13
@keoshi keoshi force-pushed the update/social-modernization-overview branch from f6c81e3 to 7d0af04 Compare May 18, 2026 09:36
@keoshi keoshi force-pushed the update/social-modernization-modal-wpds branch from 3e6290e to fe74066 Compare May 18, 2026 09:36
@anomiex anomiex removed the request for review from a team May 18, 2026 14:42
@dhasilva dhasilva force-pushed the update/social-modernization-overview branch 2 times, most recently from 8a66487 to 4e7d6d8 Compare May 22, 2026 23:47
Base automatically changed from update/social-modernization-overview to trunk May 23, 2026 00:14
keoshi and others added 2 commits May 22, 2026 21:21
Round out PR 2's chassis Overview card and the legacy/chassis-shared
Add-account modal so they share one disclosure-row visual language:

- `ServiceItem` (modal) and `ConnectionInfo` (Overview) collapse onto a
  single flat-row `Collapsible.Trigger` with a CSS-rotate chevron — each
  list now lives inside a single `Card.Root` with edge-to-edge dividers
  between rows. Inline Connect / Reconnect / Disconnect controls keep
  their click handlers via a narrow `stopPropagation` wrapper.
- Custom Mastodon/Bluesky inputs swap raw `<input>`/`<label>` pairs for
  `__experimentalInputControl`. Manage-modal footer text uses WPDS `Text`
  with `body-sm`; the MarkAsShared info tooltip and the modal-context
  one move from `IconTooltip` to WPDS `Tooltip` (z-index bumped above
  the Modal portal so the popup is visible).
- `Tooltip.Provider delay={0}` mounted at the chassis page and the
  modal so every info-icon tooltip in Social opens immediately.
- New `size="medium"` variant on `ConnectionIcon` (32×32 avatar +
  16×16 service icon) for the chassis Overview rows; default `small`
  preserves existing call sites.
- `Disconnect` button → `size="compact" tone="neutral"`; in-row Connect
  button → `size="compact"` so it sits flush against the row height.
- Handle text drops to neutral foreground (`tone="neutral"` on
  `<Link>`), 14px / 500 weight, with the network name beneath in
  `--wpds-color-fg-content-neutral-weak`.
- SCSS pass replaces hard-coded gaps / paddings / focus widths with
  `--wpds-dimension-*`, `--wpds-typography-*`, and
  `--wpds-color-fg-content-neutral-weak` tokens.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR 2.5's WPDS imports made the legacy `social-admin-page.js` bundle
unusable on WP < 7.0 in two ways:

- `@wordpress/ui` pulls `wp-theme` (and `wp-private-apis` / `wp-notices`)
  through the dependency-extraction plugin. Those script handles ship
  via `WP_Build_Polyfills` for the chassis but were never registered
  on the legacy enqueue path, so WordPress silently dropped the
  script on WP 6.9.4 and the page rendered blank. Now
  `Social_Admin_Page::enqueue_admin_scripts()` calls
  `WP_Build_Polyfills::register('jetpack-social', SCRIPT_HANDLES)`
  with the same guard the chassis uses.
- `ConnectionInfo` and `ServiceConnectionInfo` now mount
  `Tooltip.Root` from `@wordpress/ui` for the MarkAsShared info icon.
  Without a `Tooltip.Provider` ancestor the primitive throws on mount
  and crashes the legacy React tree. The chassis page and the modal
  already provide one; this commit adds the same wrap at the legacy
  entry point (`entry-points/social-admin-page.tsx`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
.chevron {
color: var(--wpds-color-fg-content-neutral, #1e1e1e);
flex-shrink: 0;
transition: rotate 0.15s ease-out;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You could use Motion tokens, tho not sure if Jetpack's @wordpress/theme package is up-to-date enough to have them.

flex-shrink: 0;
transition: rotate 0.15s ease-out;

@media (prefers-reduced-motion) {
Copy link
Copy Markdown
Member

@simison simison May 25, 2026

Choose a reason for hiding this comment

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

Alternatively, you could wrap the whole transition above with using not: @media not (prefers-reduced-motion) { } like you're doing a few lines below.

}

@media not (prefers-reduced-motion) {
transition: all 0.15s ease-out;
Copy link
Copy Markdown
Member

@simison simison May 25, 2026

Choose a reason for hiding this comment

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

Could use motion tokens (noted above)

Comment on lines +160 to +162
align-items: center;
display: flex;
gap: var(--wpds-dimension-gap-sm, 8px);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks like could be Stack.

return (
<>
<ModernServicesList />
<Text variant="body-sm" render={ <p className={ styles[ 'manual-share' ] } /> }>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You could pass className directly to Text too I think 🤔

'Want to share to other networks? Use our Manual Sharing feature from the editor.',
'jetpack-publicize-pkg'
) }
&nbsp;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You can use Stack to add spacing between elements.

Comment on lines +35 to +37
const title = hasKeyringResult
? __( 'Connection confirmation', 'jetpack-publicize-pkg' )
: _x( 'Manage Jetpack Social connections', '', 'jetpack-publicize-pkg' );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think these ternaries tend to create i18n issues with how we bundle code, so might need to split to separate constants.


const { setKeyringResult, closeConnectionsModal, setReconnectingAccount } = useDispatch( store );

const [ isSmall ] = useBreakpointMatch( 'sm' );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

WDYT if we use core viewport package instead of the Jetpack one?

@@ -0,0 +1,91 @@
import { getRedirectUrl, useBreakpointMatch } from '@automattic/jetpack-components';
import { Modal } from '@wordpress/components';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You could use Dialog from @wordpress/ui instead here.

Comment on lines +1 to +3
.modal.modal {
width: 65rem;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ideally we instead use size prop instead of custom modal sizes. Dialog component from wp-ui would be even better tho. :-)

@@ -0,0 +1,176 @@
import {
__experimentalInputControl as InputControl, // eslint-disable-line @wordpress/no-unsafe-wp-apis
Notice,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You could use Notice from @wordpress/ui instead.

import { Text } from '@automattic/jetpack-components';
import { useSelect } from '@wordpress/data';
import { __ } from '@wordpress/i18n';
import { Icon, info } from '@wordpress/icons';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Icon could be imported from @wordpress/ui instead.

@@ -0,0 +1,122 @@
import { Text } from '@automattic/jetpack-components';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could Text from @wordpress/ui work instead?

Comment on lines +70 to +76
<button
type="button"
className={ styles[ 'mark-shared-help' ] }
aria-label={ markAsSharedHelp }
>
<Icon icon={ info } size={ 18 } />
</button>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Would IconButton work here instead of custom button styles?

Comment on lines +79 to +88
{ /*
* The WPDS Tooltip positioner defaults to
* `z-index: var(--wp-ui-tooltip-z-index, initial)`,
* which falls back to `auto`. Inside the
* wp-components Modal (z-index ~100000), the
* popup ends up behind the modal frame. Pin
* the popup above the modal so the tooltip
* is visible when hovering inside the modal.
*/ }
<Tooltip.Popup sideOffset={ 8 } style={ { zIndex: 100001 } }>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Instead of the hacky fix, you should try if the latest @wordpress/ui fixes it (it likely does), or if you have misconfigured portal support. Switching to Dialog instead of Modal might also fix it.

@@ -0,0 +1,145 @@
import { useBreakpointMatch } from '@automattic/jetpack-components';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Using core viewport package instead of the Jetpack one might be good.

import { useSelect } from '@wordpress/data';
import { useCallback, useEffect, useRef, useState } from '@wordpress/element';
import { __, _x } from '@wordpress/i18n';
import { Icon, chevronDown } from '@wordpress/icons';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could import Icon from @wordpress/ui instead.

}

.service-connection-list {
border-top: 1px solid var(--jp-gray-5);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could use WPDS styles instead.

Comment on lines +83 to +84
display: flex;
gap: var(--wpds-dimension-gap-lg, 16px);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could use Stack component instead.

Comment on lines +170 to +172
display: flex;
flex-direction: column;
gap: 1rem;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stack would work here.

Comment on lines +176 to +177
display: flex;
gap: 1rem;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stack would work here.

Comment on lines +180 to +184
flex: 1;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stack would work here.

Comment on lines +228 to +230
display: flex;
flex-direction: column;
gap: 0.5rem;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stack would work here.

Comment on lines +248 to +250
align-items: center;
display: flex;
gap: var(--wpds-dimension-gap-sm, 8px);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stack would work here.

- Fix profile-name link toggling the disclosure row (stopPropagation
  wrapper, mirroring the status wrap)
- Migrate the Add-account modal to the @wordpress/ui Dialog: drops the
  custom width + z-index tooltip hack; pin it below #wpadminbar and
  reserve the scrollbar gutter so rows don't shift on overflow
- Swap to @wordpress/ui Notice / Icon / IconButton / Text / Stack, and
  body-lg Text for the name/title; use useViewportMatch from
  @wordpress/compose instead of the Jetpack breakpoint hook
- Use WPDS motion tokens for the disclosure transitions; restore the
  Bluesky field error affordance; drop dead CSS
- Add render-smoke + interaction tests for the modern components,
  including a click-on-name-doesn't-toggle regression test

All changes live in *-modern variants rendered only inside
ModernizationProvider, so the legacy admin page and block editor are
unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dhasilva dhasilva merged commit c1f1b51 into trunk May 25, 2026
75 checks passed
@dhasilva dhasilva deleted the update/social-modernization-modal-wpds branch May 25, 2026 19:52
@github-actions github-actions Bot added [Status] UI Changes Add this to PRs that change the UI so documentation can be updated. and removed [Status] Needs Review This PR is ready for review. labels May 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Publicize Now Jetpack Social, auto-sharing [JS Package] Connection [JS Package] Social Logos [Package] Publicize [Plugin] Jetpack Issues about the Jetpack plugin. https://wordpress.org/plugins/jetpack/ [Plugin] Social Issues about the Jetpack Social plugin RNA [Status] UI Changes Add this to PRs that change the UI so documentation can be updated. [Tests] Includes Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants