mirror of
https://github.com/utopia-os/utopia-ui.git
synced 2025-12-13 07:46:10 +00:00
31 lines
881 B
TypeScript
31 lines
881 B
TypeScript
export const randomColor = () => {
|
|
return hsvToHex((Math.random() + golden_ratio_conjugate) % 1, 0.8, 0.7)
|
|
}
|
|
|
|
const golden_ratio_conjugate = 0.618033988749895;
|
|
|
|
function hsvToHex(h, s, v) {
|
|
var r, g, b;
|
|
var i = (Math.floor(h * 6));
|
|
var f = h * 6 - i;
|
|
var p = v * (1 - s);
|
|
var q = v * (1 - f * s);
|
|
var t = v * (1 - (1 - f) * s);
|
|
|
|
switch (i % 6) {
|
|
case 0: r = v, g = t, b = p; break;
|
|
case 1: r = q, g = v, b = p; break;
|
|
case 2: r = p, g = v, b = t; break;
|
|
case 3: r = p, g = q, b = v; break;
|
|
case 4: r = t, g = p, b = v; break;
|
|
case 5: r = v, g = p, b = q; break;
|
|
}
|
|
|
|
return rgbToHex(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255))
|
|
}
|
|
|
|
|
|
const rgbToHex = (r, g, b) => '#' + [r, g, b].map(x => {
|
|
const hex = x.toString(16)
|
|
return hex.length === 1 ? '0' + hex : hex
|
|
}).join('') |