import tinycolor from 'tinycolor2';

/**
 * Function that takes a valid CSS color and adds some opacity to it.
 *
 * @param baseColor Color in HSL, HSV, HEX or RGB
 * @param alpha Alpha for this color
 */
export function toRGBA(baseColor: string, alpha: number) {
  // tinycolor doesn't support css variables, so assume the variable is correct as is
  if (baseColor.startsWith('var(')) return baseColor;
  const color = tinycolor(baseColor);
  color.setAlpha(alpha);

  return color.toRgbString();
}

/**
 * Function that takes a valid CSS color and mixes it with black.
 *
 * @param baseColor Color in HSL, HSV, HEX or RGB
 * @param amount Amount of black to mix with the base color.
 */
export function darken(baseColor: string, amount?: number) {
  return tinycolor.mix(baseColor, 'black', amount || 50).toRgbString();
}
