angular-material-css-vars
Version:
Little library to use css variables for @angular/material
189 lines (184 loc) • 7.36 kB
TypeScript
import * as i0 from '@angular/core';
import { ModuleWithProviders, EnvironmentProviders } from '@angular/core';
import * as i1 from '@angular/common';
type HueValue = "50" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | "A100" | "A200" | "A400" | "A700";
declare enum MatCssPalettePrefix {
Primary = "--palette-primary-",
Accent = "--palette-accent-",
Warn = "--palette-warn-"
}
interface MatCssHueColorMapItem {
hue: HueValue;
isLight: boolean;
color: {
r: number;
g: number;
b: number;
a: number;
str: string;
};
}
interface MatCssHueColorContrastMapItem extends MatCssHueColorMapItem {
contrast: {
r: number;
g: number;
b: number;
a: number;
str: string;
};
}
interface MaterialCssColorMapperEntry {
name: HueValue;
map: [number, number, number];
}
interface MaterialCssVariablesConfig {
isAutoContrast: boolean;
isAlternativeColorAlgorithm: boolean;
darkThemeClass: string;
lightThemeClass: string;
/**
* Selector to which the CSS variables are added.
* If not specified, the document's HTML element is used.
*/
rootSelector?: string;
colorMap: MaterialCssColorMapperEntry[];
sortedHues: HueValue[];
isDarkTheme?: boolean;
primary?: string;
accent?: string;
warn?: string;
}
declare enum MaterialCssVariables {
"Primary50" = "--palette-primary-50",
"Primary100" = "--palette-primary-100",
"Primary200" = "--palette-primary-200",
"Primary300" = "--palette-primary-300",
"Primary400" = "--palette-primary-400",
"Primary500" = "--palette-primary-500",
"Primary600" = "--palette-primary-600",
"Primary700" = "--palette-primary-700",
"Primary800" = "--palette-primary-800",
"Primary900" = "--palette-primary-900",
"PrimaryA100" = "--palette-primary-A100",
"PrimaryA200" = "--palette-primary-A200",
"PrimaryA400" = "--palette-primary-A400",
"PrimaryA700" = "--palette-primary-A700",
"PrimaryContrast50" = "--palette-primary-contrast-50",
"PrimaryContrast100" = "--palette-primary-contrast-100",
"PrimaryContrast200" = "--palette-primary-contrast-200",
"PrimaryContrast300" = "--palette-primary-contrast-300",
"PrimaryContrast400" = "--palette-primary-contrast-400",
"PrimaryContrast500" = "--palette-primary-contrast-500",
"PrimaryContrast600" = "--palette-primary-contrast-600",
"PrimaryContrast700" = "--palette-primary-contrast-700",
"PrimaryContrast800" = "--palette-primary-contrast-800",
"PrimaryContrast900" = "--palette-primary-contrast-900",
"PrimaryContrastA100" = "--palette-primary-contrast-A100",
"PrimaryContrastA200" = "--palette-primary-contrast-A200",
"PrimaryContrastA400" = "--palette-primary-contrast-A400",
"PrimaryContrastA700" = "--palette-primary-contrast-A700",
"Accent50" = "--palette-accent-50",
"Accent100" = "--palette-accent-100",
"Accent200" = "--palette-accent-200",
"Accent300" = "--palette-accent-300",
"Accent400" = "--palette-accent-400",
"Accent500" = "--palette-accent-500",
"Accent600" = "--palette-accent-600",
"Accent700" = "--palette-accent-700",
"Accent800" = "--palette-accent-800",
"Accent900" = "--palette-accent-900",
"AccentA100" = "--palette-accent-A100",
"AccentA200" = "--palette-accent-A200",
"AccentA400" = "--palette-accent-A400",
"AccentA700" = "--palette-accent-A700",
"DarkAccentText" = "--dark-accent-text",
"LightAccentText" = "--light-accent-text",
"Warn50" = "--palette-warn-50",
"Warn100" = "--palette-warn-100",
"Warn200" = "--palette-warn-200",
"Warn300" = "--palette-warn-300",
"Warn400" = "--palette-warn-400",
"Warn500" = "--palette-warn-500",
"Warn600" = "--palette-warn-600",
"Warn700" = "--palette-warn-700",
"Warn800" = "--palette-warn-800",
"Warn900" = "--palette-warn-900",
"WarnA100" = "--palette-warn-A100",
"WarnA200" = "--palette-warn-A200",
"WarnA400" = "--palette-warn-A400",
"WarnA700" = "--palette-warn-A700",
"DarkWarnText" = "--dark-warn-text",
"LightWarnText" = "--light-warn-text"
}
/** @dynamic */
declare class MaterialCssVarsService {
private static CONTRAST_PREFIX;
private static DARK_TEXT_VAR;
private static LIGHT_TEXT_VAR;
cfg: MaterialCssVariablesConfig;
primary: string;
accent: string;
warn: string;
isDarkTheme?: boolean;
contrastColorThresholdPrimary: HueValue;
contrastColorThresholdAccent: HueValue;
contrastColorThresholdWarn: HueValue;
isAutoContrast: boolean;
private renderer;
private ROOT;
private readonly _black;
private readonly _white;
private readonly document;
constructor();
setPrimaryColor(hex: string): void;
setAccentColor(hex: string): void;
setWarnColor(hex: string): void;
setVariable(cssVarName: MaterialCssVariables, value: string): void;
setDarkTheme(isDark: boolean): void;
setAutoContrastEnabled(val: boolean): void;
setContrastColorThresholdPrimary(threshold: HueValue): void;
setContrastColorThresholdAccent(threshold: HueValue): void;
setContrastColorThresholdWarn(threshold: HueValue): void;
setContrastColorThreshold(threshold: HueValue, palettePrefix: MatCssPalettePrefix): void;
/**
* Generate palette color based on traditional values
*/
setAlternativeColorAlgorithm(traditional: boolean): void;
getPaletteForColor(hex: string): MatCssHueColorMapItem[];
getPaletteWithContrastForColor(hex: string): MatCssHueColorContrastMapItem[];
private getTraditionalPaletteForColor;
private getConstantinPaletteForColor;
private _computePaletteColors;
private _recalculateAndSetContrastColor;
private _calculateContrastColorsForCurrentValues;
private _setStyle;
/**
* Replace variables that are formatted as rgba(var(rgb(xxx))) to be var(xxx) to allow proper formatting
* in variable overrides.
* @param value
* @returns
*/
private _replaceNoRgbValue;
private _getCssVarValue;
/**
* Compute pallet colors based on a Triad (Constantin)
* see: https://github.com/mbitson/mcg
*/
private computePalletTriad;
private multiply;
private getColorObject;
private _getContrastColorVar;
private _getContrast;
private _getRootElement;
static ɵfac: i0.ɵɵFactoryDeclaration<MaterialCssVarsService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<MaterialCssVarsService>;
}
declare class MaterialCssVarsModule {
static forRoot(config?: Partial<MaterialCssVariablesConfig>): ModuleWithProviders<MaterialCssVarsModule>;
static ɵfac: i0.ɵɵFactoryDeclaration<MaterialCssVarsModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<MaterialCssVarsModule, never, [typeof i1.CommonModule], never>;
static ɵinj: i0.ɵɵInjectorDeclaration<MaterialCssVarsModule>;
}
declare function provideMaterialCssVars(config?: Partial<MaterialCssVariablesConfig>): EnvironmentProviders;
export { MatCssPalettePrefix, MaterialCssVariables, MaterialCssVarsModule, MaterialCssVarsService, provideMaterialCssVars };
export type { HueValue, MatCssHueColorContrastMapItem, MatCssHueColorMapItem, MaterialCssColorMapperEntry, MaterialCssVariablesConfig };