From 10666ad7726d680e1dcf3e86c1cf4e791ec93c19 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Tue, 7 Apr 2026 14:04:31 -0700 Subject: [PATCH] Rename theme text tokens to fg, update utilities (#42295) With this refactor, our .fg-* and .bg-* and .border-* utilities can be modified by custom CSS, like in our blue theme example. This also standardizes some nomenclature by using fg instead of text in the token names for theme values, better matching bg. Classes already use this, as do root fg tokens, so this is just a consistency update. --- scss/_accordion.scss | 2 +- scss/_alert.scss | 2 +- scss/_avatar.scss | 2 +- scss/_card.scss | 4 +- scss/_chip.scss | 2 +- scss/_list-group.scss | 8 +- scss/_menu.scss | 4 +- scss/_root.scss | 2 +- scss/_theme.scss | 65 +++++++++++---- scss/_toasts.scss | 2 +- scss/_utilities.scss | 22 ++--- scss/buttons/_button.scss | 6 +- scss/content/_prose.scss | 8 +- scss/content/_reboot.scss | 4 +- scss/content/_tables.scss | 18 ++--- scss/forms/_chip-input.scss | 2 +- scss/forms/_form-variables.scss | 4 +- scss/forms/_radio.scss | 2 +- scss/forms/_switch.scss | 2 +- scss/tests/mixins/_color-modes.test.scss | 8 +- scss/tests/modules/_configuration.test.scss | 2 +- site/src/content/docs/components/card.mdx | 4 +- .../content/docs/customize/color-modes.mdx | 12 ++- site/src/content/docs/customize/theme.mdx | 22 ++--- .../content/docs/getting-started/approach.mdx | 53 +++++++++--- .../content/docs/getting-started/install.mdx | 4 +- site/src/content/docs/guides/migration.mdx | 4 +- site/src/content/docs/utilities/api.mdx | 4 +- .../src/content/docs/utilities/background.mdx | 13 ++- .../content/docs/utilities/border-color.mdx | 24 +++--- site/src/content/docs/utilities/colors.mdx | 6 +- site/src/content/docs/utilities/theme.mdx | 4 +- site/src/layouts/ExamplesLayout.astro | 2 +- site/src/libs/placeholder.ts | 6 +- site/src/scss/_badge.scss | 2 +- site/src/scss/_component-examples.scss | 6 +- site/src/scss/_content.scss | 48 +++++------ site/src/scss/_masthead.scss | 10 +-- site/src/scss/_navbar.scss | 2 +- site/src/scss/_placeholder-img.scss | 2 +- site/src/scss/_search.scss | 80 ------------------- site/src/scss/_sidebar.scss | 2 +- site/src/scss/_syntax.scss | 1 + 43 files changed, 236 insertions(+), 246 deletions(-) diff --git a/scss/_accordion.scss b/scss/_accordion.scss index f5c2cba8ef..a1cce3fd76 100644 --- a/scss/_accordion.scss +++ b/scss/_accordion.scss @@ -106,7 +106,7 @@ $accordion-tokens: defaults( border-color: var(--theme-border, var(--accordion-border-color)); > .accordion-header { - color: var(--theme-text, var(--accordion-active-color)); + color: var(--theme-fg, var(--accordion-active-color)); background-color: var(--theme-bg-subtle, var(--accordion-active-bg)); box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color)); diff --git a/scss/_alert.scss b/scss/_alert.scss index 90723a4d7e..20a79e2d95 100644 --- a/scss/_alert.scss +++ b/scss/_alert.scss @@ -13,7 +13,7 @@ $alert-tokens: defaults( --alert-bg: var(--theme-bg-subtle, var(--bg-1)), --alert-padding-x: #{$spacer}, --alert-padding-y: #{$spacer}, - --alert-color: var(--theme-text, inherit), + --alert-color: var(--theme-fg, inherit), --alert-border-color: var(--theme-border, var(--border-color)), --alert-border: var(--border-width) solid var(--alert-border-color), --alert-border-radius: var(--border-radius), diff --git a/scss/_avatar.scss b/scss/_avatar.scss index e1171d09c4..b097e9ce82 100644 --- a/scss/_avatar.scss +++ b/scss/_avatar.scss @@ -75,7 +75,7 @@ $avatar-sizes: defaults( } .avatar-subtle { - color: var(--theme-text, var(--avatar-color)); + color: var(--theme-fg, var(--avatar-color)); background-color: var(--theme-bg-subtle, var(--avatar-bg)); } diff --git a/scss/_card.scss b/scss/_card.scss index 11f5729766..7814d495e3 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -140,13 +140,13 @@ $card-tokens: defaults( border-color: var(--theme-border, var(--card-border-color)); .card-header { - color: var(--theme-text-emphasis, currentcolor); + color: var(--theme-fg-emphasis, currentcolor); background-color: var(--theme-bg-subtle, var(--card-cap-bg)); border-color: var(--theme-border, var(--card-border-color)); } .card-footer { - color: var(--theme-text-emphasis, currentcolor); + color: var(--theme-fg-emphasis, currentcolor); background-color: var(--theme-bg-subtle, var(--card-cap-bg)); border-color: var(--theme-border, var(--card-border-color)); } diff --git a/scss/_chip.scss b/scss/_chip.scss index dae2f8dbf8..2b354b92f0 100644 --- a/scss/_chip.scss +++ b/scss/_chip.scss @@ -19,7 +19,7 @@ $chip-tokens: defaults( --chip-dismiss-size: 1rem, --chip-dismiss-opacity: .65, --chip-dismiss-hover-opacity: 1, - --chip-color: var(--theme-text, var(--fg-body)), + --chip-color: var(--theme-fg, var(--fg-body)), --chip-bg: var(--theme-bg-subtle, var(--bg-2)), --chip-border-color: transparent, --chip-selected-color: var(--theme-contrast, var(--primary-contrast)), diff --git a/scss/_list-group.scss b/scss/_list-group.scss index 5fbc2411d0..acc59cd03c 100644 --- a/scss/_list-group.scss +++ b/scss/_list-group.scss @@ -65,7 +65,7 @@ $list-group-tokens: defaults( position: relative; display: block; padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x); - color: var(--theme-text, var(--list-group-color)); + color: var(--theme-fg, var(--list-group-color)); // stylelint-disable-next-line scss/at-function-named-arguments text-decoration: if(sass($link-decoration == none): null); background-color: var(--theme-bg-subtle, var(--list-group-bg)); @@ -112,7 +112,7 @@ $list-group-tokens: defaults( .list-group-item-action { width: 100%; // For `