Correctly detect system dark mode in RenderedJsonField #54245
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #54204
Root Cause
The UI now supports OS-level color mode detection. When a user relies on their OS settings to switch to dark mode (and has not manually toggled the theme in the UI), the state from the
next-themeslibrary is:theme: 'system'resolvedTheme: 'dark'The previous implementation in
RenderedJsonFieldwas checking against thethemeproperty. The checktheme === 'dark'would fail, causing the component to incorrectly use a light-mode style, resulting in dark text on a dark background.Solution
The solution is to consistently use
resolvedThemeas the source of truth for the currently displayed theme.RenderedJsonField.tsxhas been updated to useuseColorMode.Additionally, I have confirmed that
RenderedJsonField.tsxwas the only remaining instance of using theuseThemehook.^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rstor{issue_number}.significant.rst, in airflow-core/newsfragments.