From effdb8a6525db0eecc9523dcfb9c6bf2d4b63a30 Mon Sep 17 00:00:00 2001
From: tbradsha <32492176+tbradsha@users.noreply.github.com>
Date: Mon, 4 May 2026 23:14:44 -0600
Subject: [PATCH 01/13] Bump @wordpress/eslint-plugin to 25.1.0
---
pnpm-lock.yaml | 92 ++++++++++++++++++++++++++++++-------
tools/js-tools/package.json | 2 +-
2 files changed, 77 insertions(+), 17 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3b7f282dcfc6..a537d6ae228e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6099,8 +6099,8 @@ importers:
specifier: 7.0.0-dev.20260225.1
version: 7.0.0-dev.20260225.1
'@wordpress/eslint-plugin':
- specifier: 25.0.0
- version: 25.0.0(@babel/core@7.29.0)(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint-plugin-import@2.32.0)(eslint-plugin-jest@29.15.0(eslint@9.39.4)(jest@30.3.0)(typescript@5.9.3))(eslint-plugin-jsdoc@62.8.0(eslint@9.39.4))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4))(eslint-plugin-playwright@2.10.0(eslint@9.39.4))(eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4))(eslint-plugin-react@7.37.5(eslint@9.39.4))(eslint@9.39.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))(typescript@5.9.3)(wp-prettier@3.0.3)
+ specifier: 25.1.0
+ version: 25.1.0(@babel/core@7.29.0)(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint-plugin-import@2.32.0)(eslint-plugin-jest@29.15.0(eslint@9.39.4)(jest@30.3.0)(typescript@5.9.3))(eslint-plugin-jsdoc@62.8.0(eslint@9.39.4))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4))(eslint-plugin-playwright@2.10.0(eslint@9.39.4))(eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4))(eslint-plugin-react@7.37.5(eslint@9.39.4))(eslint@9.39.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))(typescript@5.9.3)(wp-prettier@3.0.3)
'@wordpress/jest-console':
specifier: 8.44.0
version: 8.44.0(jest@30.3.0)
@@ -10409,8 +10409,8 @@ packages:
peerDependencies:
'@babel/core': ^7.25.7
- '@wordpress/babel-preset-default@8.44.0':
- resolution: {integrity: sha512-6EQW8ysiQkct2MolHlhyqXfZ/Vgl0Cu9dCeHfPEf7S/8575qua1GnuDSFzEqU/8TIrEG88f2e2qP/R7VRB+EwQ==}
+ '@wordpress/babel-preset-default@8.45.0':
+ resolution: {integrity: sha512-xlrFFf8bsVDpOjzDW4dwkY8w040YupOIeRSVPB1FJyHBae8ObR+p2siM6E8/DrLNuDznudYoUFRnojYQ16ImjQ==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
'@wordpress/base-styles@6.20.0':
@@ -10456,6 +10456,10 @@ packages:
resolution: {integrity: sha512-lYtkO7U7ok9RfRBIHWvVWXhcOys6cQuLfwFr1bGuPTE6+LmVHmRyniMnImZlG8Jb3XE4pvH8gXT1ecXogpDI2Q==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+ '@wordpress/browserslist-config@6.45.0':
+ resolution: {integrity: sha512-iSRD/0bxD9PUHWssZN1zZa+xZ2E9FtpgNYKeceTPLKV3rd+rRPqI1h2a2iHboLzex80c1vaxe6eQ9kyZQfGtiA==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+
'@wordpress/build@0.13.0':
resolution: {integrity: sha512-a442H7Kh1hW1b9UH8DZzqLaxYAspe84/dWDRyep1R3YZFx2TcMCBs1tAF96xzvli5pN83PAN/gscv2DfNYBHyw==}
engines: {node: '>=20.10.0', npm: '>=10.2.3'}
@@ -10567,12 +10571,20 @@ packages:
resolution: {integrity: sha512-kVCRSwGMPFu7oBcAzN0VzwFQw3mwctUb/TEHkGeG5An1Uus6olruGJyvFwkHNtO9WRCdTXXunUaSk0CIA9+Wig==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+ '@wordpress/element@6.45.0':
+ resolution: {integrity: sha512-WFrGNPEnj8uE+XhFW9NVbxvqraYpConaEokLv9IszFYVfyg8juXSQcHOAfEnxjC08HBPfVcayr2igu/XUgGOAw==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+
'@wordpress/escape-html@3.44.0':
resolution: {integrity: sha512-nAEshSe6IYFr3G8sfY8o9pYNTRKvxocQ3DXs3KUesmdaEtrtJSlDmrMOI3FIgaYfv1PP6d+cDZpsygp6IZGo2w==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
- '@wordpress/eslint-plugin@25.0.0':
- resolution: {integrity: sha512-GYOPtbsibtFWmvFHm4ZBKUM16SREBcvpVHUuQLfh2s/CQtTP9kbC25XHmIdp0by77i2FDFvEtVGHo7aswoiRCA==}
+ '@wordpress/escape-html@3.45.0':
+ resolution: {integrity: sha512-IW4mnA+65XKhABuBkwrQNAlbq97luC6ZIBfdSq0Tkq+AFPqE1lJTMlLo7iBkTpsHsBLyznViPXultq40fz8L7w==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+
+ '@wordpress/eslint-plugin@25.1.0':
+ resolution: {integrity: sha512-tZVfrpAZoUNQ2A03XA8nVgfejb5lINPZUvbZcg8ZlTB4Bf58daLx5XOw3zIH4ubdS+t4paRslgrdnbCCpqX4Zg==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
peerDependencies:
'@babel/core': '>=7'
@@ -10744,8 +10756,8 @@ packages:
react: ^18.0.0
react-dom: ^18.0.0
- '@wordpress/prettier-config@4.44.0':
- resolution: {integrity: sha512-RT8Pc/dGOhMM9PwCsPamhkpIYx6zjTUDBIs/huVYKusByXImXQFoeZmaI3nK/UNus55woW6xyNNWdb2/nvvXgw==}
+ '@wordpress/prettier-config@4.45.0':
+ resolution: {integrity: sha512-Tj8wdH/+uwFOYbyhaQKrfe9WjtCnmGEoOi2i5zQ5KF3NgrdYgfv7ADMnd/fMW2vffxWAZvGjelvH1jybhY6XJA==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
peerDependencies:
prettier: '>=3'
@@ -10764,6 +10776,10 @@ packages:
resolution: {integrity: sha512-fTR1HRshYIrN4yau/Z+zxY+oRFnJz/LS8XGeXx43PT5O4B25+4kO41ApdS9FG56erg8HqUB6HoqDUcReT5pzlQ==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+ '@wordpress/private-apis@1.45.0':
+ resolution: {integrity: sha512-UjhIDpoyKKUghPM0tkqd5Whsuk4kqfAfhb5VYGoEYtunDs0rB8IxgFO7hE0PhimHL74QVgaJOlprRZVRCCoQ6w==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+
'@wordpress/react-i18n@4.43.0':
resolution: {integrity: sha512-NASm8oHzEtZsHeqR4vnM27/j//zbojJUefZ4LMXCp2LlCWn63dJMYb8JVMOJtp9rYDwKx0UzztBnVsoN/4H2lA==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -10836,6 +10852,17 @@ packages:
stylelint:
optional: true
+ '@wordpress/theme@0.12.0':
+ resolution: {integrity: sha512-AmEVO0B+kI9tsxkLnna/S+7yi+EPCMTuaPqagje7pnlXeDfykVQfeDeWJfU+QvhcqHXCySn89vvw1Ihep0rj7w==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ stylelint: '>=16.8.2'
+ peerDependenciesMeta:
+ stylelint:
+ optional: true
+
'@wordpress/token-list@3.44.0':
resolution: {integrity: sha512-+96NDDOC6vA/DQnRk/fnnmLylnZXEpMctklNOdztgpdwrXSsM+LoPoksaOYrmswPUxayzlHPBBbO/5rZ72g7zQ==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -10880,6 +10907,10 @@ packages:
resolution: {integrity: sha512-avxdbIYhDuUh2qi2oiq7KeqYOVv2RubqV8UI/Q7bctZSFSXJE8RQGSR/W2YjABeyWBIjlyX/U5lOxVs2PIfy/w==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+ '@wordpress/warning@3.45.0':
+ resolution: {integrity: sha512-NQ9tAhPdwhfceVIzWra1rbumvgAFAEDTgZlWsX880zLiq1F8JTwBouwW6wfIhA3XLcY6Yj7cBBYLa8vnNiDZDw==}
+ engines: {node: '>=18.12.0', npm: '>=8.19.2'}
+
'@wordpress/widgets@4.44.0':
resolution: {integrity: sha512-wYTWr6/CBip7ZMNwwiV/UyB5mi7W4wR8IU8HcZKwxg/H+Nmwb8MKnVurmAKuxHZvbsmlzLVuBLDqzA5yL1XfmQ==}
engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -23187,7 +23218,7 @@ snapshots:
dependencies:
'@babel/core': 7.29.0
- '@wordpress/babel-preset-default@8.44.0':
+ '@wordpress/babel-preset-default@8.45.0':
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0)
@@ -23195,8 +23226,8 @@ snapshots:
'@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0)
'@babel/preset-env': 7.29.2(@babel/core@7.29.0)
'@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
- '@wordpress/browserslist-config': 6.44.0
- '@wordpress/warning': 3.44.0
+ '@wordpress/browserslist-config': 6.45.0
+ '@wordpress/warning': 3.45.0
browserslist: 4.28.2
core-js: 3.38.1
react: 18.3.1
@@ -23666,6 +23697,8 @@ snapshots:
'@wordpress/browserslist-config@6.44.0': {}
+ '@wordpress/browserslist-config@6.45.0': {}
+
'@wordpress/build@0.13.0(@babel/core@7.29.0)(@wordpress/boot@0.11.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/route@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2)':
dependencies:
'@emotion/babel-plugin': 11.13.5
@@ -24503,17 +24536,29 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ '@wordpress/element@6.45.0':
+ dependencies:
+ '@types/react': 18.3.28
+ '@types/react-dom': 18.3.7(@types/react@18.3.28)
+ '@wordpress/escape-html': 3.45.0
+ change-case: 4.1.2
+ is-plain-object: 5.0.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
'@wordpress/escape-html@3.44.0': {}
- '@wordpress/eslint-plugin@25.0.0(@babel/core@7.29.0)(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint-plugin-import@2.32.0)(eslint-plugin-jest@29.15.0(eslint@9.39.4)(jest@30.3.0)(typescript@5.9.3))(eslint-plugin-jsdoc@62.8.0(eslint@9.39.4))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4))(eslint-plugin-playwright@2.10.0(eslint@9.39.4))(eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4))(eslint-plugin-react@7.37.5(eslint@9.39.4))(eslint@9.39.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))(typescript@5.9.3)(wp-prettier@3.0.3)':
+ '@wordpress/escape-html@3.45.0': {}
+
+ '@wordpress/eslint-plugin@25.1.0(@babel/core@7.29.0)(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint-plugin-import@2.32.0)(eslint-plugin-jest@29.15.0(eslint@9.39.4)(jest@30.3.0)(typescript@5.9.3))(eslint-plugin-jsdoc@62.8.0(eslint@9.39.4))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4))(eslint-plugin-playwright@2.10.0(eslint@9.39.4))(eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4))(eslint-plugin-react@7.37.5(eslint@9.39.4))(eslint@9.39.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))(typescript@5.9.3)(wp-prettier@3.0.3)':
dependencies:
'@babel/core': 7.29.0
'@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@9.39.4)
'@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@9.39.4)
'@eslint/compat': 2.0.3(eslint@9.39.4)
- '@wordpress/babel-preset-default': 8.44.0
- '@wordpress/prettier-config': 4.44.0(wp-prettier@3.0.3)
- '@wordpress/theme': 0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))
+ '@wordpress/babel-preset-default': 8.45.0
+ '@wordpress/prettier-config': 4.45.0(wp-prettier@3.0.3)
+ '@wordpress/theme': 0.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))
cosmiconfig: 7.1.0
eslint: 9.39.4
eslint-config-prettier: 10.1.8(eslint@9.39.4)
@@ -25264,7 +25309,7 @@ snapshots:
- '@emotion/is-prop-valid'
- supports-color
- '@wordpress/prettier-config@4.44.0(wp-prettier@3.0.3)':
+ '@wordpress/prettier-config@4.45.0(wp-prettier@3.0.3)':
dependencies:
prettier: wp-prettier@3.0.3
@@ -25280,6 +25325,8 @@ snapshots:
'@wordpress/private-apis@1.44.0': {}
+ '@wordpress/private-apis@1.45.0': {}
+
'@wordpress/react-i18n@4.43.0':
dependencies:
'@wordpress/element': 6.44.0
@@ -25467,6 +25514,17 @@ snapshots:
optionalDependencies:
stylelint: 17.7.0(typescript@5.9.3)
+ '@wordpress/theme@0.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3))':
+ dependencies:
+ '@wordpress/element': 6.45.0
+ '@wordpress/private-apis': 1.45.0
+ colorjs.io: 0.6.1
+ memize: 2.1.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ stylelint: 17.7.0(typescript@5.9.3)
+
'@wordpress/token-list@3.44.0': {}
'@wordpress/ui@0.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -25607,6 +25665,8 @@ snapshots:
'@wordpress/warning@3.44.0': {}
+ '@wordpress/warning@3.45.0': {}
+
'@wordpress/widgets@4.44.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@wordpress/api-fetch': 7.44.0
diff --git a/tools/js-tools/package.json b/tools/js-tools/package.json
index 76276cc63e70..ec8a04803054 100644
--- a/tools/js-tools/package.json
+++ b/tools/js-tools/package.json
@@ -26,7 +26,7 @@
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "6.9.1",
"@typescript/native-preview": "7.0.0-dev.20260225.1",
- "@wordpress/eslint-plugin": "25.0.0",
+ "@wordpress/eslint-plugin": "25.1.0",
"@wordpress/jest-console": "8.44.0",
"@wordpress/stylelint-config": "23.36.0",
"babel-jest": "30.3.0",
From bd50c869a742e4c624d68ccd3c323d12993452d0 Mon Sep 17 00:00:00 2001
From: tbradsha <32492176+tbradsha@users.noreply.github.com>
Date: Tue, 5 May 2026 07:55:51 -0600
Subject: [PATCH 02/13] =?UTF-8?q?
-
{ createInterpolateElement( message, {
- a:
-
-
-
-
-
-
-
@@ -96,17 +92,16 @@ export function XUsageContent( {
) }
{ ! isSimpleSite() && (
-
@@ -117,17 +112,16 @@ export function XUsageContent( {
) }
{ ! isSimpleSite() && (
-
@@ -147,7 +141,6 @@ export function XUsageContent( { ) }
) } - { /* Bottom text when at limit (free plan, notice shown) */ } { isAtLimit && ! isPaid && ! isDismissed && (
diff --git a/projects/packages/search/package.json b/projects/packages/search/package.json
index be4cb14e03f3..7e98456623f1 100644
--- a/projects/packages/search/package.json
+++ b/projects/packages/search/package.json
@@ -59,6 +59,7 @@
"@wordpress/icons": "12.2.0",
"@wordpress/interactivity": "6.44.0",
"@wordpress/server-side-render": "6.20.0",
+ "@wordpress/ui": "0.11.0",
"@wordpress/url": "4.44.0",
"@wordpress/viewport": "6.44.0",
"clsx": "2.1.1",
diff --git a/projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx b/projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx
index 5d971646e331..d6690555e4c3 100644
--- a/projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx
+++ b/projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx
@@ -1,7 +1,7 @@
import { ContextualUpgradeTrigger, ThemeProvider } from '@automattic/jetpack-components';
-import { ExternalLink } from '@wordpress/components';
import { createInterpolateElement } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
+import { Link } from '@wordpress/ui';
import { useState, useCallback, useMemo } from 'react';
import DonutMeterContainer, { formatNumber } from '../../donut-meter-container';
import PlanSummary from './plan-summary';
@@ -405,7 +405,8 @@ const AboutPlanLimits = () => {
),
{
jpPlanLimits: (
-
@@ -108,14 +99,16 @@ export default function DetailsPanel( {
),
{
link: (
-
{ createInterpolateElement( message, {
link: (
-
{ createInterpolateElement( __( 'Learn more', 'jetpack-boost' ), {
- link: ,
- link:
,
- link: ,
- link: ,
- link:
-
{ productCardDisclaimer.text }{ ' ' }
-
{ __( 'To use the map block, you need an Access Token.', 'jetpack' ) }
-
{ __(
'Locate and copy the default access token. Then, paste it into the field below.',
diff --git a/projects/plugins/jetpack/extensions/blocks/opentable/edit.js b/projects/plugins/jetpack/extensions/blocks/opentable/edit.js
index 501a9bf7168a..3142e89a5ecf 100644
--- a/projects/plugins/jetpack/extensions/blocks/opentable/edit.js
+++ b/projects/plugins/jetpack/extensions/blocks/opentable/edit.js
@@ -11,7 +11,6 @@ import {
unregisterBlockStyle,
} from '@wordpress/blocks';
import {
- ExternalLink,
PanelBody,
Placeholder,
SelectControl,
@@ -20,6 +19,7 @@ import {
} from '@wordpress/components';
import { useEffect } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
+import { Link } from '@wordpress/ui';
import clsx from 'clsx';
import { isEmpty, isEqual } from 'lodash';
import { getActiveStyleName } from '../../shared/block-styles';
@@ -238,10 +238,12 @@ function OpenTableEdit( {
>
-
{ createInterpolateElement(
__(
- 'You should regenerate
Learn more',
'jetpack'
),
{
- ExternalLink: ,
+ Link: ,
br:
,
}
) }
diff --git a/projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx b/projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx
index 151110bc7488..327eafe5c170 100644
--- a/projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx
+++ b/projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx
@@ -37,12 +37,9 @@ function DashJetpackAi( props ) {
link: getRedirectUrl( 'org-ai' ),
};
- const learnMoreLink = createInterpolateElement(
- __( '
{ createInterpolateElement(
__(
- 'Visit