From 4be1ed203ae85cce53581e076face03e26830940 Mon Sep 17 00:00:00 2001 From: hectahertz Date: Thu, 26 Feb 2026 12:47:25 +0100 Subject: [PATCH 1/2] perf(Button): replace :has(.Visual) with data-no-visuals attribute --- packages/react/src/Button/ButtonBase.module.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react/src/Button/ButtonBase.module.css b/packages/react/src/Button/ButtonBase.module.css index 7ff56b63091..73073718cd0 100644 --- a/packages/react/src/Button/ButtonBase.module.css +++ b/packages/react/src/Button/ButtonBase.module.css @@ -581,11 +581,11 @@ } [data-a11y-link-underlines='true'] &:where([data-variant='link']) { - &:not(:has(.Visual)) { + &[data-no-visuals] { text-decoration: underline; } - &:has(.Visual) { + &:not([data-no-visuals]) { background-image: linear-gradient(to right, currentColor, currentColor); background-size: 100% 1.5px; background-position: 0 calc(100% - 2px); @@ -598,12 +598,12 @@ } [data-a11y-link-underlines='false'] &:where([data-variant='link']) { - &:not(:has(.Visual)) { + &[data-no-visuals] { text-decoration: none; background-image: none; } - &:has(.Visual) { + &:not([data-no-visuals]) { background-image: none; } } From 78dfa18cc04ba2b07fd7ba30e901f489bdce170b Mon Sep 17 00:00:00 2001 From: hectahertz Date: Thu, 26 Feb 2026 12:54:01 +0100 Subject: [PATCH 2/2] chore: changeset --- .changeset/perf-button-css-has-selector.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/perf-button-css-has-selector.md diff --git a/.changeset/perf-button-css-has-selector.md b/.changeset/perf-button-css-has-selector.md new file mode 100644 index 00000000000..e792a6db28c --- /dev/null +++ b/.changeset/perf-button-css-has-selector.md @@ -0,0 +1,5 @@ +--- +'@primer/react': patch +--- + +perf(Button): replace `:has(.Visual)` with `[data-no-visuals]` attribute selector in link variant styling