From 01679fb5e758ac7a053f303f1db7ca1f8560b2f9 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Thu, 16 Jul 2026 21:27:48 -0700 Subject: [PATCH] Add theme variant support to pagination Colors links, hover, focus, and the active page item via .theme-{color} classes, matching the pattern already used by alerts and accordions. Adds a docs example and updates the migration guide. --- scss/_pagination.scss | 28 ++++++++----------- .../content/docs/components/pagination.mdx | 20 +++++++++++++ site/src/content/docs/guides/migration.mdx | 1 + 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/scss/_pagination.scss b/scss/_pagination.scss index 109a6423f9e3..b2f3a3525f49 100644 --- a/scss/_pagination.scss +++ b/scss/_pagination.scss @@ -6,8 +6,6 @@ @use "mixins/transition" as *; @use "mixins/tokens" as *; -// TODO: update pagination to support variant themes (`.theme-*` role tokens) - // stylelint-disable custom-property-no-missing-var-function $pagination-tokens: () !default; @@ -27,11 +25,9 @@ $pagination-tokens: defaults( --pagination-hover-color: var(--link-hover-color), --pagination-hover-bg: var(--bg-1), --pagination-hover-border-color: var(--border-color), - --pagination-focus-color: var(--link-hover-color), - --pagination-focus-bg: var(--bg-2), - --pagination-active-color: var(--primary-contrast), - --pagination-active-bg: var(--primary-bg), - --pagination-active-border-color: var(--primary-bg), + --pagination-active-color: var(--theme-contrast, var(--primary-contrast)), + --pagination-active-bg: var(--theme-bg, var(--primary-bg)), + --pagination-active-border-color: var(--theme-bg, var(--primary-bg)), --pagination-disabled-color: var(--fg-3), --pagination-disabled-bg: var(--bg-2), --pagination-disabled-border-color: var(--border-color), @@ -66,7 +62,7 @@ $pagination-sizes: defaults( min-height: var(--pagination-min-height); padding: var(--pagination-padding-y) var(--pagination-padding-x); font-size: var(--pagination-font-size); - color: var(--pagination-color); + color: var(--theme-fg, var(--pagination-color)); text-decoration: none; background-color: var(--pagination-bg); border: var(--pagination-border-width) solid var(--pagination-border-color); @@ -74,24 +70,22 @@ $pagination-sizes: defaults( &:hover { z-index: 2; - color: var(--pagination-hover-color); - background-color: var(--pagination-hover-bg); - border-color: var(--pagination-hover-border-color); + color: var(--theme-fg-emphasis, var(--pagination-hover-color)); + background-color: var(--theme-bg-subtle, var(--pagination-hover-bg)); + border-color: var(--theme-border, var(--pagination-hover-border-color)); } &:focus-visible { z-index: 3; - color: var(--pagination-focus-color); - background-color: var(--pagination-focus-bg); - @include focus-ring(true); + @include focus-ring(true, var(--theme-focus-ring, var(--focus-ring-color))); } &.active, .active > & { z-index: 3; - color: var(--pagination-active-color); - @include gradient-bg(var(--pagination-active-bg)); - border-color: var(--pagination-active-border-color); + color: var(--theme-contrast, var(--pagination-active-color)); + @include gradient-bg(var(--theme-bg, var(--pagination-active-bg))); + border-color: var(--theme-border, var(--pagination-active-border-color)); } &.disabled, diff --git a/site/src/content/docs/components/pagination.mdx b/site/src/content/docs/components/pagination.mdx index 073a8c7bc597..969d41f10866 100644 --- a/site/src/content/docs/components/pagination.mdx +++ b/site/src/content/docs/components/pagination.mdx @@ -5,6 +5,8 @@ toc: true css_layer: components --- +import { getData } from '@libs/data' + ## Overview We use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping `