[Bug]: Internal and external design token hashes don't match
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
- Ambito
- design
Direzione di ricerca
Start by comparing how @cloudscape-design/design-tokens generates or consumes CSS variable names with how @cloudscape-design/components and @cloudscape-design/global-styles emit them; the issue does not name source files or tests. Reproduce with the listed package versions and applyMode(Mode.Dark), then check whether the token variable set by dark mode is the one used by the inline style. Done when the packages' supported version contract is clear and the documented usage produces the dark-mode background.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Browser
Chrome
Package version
3.0.1330
React version
Description
I fully admit I may not be understanding something here about how this is supposed to be used, but I'm going by (as far as I can tell) official documentation.
I'm trying to implement dark mode in my application, and I have had to override some color somewhere in one of my controls (you may already feel where this is going).
As per the design token documentation, I am doing the following:
import * as awsui from '@cloudscape-design/design-tokens';
return (
<div style={{ backgroundColor: awsui.colorBackgroundContainerContent }}></div>
);
The dark mode documentation says that I should be using design tokens everywhere, which I'm doing, so I'm feeling good.
By the way, that page has 0 context on how to actually apply dark mode itself, which I've had to Google to come out to something like this:
import { applyMode, Mode } from "@cloudscape-design/global-styles";
export type LightDarkPreference = 'system' | 'dark' | 'light';
let userPreference = localStorage.getItem('light-dark-preference') as LightDarkPreference | null ?? 'system';
const systemDarkMode = window.matchMedia('(prefers-color-scheme: dark)');
// Initialize color mode based on user's OS preference and stay in sync if the preference changes.
systemDarkMode.addEventListener('change', () => refreshDarkMode());
refreshDarkMode();
function refreshDarkMode() {
if (userPreference === 'system') {
applyMode(systemDarkMode.matches ? Mode.Dark : Mode.Light);
} else if (userPreference === 'dark') {
applyMode(Mode.Dark);
} else {
applyMode(Mode.Light);
}
}
The symptom
But of course, when I switch to Dark Mode my background is still bright white. The design token didn't do anything:
The promixate cause
When I look at the CSS it's because the variable names don't match:
// Variable consumed by the design-tokens library
background-color: var(--color-background-container-content-mjfil9, #ffffff);
// Variable set by the <body> element
.awsui-dark-mode:not(#\ ) {
--color-background-container-content-6u8rvp: var(--color-neutral-850-3f0gro);
}
The root cause?
Because mjfil9 != 6u8rvp, the variable that is set is not the variable that is read.
But my question is: why? I'm following documentation (as far as I can tell).
I'm consuming the following packages... they're not all the same major version but they are all the same major version line as the most recent packges (v3 for components and design-tokens, v1 for global-styles). I could perhaps expect incompatibilities between major version lines, but not inside a major version line.
@cloudscape-design/components 3.0.1330
@cloudscape-design/design-tokens 3.0.114
@cloudscape-design/global-styles 1.0.62
As far as I can tell I also only have one copy of each, so it's not multiple copies of the same package at slightly different versions, which should have been deduplicated but weren't.
What is the contract here?
Please tell me the it isn't "I have to go hunt for the exact patch version of components that was used to build design-tokens (or the other way around), and any time I upgrade one of the packages I have to go hunt for the patch version again" ?
Source code
No response
Reproduction
No response
Code of Conduct
- I agree to follow this project's Code of Conduct
- I checked the current issues for duplicate problems
- Lingua principale
- TypeScript
- Stelle
- 2.7k
- Fork
- 248
- Merge medio
- 3g 14h
- PR unite (30g)
- 83
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cloudscape-design/components
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
cloudscape-design/components#5184 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cloudscape-design/components#5152 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
cloudscape-design/components#5149 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
cloudscape-design/components#5106 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
[Bug/Feature Request]: `usePerformanceMarks` has ID generation incompatible with Next.js Partial PrerenderingForse già presa @amanabiy l’ha presa 22 giorni fa. Apertaenhancement
cloudscape-design/components#5023 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di cloudscape-design/components
Issue simili
-
[Feature]: 建议导入源后,自动切换到新导入的源Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
lyswhut/lx-music-desktop#3026 ·
-
area: ci type: test
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
schlessera/brain-kit#2769 ·
I maintainer di solito rispondono entro 1 giorno
-
Read a vector index's quantization back on Neo4j 2026.10, which reports vector.quantization.typeAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
liberation-data/drivine#231 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
alveusgg/alveusgg#2502 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno