Open Yavanosta opened 4 years ago
To determine ink color for each given background color the mdc-theme-tone function used. I has following algorithm:
background color / black
and background color / white
.background color / white
contrast > 3.1
-> ink color whiteThis algorithm is not compatible with our default theme because for secondary varian color (#018786
) it return white ink.
4.5
(minimum contrast for small captions)3.1
cut-of.Y >= 128
(or vice versa).L >= 0.5
All this algorithms re not silver bullet because there are a lot edge cases where changing algorithm change ink color from white to black or from black to white. Additional research should be done to find out the best algorithm for tone detection.
Since for now Secondary Variant is not used algorithm will not be changed as not to make breaking changes.
Bug report
For some backgrounds
mdc-theme
calculate incorrect ink color.Ink color for background color is usually chooses using this algorithm: https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
But here there is a condition that give priority to white ink color if both white and black are suitable according minimal contrast criteria.
That's why for background
#018786
(secondary variant color from base theme) white ink color is white, but contrast for black ink is higher (black has4.8111258691
white has4.3648826847
). Moreover contrast for white is lower that required contrast for small texts.Color selection tool offer black ink for this background.
Steps to reproduce
#018786
npm start
(or open demo page)Actual behavior
Buttons have white ink color.
Expected behavior
Buttons have black ink color.
Possible solution
Remove this condition
($lightContrast < $minimumContrast)
from theme component or at least update3.1
->4.5
(4.5
is minimum required contrast for small texts).