Commit d203ef1e62 for woocommerce

commit d203ef1e62cbd2552160d16a909fe8ae18a2907c
Author: Brad Jorsch <anomiex@users.noreply.github.com>
Date:   Thu Jan 15 12:44:24 2026 -0500

    Adjust classes used for menu notification bubbles (#62799)

    WordPress Core does not provide any generic classes for notification
    bubbles. It does, however, use a few classes for specific notifications:
    * `awaiting-mod`: Top-level "Comments" menu. Only has CSS appropriate
      for use on a top-level menu item.
    * `menu-counter`: Tools → Site Health tool submenu. Only has CSS
      appropriate for use on a submenu item.
    * `update-plugins`: Plugin update count. Has CSS for both top-level and
      submenu items.

    Using the wrong class can result in wrongly-colored bubbles in color
    schemes such as Modern that have different highlighting on top-level
    versus submenu items.

    This PR changes the notification bubbles on submenu items to use
    `menu-counter`, since it was decided that that sounds more semantically
    correct, and otherwise changes any places where both `awaiting-mod` and
    `update-plugins` are being used to only the latter since that's more
    likely to give correct behavior.

    Fixes #62525

diff --git a/plugins/woocommerce/changelog/fix-62525-menu-bubble-styles b/plugins/woocommerce/changelog/fix-62525-menu-bubble-styles
new file mode 100644
index 0000000000..df57916a39
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-62525-menu-bubble-styles
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Adjust classes used for menu notification bubbles.
diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-marketplace-promotions.php b/plugins/woocommerce/includes/admin/class-wc-admin-marketplace-promotions.php
index a0a90473c0..c2e8d9589b 100644
--- a/plugins/woocommerce/includes/admin/class-wc-admin-marketplace-promotions.php
+++ b/plugins/woocommerce/includes/admin/class-wc-admin-marketplace-promotions.php
@@ -363,7 +363,7 @@ class WC_Admin_Marketplace_Promotions {
 		$menu_item_text = preg_replace( '|<span class="update-plugins count-[\d]+">[A-z0-9 <>="-]+</span>|', '', $menu_item_text );

 		return $menu_item_text
-			. '<span class="awaiting-mod update-plugins remaining-tasks-badge woocommerce-task-list-remaining-tasks-badge">'
+			. '<span class="update-plugins remaining-tasks-badge woocommerce-task-list-remaining-tasks-badge">'
 			. esc_html( $bubble_text )
 			. '</span>';
 	}
diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-menus.php b/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
index 128cd879ef..d6d345a6b9 100644
--- a/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
+++ b/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
@@ -265,7 +265,7 @@ class WC_Admin_Menus {
 				if ( $order_count ) {
 					foreach ( $submenu['woocommerce'] as $key => $menu_item ) {
 						if ( 0 === strpos( $menu_item[0], _x( 'Orders', 'Admin menu name', 'woocommerce' ) ) ) {
-							$submenu['woocommerce'][ $key ][0] .= ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . '"><span class="processing-count">' . number_format_i18n( $order_count ) . '</span></span>'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+							$submenu['woocommerce'][ $key ][0] .= ' <span class="menu-counter count-' . esc_attr( $order_count ) . '"><span class="processing-count">' . number_format_i18n( $order_count ) . '</span></span>'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
 							break;
 						}
 					}
diff --git a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php
index d0ffb55a3a..46bf94d5d5 100644
--- a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php
+++ b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php
@@ -433,7 +433,7 @@ class TaskLists {

 		foreach ( $submenu['woocommerce'] as $key => $menu_item ) {
 			if ( 0 === strpos( $menu_item[0], _x( 'Home', 'Admin menu name', 'woocommerce' ) ) ) {
-				$submenu['woocommerce'][ $key ][0] .= ' <span class="awaiting-mod update-plugins remaining-tasks-badge woocommerce-task-list-remaining-tasks-badge"><span class="count-' . esc_attr( $tasks_count ) . '">' . absint( $tasks_count ) . '</span></span>'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+				$submenu['woocommerce'][ $key ][0] .= ' <span class="menu-counter remaining-tasks-badge woocommerce-task-list-remaining-tasks-badge"><span class="count-' . esc_attr( $tasks_count ) . '">' . absint( $tasks_count ) . '</span></span>'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
 				break;
 			}
 		}
diff --git a/plugins/woocommerce/src/Internal/Admin/ProductReviews/Reviews.php b/plugins/woocommerce/src/Internal/Admin/ProductReviews/Reviews.php
index f9a8fe9cdd..29d4fae055 100644
--- a/plugins/woocommerce/src/Internal/Admin/ProductReviews/Reviews.php
+++ b/plugins/woocommerce/src/Internal/Admin/ProductReviews/Reviews.php
@@ -504,7 +504,7 @@ class Reviews {
 			return '';
 		}

-		return ' <span class="awaiting-mod count-' . esc_attr( $count ) . '"><span class="pending-count">' . esc_html( $count ) . '</span></span>';
+		return ' <span class="menu-counter count-' . esc_attr( $count ) . '"><span class="pending-count">' . esc_html( $count ) . '</span></span>';
 	}

 	/**
diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php
index 3ca5a71548..46e809e29f 100644
--- a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php
+++ b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php
@@ -163,7 +163,7 @@ class ReviewsTest extends WC_Unit_Test_Case {
 		yield 'no pending' => [ 0, '' ];
 		yield 'has pending' => [
 			2,
-			' <span class="awaiting-mod count-2"><span class="pending-count">2</span></span>',
+			' <span class="menu-counter count-2"><span class="pending-count">2</span></span>',
 		];
 	}