53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { CustomColorType } from '../types/Colors';
|
|
import { ThemeType } from '../types/Util';
|
|
import { getHSL } from './getHSL';
|
|
import { getUserTheme } from '../shims/getUserTheme';
|
|
|
|
type ExtraQuotePropsType = {
|
|
borderLeftColor?: string;
|
|
};
|
|
|
|
type BackgroundPropertyType =
|
|
| { backgroundColor: string }
|
|
| { backgroundImage: string }
|
|
| undefined;
|
|
|
|
export function getCustomColorStyle(
|
|
color?: CustomColorType,
|
|
isQuote = false
|
|
): BackgroundPropertyType {
|
|
if (!color) {
|
|
return undefined;
|
|
}
|
|
|
|
const extraQuoteProps: ExtraQuotePropsType = {};
|
|
let adjustedLightness = 0;
|
|
if (isQuote) {
|
|
const theme = getUserTheme();
|
|
if (theme === ThemeType.light) {
|
|
adjustedLightness = 0.6;
|
|
}
|
|
if (theme === ThemeType.dark) {
|
|
adjustedLightness = -0.4;
|
|
}
|
|
extraQuoteProps.borderLeftColor = getHSL(color.start);
|
|
}
|
|
|
|
if (!color.end) {
|
|
return {
|
|
...extraQuoteProps,
|
|
backgroundColor: getHSL(color.start, adjustedLightness),
|
|
};
|
|
}
|
|
|
|
return {
|
|
...extraQuoteProps,
|
|
backgroundImage: `linear-gradient(${270 - (color.deg || 0)}deg, ${getHSL(
|
|
color.start,
|
|
adjustedLightness
|
|
)}, ${getHSL(color.end, adjustedLightness)})`,
|
|
};
|
|
}
|