diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md
index 44677d02621ec8..147219fbbdd4ea 100644
--- a/packages/block-editor/CHANGELOG.md
+++ b/packages/block-editor/CHANGELOG.md
@@ -17,6 +17,7 @@
### Bug Fixes
+- `BlockManager`: Color library block icons with `color` while retaining a `fill` fallback for custom icons that do not use `currentColor`. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- Block List Appender: Show the appender button as a drop target when dragging a block over an empty container such as a Column, restoring the reveal that the `visibility`-to-`opacity` migration left behind ([#77852](https://github.com/WordPress/gutenberg/pull/77852)).
- Inserter: Keep the hovered block preview inside the viewport, so a tall preview in a short window is no longer clipped ([#82060](https://github.com/WordPress/gutenberg/pull/82060)).
- Element styles: Register each block's element-style CSS override with the block's `clientId`, so the editor orders them by block position instead of registration order. A parent's link color re-registered after a child's (e.g. by resetting and re-picking it) no longer overrides the child's own link color in the canvas ([#77833](https://github.com/WordPress/gutenberg/pull/77833)).
diff --git a/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
index 495611efac369c..7a7ff808eb82b5 100644
--- a/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
+++ b/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
@@ -18,15 +18,18 @@ exports[`AlignmentUI should allow custom alignment controls to be specified 1`]
>
@@ -42,15 +45,18 @@ exports[`AlignmentUI should allow custom alignment controls to be specified 1`]
>
@@ -75,15 +81,18 @@ exports[`AlignmentUI should match snapshot when controls are hidden 1`] = `
>
@@ -109,15 +118,18 @@ exports[`AlignmentUI should match snapshot when controls are visible 1`] = `
>
@@ -133,15 +145,18 @@ exports[`AlignmentUI should match snapshot when controls are visible 1`] = `
>
@@ -157,15 +172,18 @@ exports[`AlignmentUI should match snapshot when controls are visible 1`] = `
>
diff --git a/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
index 10d34e3ff1905c..e512905a77715c 100644
--- a/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
+++ b/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
@@ -16,15 +16,26 @@ exports[`BlockAlignmentUI should match snapshot when controls are hidden 1`] = `
>
@@ -49,15 +60,26 @@ exports[`BlockAlignmentUI should match snapshot when controls are visible 1`] =
>
@@ -72,15 +94,26 @@ exports[`BlockAlignmentUI should match snapshot when controls are visible 1`] =
>
@@ -95,15 +128,26 @@ exports[`BlockAlignmentUI should match snapshot when controls are visible 1`] =
>
@@ -118,15 +162,26 @@ exports[`BlockAlignmentUI should match snapshot when controls are visible 1`] =
>
diff --git a/packages/block-editor/src/components/block-manager/style.scss b/packages/block-editor/src/components/block-manager/style.scss
index 57a7a79d2f4d83..2d5a192a8bae57 100644
--- a/packages/block-editor/src/components/block-manager/style.scss
+++ b/packages/block-editor/src/components/block-manager/style.scss
@@ -47,7 +47,9 @@
.block-editor-block-icon {
margin-right: 10px;
+ // Keep `fill` as a fallback for custom block icons that do not use `currentColor`.
fill: $gray-900;
+ color: $gray-900;
}
}
diff --git a/packages/block-editor/src/components/block-variation-picker/content.scss b/packages/block-editor/src/components/block-variation-picker/content.scss
index cbf3caae01490a..caae5c95005293 100644
--- a/packages/block-editor/src/components/block-variation-picker/content.scss
+++ b/packages/block-editor/src/components/block-variation-picker/content.scss
@@ -16,6 +16,7 @@
font-size: $helptext-font-size;
svg {
+ // Keep `fill` as a fallback for custom variation icons that do not use `currentColor`.
fill: $gray-600;
color: $gray-600 !important;
}
diff --git a/packages/block-editor/src/components/block-vertical-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/block-editor/src/components/block-vertical-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
index 7c90a0fa214145..3926b4ca1918e0 100644
--- a/packages/block-editor/src/components/block-vertical-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
+++ b/packages/block-editor/src/components/block-vertical-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap
@@ -16,15 +16,26 @@ exports[`BlockVerticalAlignmentUI should match snapshot when controls are hidden
>
@@ -49,15 +60,26 @@ exports[`BlockVerticalAlignmentUI should match snapshot when controls are visibl
>
@@ -72,15 +94,26 @@ exports[`BlockVerticalAlignmentUI should match snapshot when controls are visibl
>
@@ -95,15 +128,26 @@ exports[`BlockVerticalAlignmentUI should match snapshot when controls are visibl
>
diff --git a/packages/block-editor/src/components/color-palette/test/__snapshots__/control.jsdom.test.jsx.snap b/packages/block-editor/src/components/color-palette/test/__snapshots__/control.jsdom.test.jsx.snap
index 5952fca909d777..d7903c9da817f2 100644
--- a/packages/block-editor/src/components/color-palette/test/__snapshots__/control.jsdom.test.jsx.snap
+++ b/packages/block-editor/src/components/color-palette/test/__snapshots__/control.jsdom.test.jsx.snap
@@ -107,15 +107,19 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
/>
diff --git a/packages/block-library/src/navigation-link/test/__snapshots__/hooks.jsdom.test.js.snap b/packages/block-library/src/navigation-link/test/__snapshots__/hooks.jsdom.test.js.snap
index f385f36de86fa1..5d2025addf5468 100644
--- a/packages/block-library/src/navigation-link/test/__snapshots__/hooks.jsdom.test.js.snap
+++ b/packages/block-library/src/navigation-link/test/__snapshots__/hooks.jsdom.test.js.snap
@@ -66,14 +66,31 @@ exports[`hooks enhanceNavigationLinkVariations enhances variations with icon and
},
"description": "A link to a category.",
"icon": ,
"isActive": [Function],
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 64388c283be8c1..14a549c599b1bb 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -10,6 +10,8 @@
### Bug Fixes
+- `ColorPalette`: Apply the computed contrast color to the selected checkmark now that the icon is stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
+- `CheckboxControl`: Color the checked and indeterminate icons with `color` rather than `fill`, so they stay visible now that those icons are stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- `Snackbar`: Restart the auto-dismiss timer when a notice is recreated with the same ID during removal ([#81764](https://github.com/WordPress/gutenberg/pull/81764)).
- `ToolsPanel`: Stop a panel item whose `panelId` doesn't match the panel from writing its value into that panel's menu, which could leave an orphaned entry in the dropdown ([#82127](https://github.com/WordPress/gutenberg/pull/82127)).
- `Icon`: Merge a consumer-supplied `style` prop with the icon's intrinsic styles instead of replacing them, so styles like `fill: none` on stroke-based icons survive unless the consumer overrides the same property explicitly. ([#78808](https://github.com/WordPress/gutenberg/pull/78808))
diff --git a/packages/components/src/checkbox-control/style.scss b/packages/components/src/checkbox-control/style.scss
index 153bc81d095b33..4440bcafddc218 100644
--- a/packages/components/src/checkbox-control/style.scss
+++ b/packages/components/src/checkbox-control/style.scss
@@ -77,7 +77,7 @@ svg.components-checkbox-control__checked,
svg.components-checkbox-control__indeterminate {
--checkmark-size: var(--checkbox-input-size);
- fill: $white;
+ color: $white;
cursor: var(--wpds-cursor-control);
position: absolute;
left: 50%;
@@ -96,7 +96,7 @@ svg.components-checkbox-control__indeterminate {
.components-checkbox-control:has(:disabled) {
svg.components-checkbox-control__checked,
svg.components-checkbox-control__indeterminate {
- fill: $components-color-gray-400;
+ color: $components-color-gray-400;
}
}
diff --git a/packages/components/src/checkbox-control/test/__snapshots__/index.jsdom.test.tsx.snap b/packages/components/src/checkbox-control/test/__snapshots__/index.jsdom.test.tsx.snap
index eb4e76110b8c22..2c1d14d293431e 100644
--- a/packages/components/src/checkbox-control/test/__snapshots__/index.jsdom.test.tsx.snap
+++ b/packages/components/src/checkbox-control/test/__snapshots__/index.jsdom.test.tsx.snap
@@ -5,7 +5,7 @@ Snapshot Diff:
- First value
+ Second value
-@@ -14,14 +14,29 @@
+@@ -14,14 +14,32 @@
@@ -15,21 +15,24 @@ Snapshot Diff:
+ id="inspector-checkbox-control-7"
type="checkbox"
value="1"
- />
++ />
+
diff --git a/packages/components/src/color-palette/index.tsx b/packages/components/src/color-palette/index.tsx
index 9cbaa6a16de357..8ddf9341358800 100644
--- a/packages/components/src/color-palette/index.tsx
+++ b/packages/components/src/color-palette/index.tsx
@@ -65,7 +65,7 @@ function SinglePalette( {
selectedIconProps={
isSelected
? {
- fill:
+ color:
colordColor.contrast() >
colordColor.contrast( '#000' )
? '#fff'
diff --git a/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap b/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap
index e3d398b2f64cf5..311e2ad1d81d07 100644
--- a/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap
+++ b/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap
@@ -48,15 +48,18 @@ exports[`Notice should match snapshot 1`] = `
>
diff --git a/packages/dataviews/CHANGELOG.md b/packages/dataviews/CHANGELOG.md
index 07ba7f1ea11ad8..5ae217332933c9 100644
--- a/packages/dataviews/CHANGELOG.md
+++ b/packages/dataviews/CHANGELOG.md
@@ -41,6 +41,7 @@
### Bug Fix
+- Color filter and selected-option icons with `color` rather than `fill`, so they stay visible now that those icons are stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- DataViews: Scope the search field's fixed width to the default UI search row ([#82128](https://github.com/WordPress/gutenberg/pull/82128)).
## 18.1.0 (2026-08-26)
diff --git a/packages/dataviews/src/components/dataviews-filters/style.scss b/packages/dataviews/src/components/dataviews-filters/style.scss
index 0b70752b6e36cf..9665f83ea69878 100644
--- a/packages/dataviews/src/components/dataviews-filters/style.scss
+++ b/packages/dataviews/src/components/dataviews-filters/style.scss
@@ -141,20 +141,20 @@
cursor: var(--wpds-cursor-control);
svg {
- fill: var(--wpds-color-foreground-interactive-neutral);
+ color: var(--wpds-color-foreground-interactive-neutral);
}
&:hover,
&:focus {
background: var(--wpds-color-background-interactive-neutral-weak-active);
svg {
- fill: var(--wpds-color-foreground-interactive-neutral-active);
+ color: var(--wpds-color-foreground-interactive-neutral-active);
}
}
&.has-values {
svg {
- fill: var(--wpds-color-foreground-interactive-brand);
+ color: var(--wpds-color-foreground-interactive-brand);
}
&:hover {
background: var(--wpds-color-background-interactive-brand-weak-active);
@@ -311,7 +311,7 @@
svg {
--checkmark-size: var(--checkbox-size);
- fill: var(--wpds-color-foreground-interactive-neutral-strong);
+ color: var(--wpds-color-foreground-interactive-neutral-strong);
position: absolute;
left: 50%;
top: 50%;
diff --git a/packages/edit-post/CHANGELOG.md b/packages/edit-post/CHANGELOG.md
index 797201878a5740..72e0a0db6ffe2e 100644
--- a/packages/edit-post/CHANGELOG.md
+++ b/packages/edit-post/CHANGELOG.md
@@ -2,6 +2,10 @@
## Unreleased
+### Bug Fixes
+
+- `WelcomeGuide`: Keep the modal close icon white now that it is stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
+
### Internal
- Remove the `showListViewByDefault` handling from `initializeEditor`; the `editor` package now applies the preference itself.
diff --git a/packages/edit-post/src/components/welcome-guide/style.scss b/packages/edit-post/src/components/welcome-guide/style.scss
index d5980745bc2ffc..7153aa880d5cdb 100644
--- a/packages/edit-post/src/components/welcome-guide/style.scss
+++ b/packages/edit-post/src/components/welcome-guide/style.scss
@@ -37,7 +37,7 @@
.components-button {
&:hover {
svg {
- fill: $white;
+ color: $white;
}
}
}
@@ -45,6 +45,6 @@
.edit-template-welcome-guide {
.components-button svg {
- fill: $white;
+ color: $white;
}
}
diff --git a/packages/edit-site/CHANGELOG.md b/packages/edit-site/CHANGELOG.md
index 4e42fb2f8f6dda..031a6dd84b2f31 100644
--- a/packages/edit-site/CHANGELOG.md
+++ b/packages/edit-site/CHANGELOG.md
@@ -8,6 +8,7 @@
### Bug Fixes
+- `WelcomeGuide`: Keep the modal close icon white on hover now that it is stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- `SidebarNavigationItem`: Stop forcing `style={ { fill: 'currentcolor' } }` on the icon. The explicit override was clobbering stroke-based icons' intrinsic styling. Colour is inherited via CSS `color` and the icon's own declared fills/strokes. ([#78808](https://github.com/WordPress/gutenberg/pull/78808))
- `AddNewTemplate`: Preserve the admin theme color on the Author template icon after it became stroke-based. ([#78808](https://github.com/WordPress/gutenberg/pull/78808))
diff --git a/packages/edit-site/src/components/welcome-guide/style.scss b/packages/edit-site/src/components/welcome-guide/style.scss
index 3c3daae1c0ce26..7b8369f187e55a 100644
--- a/packages/edit-site/src/components/welcome-guide/style.scss
+++ b/packages/edit-site/src/components/welcome-guide/style.scss
@@ -53,7 +53,7 @@
.components-button {
&:hover {
svg {
- fill: $white;
+ color: $white;
}
}
}
diff --git a/packages/edit-widgets/CHANGELOG.md b/packages/edit-widgets/CHANGELOG.md
index 84748a15f703e6..a31ca43513f025 100644
--- a/packages/edit-widgets/CHANGELOG.md
+++ b/packages/edit-widgets/CHANGELOG.md
@@ -4,6 +4,7 @@
### Bug Fixes
+- `WelcomeGuide`: Keep the modal close icon white on hover now that it is stroke-based. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- Prevent an error in `canInsertBlockInWidgetArea` when no widget area blocks are present.
### Internal
diff --git a/packages/edit-widgets/src/components/welcome-guide/style.scss b/packages/edit-widgets/src/components/welcome-guide/style.scss
index a995f7668f1572..87f98340507103 100644
--- a/packages/edit-widgets/src/components/welcome-guide/style.scss
+++ b/packages/edit-widgets/src/components/welcome-guide/style.scss
@@ -36,7 +36,7 @@
.components-button {
&:hover {
svg {
- fill: $white;
+ color: $white;
}
}
}
diff --git a/packages/editor/CHANGELOG.md b/packages/editor/CHANGELOG.md
index b4eb1c902880ea..1cdc5a196b188e 100644
--- a/packages/editor/CHANGELOG.md
+++ b/packages/editor/CHANGELOG.md
@@ -5,6 +5,7 @@
### Bug Fixes
- Attach media an Image or Gallery block displays to the post on save, when it is not already attached to another post, matching what uploading into that post has always done ([#81977](https://github.com/WordPress/gutenberg/pull/81977)).
+- Color the welcome guide's hovered button icon with `color` rather than `fill`, so stroke-based icons follow it. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
- `EditorInterface`: Apply the `showListViewByDefault` preference when the editor enters edit mode, so every editor built on the package honors it — including the extensible site editor, which previously ignored it. The logic moves here from `edit-post` and `edit-site`.
- `StylesCanvas`: In preview mode, render edge to edge without the close button and Escape handler. There the canvas is the whole surface rather than a frame opened over an editing session, and whatever opened it owns closing it.
- Upload progress snackbar: Stop announcing "Upload complete" for a batch in which everything failed. The snackbar treated the queue draining as success, so a failed upload showed a completion checkmark right next to its own error. A batch that fails outright now just takes the progress snackbar down, and a partly failed one reports "Uploaded 3 of 5" ([#81132](https://github.com/WordPress/gutenberg/issues/81132)).
diff --git a/packages/editor/src/components/global-styles-sidebar/style.scss b/packages/editor/src/components/global-styles-sidebar/style.scss
index 1640d47c439f79..d5a290b88ac8de 100644
--- a/packages/editor/src/components/global-styles-sidebar/style.scss
+++ b/packages/editor/src/components/global-styles-sidebar/style.scss
@@ -110,7 +110,7 @@
.components-button {
&:hover {
svg {
- fill: $white;
+ color: $white;
}
}
}
diff --git a/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
index 9712cae4b47f95..fb3b1d684ac8f6 100644
--- a/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
+++ b/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
@@ -19,15 +19,18 @@ exports[`PluginPostPublishPanel renders fill properly 1`] = `
diff --git a/packages/editor/src/components/post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/editor/src/components/post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
index d173addfcd06d6..205d60c2e8ad11 100644
--- a/packages/editor/src/components/post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
+++ b/packages/editor/src/components/post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap
@@ -16,15 +16,18 @@ exports[`PostPublishPanel should render the post-publish panel if the post is pu
>
@@ -194,15 +197,18 @@ exports[`PostPublishPanel should render the post-publish panel if the post is sc
>
diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md
index dc25764412ac7c..f5117469ee48d9 100644
--- a/packages/icons/CHANGELOG.md
+++ b/packages/icons/CHANGELOG.md
@@ -10,6 +10,7 @@
### Enhancements
- Redraw 35 icons as stroke-based for variable stroke-width support, and introduce the `vector-effect="non-scaling-stroke"` convention so stroke weight stays consistent across icon sizes (originally landed in [#78774](https://github.com/WordPress/gutenberg/pull/78774), reverted in [#78854](https://github.com/WordPress/gutenberg/pull/78854) due to CSS-override regressions, re-introduced here with the resilience fix): `addCard`, `addTemplate`, `cancelCircleFilled`, `caution`, `cautionFilled`, `code`, `commentAuthorAvatar`, `cover`, `currencyDollar`, `currencyEuro`, `currencyPound`, `drafts`, `help`, `helpFilled`, `image`, `info`, `lifesaver`, `link`, `linkOff`, `navigation`, `notAllowed`, `paragraph`, `pending`, `plusCircle`, `plusCircleFilled`, `published`, `scheduled`, `siteLogo`, `square`, `starEmpty`, `starFilled`, `starHalf`, `styles`, `time`, `tip`. ([#78808](https://github.com/WordPress/gutenberg/pull/78808))
+- Redraw a further 63 icons as stroke-based for variable stroke-width support, following the convention introduced in [#78808](https://github.com/WordPress/gutenberg/pull/78808): `alignCenter`, `alignJustify`, `alignLeft`, `alignNone`, `alignRight`, `arrowDownLeft`, `arrowDownRight`, `arrowDown`, `arrowLeft`, `arrowRight`, `arrowUpLeft`, `arrowUpRight`, `arrowUp`, `blockMeta`, `category`, `chartBar`, `check`, `chevronDownSmall`, `chevronDown`, `chevronLeftSmall`, `chevronLeft`, `chevronRightSmall`, `chevronRight`, `chevronUpDown`, `chevronUpSmall`, `chevronUp`, `closeSmall`, `close`, `create`, `download`, `handle`, `homeButton`, `justifyBottom`, `justifyCenterVertical`, `justifyCenter`, `justifyLeft`, `justifyRight`, `justifySpaceBetweenVertical`, `justifySpaceBetween`, `justifyStretchVertical`, `justifyStretch`, `justifyTop`, `lineDashed`, `lineDotted`, `lineSolid`, `listView`, `menu`, `next`, `plus`, `positionCenter`, `positionLeft`, `positionRight`, `previous`, `pullLeft`, `pullRight`, `pullquote`, `reset`, `resizeCornerNE`, `rss`, `separator`, `stretchFullWidth`, `stretchWide`, `upload`. ([#78812](https://github.com/WordPress/gutenberg/pull/78812))
### Bug Fixes
diff --git a/packages/icons/src/library/align-center.svg b/packages/icons/src/library/align-center.svg
index 36b27aaf727c7e..bc912fb851c6da 100644
--- a/packages/icons/src/library/align-center.svg
+++ b/packages/icons/src/library/align-center.svg
@@ -1,3 +1,3 @@
-