digitransit-ui/app/util/colorUtils.js
Vesa Meskanen 9a1afdbf5b feat: generalize color configuration
Configuration exposed a limited set of theme colors prefixes with 'mode-'
to component libraries. Many parts of UI used either a hard coded color
or incorrectly HSL theme color. Now all relevant colors can put into
a general use color map and component can access them. First use case is
near you mode icon row's expand arrow.
2026-01-10 13:46:30 +02:00

49 lines
963 B
JavaScript

/* eslint no-bitwise: ["error", { "allow": [">>", "&", "|", "<<"] }] */
// eslint-disable-next-line
export function LightenDarkenColor(color, amt) {
/* https://css-tricks.com/snippets/javascript/lighten-darken-color/ */
let col = color;
let usePound = false;
if (col[0] === '#') {
col = col.slice(1);
usePound = true;
}
const num = parseInt(col, 16);
let r = (num >> 16) + amt;
if (r > 255) {
r = 255;
} else if (r < 0) {
r = 0;
}
let b = ((num >> 8) & 0x00ff) + amt;
if (b > 255) {
b = 255;
} else if (b < 0) {
b = 0;
}
let g = (num & 0x0000ff) + amt;
if (g > 255) {
g = 255;
} else if (g < 0) {
g = 0;
}
return (
(usePound ? '#' : '') +
String(`000000${(g | (b << 8) | (r << 16)).toString(16)}`).slice(-6)
);
}
/* map extended route mode to color */
export function getModeIconColor(config, mode) {
return config.colors[mode.toLowerCase()] || config.colors.primary;
}