mirror of https://github.com/go-gitea/gitea.git
Fix and rewrite contrast color calculation, fix project-related bugs (#30237)
1. The previous color contrast calculation function was incorrect at least for the `#84b6eb` where it output low-contrast white instead of black. I've rewritten these functions now to accept hex colors and to match GitHub's calculation and to output pure white/black for maximum contrast. Before and after: <img width="94" alt="Screenshot 2024-04-02 at 01 53 46" src="https://github.com/go-gitea/gitea/assets/115237/00b39e15-a377-4458-95cf-ceec74b78228"><img width="90" alt="Screenshot 2024-04-02 at 01 51 30" src="https://github.com/go-gitea/gitea/assets/115237/1677067a-8d8f-47eb-82c0-76330deeb775"> 2. Fix project-related issues: - Expose the new `ContrastColor` function as template helper and use it for project cards, replacing the previous JS solution which eliminates a flash of wrong color on page load. - Fix a bug where if editing a project title, the counter would get lost. - Move `rgbToHex` function to color utils. @HesterG fyi --------- Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Giteabot <teabot@gitea.io>pull/30280/head^2
parent
019857a701
commit
36887ed392
@ -1,21 +1,22 @@
|
|||||||
import {useLightTextOnBackground} from './color.js';
|
import {contrastColor} from './color.js';
|
||||||
|
|
||||||
test('useLightTextOnBackground', () => {
|
test('contrastColor', () => {
|
||||||
expect(useLightTextOnBackground(215, 58, 74)).toBe(true);
|
expect(contrastColor('#d73a4a')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(0, 117, 202)).toBe(true);
|
expect(contrastColor('#0075ca')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(207, 211, 215)).toBe(false);
|
expect(contrastColor('#cfd3d7')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(162, 238, 239)).toBe(false);
|
expect(contrastColor('#a2eeef')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(112, 87, 255)).toBe(true);
|
expect(contrastColor('#7057ff')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(0, 134, 114)).toBe(true);
|
expect(contrastColor('#008672')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(228, 230, 105)).toBe(false);
|
expect(contrastColor('#e4e669')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(216, 118, 227)).toBe(true);
|
expect(contrastColor('#d876e3')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(255, 255, 255)).toBe(false);
|
expect(contrastColor('#ffffff')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(43, 134, 133)).toBe(true);
|
expect(contrastColor('#2b8684')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(43, 135, 134)).toBe(true);
|
expect(contrastColor('#2b8786')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(44, 135, 134)).toBe(true);
|
expect(contrastColor('#2c8786')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(59, 182, 179)).toBe(true);
|
expect(contrastColor('#3bb6b3')).toBe('#000');
|
||||||
expect(useLightTextOnBackground(124, 114, 104)).toBe(true);
|
expect(contrastColor('#7c7268')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(126, 113, 108)).toBe(true);
|
expect(contrastColor('#7e716c')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(129, 112, 109)).toBe(true);
|
expect(contrastColor('#81706d')).toBe('#fff');
|
||||||
expect(useLightTextOnBackground(128, 112, 112)).toBe(true);
|
expect(contrastColor('#807070')).toBe('#fff');
|
||||||
|
expect(contrastColor('#84b6eb')).toBe('#000');
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue