colorizr
Version:
Manipulate colors like a boss
25 lines (20 loc) • 829 B
text/typescript
import formatCSS from '~/format-css';
import { MESSAGES } from '~/modules/constants';
import { invariant } from '~/modules/invariant';
import { resolveColor } from '~/modules/parsed-color';
import { isNumberInRange, isString } from '~/modules/validators';
import { ColorType } from '~/types';
/**
* Set the color opacity/alpha.
*
* @param input - The input color string.
* @param alpha - A number between 0 and 1.
* @param format - The output color format.
* @returns The opacified color string.
*/
export default function opacify(input: string, alpha: number, format?: ColorType): string {
invariant(isString(input), MESSAGES.inputString);
invariant(isNumberInRange(alpha, 0, 1), MESSAGES.alpha);
const parsed = resolveColor(input);
return formatCSS(parsed.oklch, { format: format ?? parsed.type, alpha });
}