lx-music-desktop/src/common/theme/utils.js
2023-12-17 21:50:12 +08:00

76 lines
2.4 KiB
JavaScript

const { RGB_Linear_Shade, RGB_Alpha_Shade } = require('./colorUtils')
exports.createThemeColors = (rgbaColor, fontRgbaColor, isDark) => {
const colors = {
'--color-primary': rgbaColor,
}
let preColor = rgbaColor
for (let i = 1; i < 11; i += 1) {
preColor = RGB_Linear_Shade(isDark ? 0.2 : -0.1, preColor)
colors[`--color-primary-dark-${i * 100}`] = preColor
for (let j = 1; j < 10; j += 1) {
colors[`--color-primary-dark-${i * 100}-alpha-${j * 100}`] = RGB_Alpha_Shade(0.1 * j, preColor)
colors[`--color-primary-alpha-${j * 100}`] = RGB_Alpha_Shade(0.1 * j, rgbaColor)
}
}
preColor = rgbaColor
for (let i = 1; i < 10; i += 1) {
preColor = RGB_Linear_Shade(isDark ? -0.1 : 0.2, preColor)
colors[`--color-primary-light-${i * 100}`] = preColor
for (let j = 1; j < 10; j += 1) {
colors[`--color-primary-light-${i * 100}-alpha-${j * 100}`] = RGB_Alpha_Shade(0.1 * j, preColor)
}
}
preColor = RGB_Linear_Shade(isDark ? -0.35 : 1, preColor)
colors[`--color-primary-light-${1000}`] = preColor
for (let j = 1; j < 10; j += 1) {
colors[`--color-primary-light-${1000}-alpha-${j * 100}`] = RGB_Alpha_Shade(0.1 * j, preColor)
}
colors['--color-theme'] = isDark ? colors['--color-primary-light-900'] : rgbaColor
return { ...colors, ...createFontColors(fontRgbaColor, isDark) }
}
const createFontColors = (rgbaColor, isDark) => {
// rgb(238, 238, 238)
// let prec = 'rgb(255, 255, 255)'
rgbaColor ??= isDark ? 'rgb(229, 229, 229)' : 'rgb(33, 33, 33)'
if (isDark) return createFontDarkColors(rgbaColor)
let colors = {
'--color-1000': rgbaColor,
}
let step = isDark ? -0.05 : 0.05
for (let i = 1; i < 21; i += 1) {
colors[`--color-${String(1000 - 50 * i).padStart(3, '0')}`] = RGB_Linear_Shade(step * i, rgbaColor)
}
// console.log(colors)
return colors
}
const createFontDarkColors = (rgbaColor) => {
// rgb(238, 238, 238)
// let prec = 'rgb(255, 255, 255)'
let colors = {
'--color-1000': rgbaColor,
}
const step = -0.05
let preColor = rgbaColor
for (let i = 1; i < 21; i += 1) {
preColor = RGB_Linear_Shade(step, preColor)
colors[`--color-${String(1000 - 50 * i).padStart(3, '0')}`] = preColor
}
// console.log(colors)
return colors
}
// console.log(createFontColors('rgb(33, 33, 33)', false))
// console.log(createFontColors('rgb(255, 255, 255)', true))
// console.log(createFontDarkColors('rgb(255, 255, 255)'))