@sandlada/mdk
Version:
A JavaScript library based on Material Design 3, providing data such as color, shape, shadow level, etc.
179 lines (178 loc) • 9.3 kB
TypeScript
import { DefaultColorContract } from '../consts/default-color-contract.const';
import type { SemanticColorContract } from '../interfaces/semantic-color-contract.interface';
import type { SemanticColorNames } from '../interfaces/semantic-color-names.interface';
import type { ICSSDeclaration } from '../interfaces/css-declaration.interface';
declare class _Color<K extends string, V extends string> implements ICSSDeclaration<K, V, `${K}: ${V}${';' | ''}`, `var(${K}, ${V})`> {
readonly Key: K;
readonly Value: V;
toJSON(): {
Key: K;
Value: V;
};
toString(): V;
ToCSSDeclaration(): `${K}: ${V}`;
ToCSSDeclaration(options: {
Semicolon: true;
}): `${K}: ${V};`;
ToCSSDeclaration(options?: {
Semicolon?: boolean;
}): `${K}: ${V}${';' | ''}`;
ToCSSVariable(): `var(${K}, ${V})`;
constructor(Key: K, Value: V);
}
type MergeContracts<Base extends Record<SemanticColorNames, SemanticColorContract>, Override extends Partial<Record<SemanticColorNames, SemanticColorContract>>> = {
[K in keyof Base]: K extends keyof Override ? Override[K] extends SemanticColorContract ? Override[K] : Base[K] : Base[K];
};
type ToColorContract<T extends Record<SemanticColorNames, SemanticColorContract>> = {
[K in keyof T]: T[K] extends {
readonly Key: infer K2 extends string;
readonly Value: infer V2 extends string;
} ? _Color<K2, V2> : never;
};
/**
* @example
* Usage:
* ```ts
* const YourAppColor = Color.From({
* // Optionally, you can override the default color contract by providing a partial contract object to the `From` method.
* Primary: { Key: `--hum-hum`, Value: `abcdefgHumHumHum` },
* })
*
* console.log(YourAppColor.Primary.Value) // abcdefgHumHumHum
* console.log(YourAppColor.Primary.Key) // --hum-hum
* console.log(YourAppColor.Primary.ToCSSDeclaration()) // --hum-hum: abcdefgHumHumHum
* console.log(YourAppColor.Primary.ToCSSVariable()) // var(--hum-hum, abcdefgHumHumHum)
* ```
*/
export declare class Color<CONTRACT extends Record<SemanticColorNames, _Color<string, string>>> {
/**
* {
* OnPrimary: _Color({ Key: `--md-sys-color-on-primary`, Value: `light-dark(#ffffff, #00391a)` }),
* ...
* }
*/
private readonly contract;
private constructor();
static From<const C extends Partial<Record<SemanticColorNames, SemanticColorContract>>>(contract?: C): Color<ToColorContract<MergeContracts<typeof DefaultColorContract, C>>>;
get PrimaryKeyColor(): CONTRACT['PrimaryKeyColor'];
get SecondaryKeyColor(): CONTRACT['SecondaryKeyColor'];
get TertiaryKeyColor(): CONTRACT['TertiaryKeyColor'];
get ErrorKeyColor(): CONTRACT['ErrorKeyColor'];
get NeutralKeyColor(): CONTRACT['NeutralKeyColor'];
get NeutralVariantKeyColor(): CONTRACT['NeutralVariantKeyColor'];
get Background(): CONTRACT['Background'];
get Error(): CONTRACT['Error'];
get ErrorContainer(): CONTRACT['ErrorContainer'];
get ErrorDim(): CONTRACT['ErrorDim'];
get InverseOnSurface(): CONTRACT['InverseOnSurface'];
get InversePrimary(): CONTRACT['InversePrimary'];
get InverseSurface(): CONTRACT['InverseSurface'];
get OnBackground(): CONTRACT['OnBackground'];
get OnError(): CONTRACT['OnError'];
get OnErrorContainer(): CONTRACT['OnErrorContainer'];
get OnPrimary(): CONTRACT['OnPrimary'];
get OnPrimaryContainer(): CONTRACT['OnPrimaryContainer'];
get OnPrimaryFixed(): CONTRACT['OnPrimaryFixed'];
get OnPrimaryFixedVariant(): CONTRACT['OnPrimaryFixedVariant'];
get OnSecondary(): CONTRACT['OnSecondary'];
get OnSecondaryContainer(): CONTRACT['OnSecondaryContainer'];
get OnSecondaryFixed(): CONTRACT['OnSecondaryFixed'];
get OnSecondaryFixedVariant(): CONTRACT['OnSecondaryFixedVariant'];
get OnSurface(): CONTRACT['OnSurface'];
get OnSurfaceVariant(): CONTRACT['OnSurfaceVariant'];
get OnTertiary(): CONTRACT['OnTertiary'];
get OnTertiaryContainer(): CONTRACT['OnTertiaryContainer'];
get OnTertiaryFixed(): CONTRACT['OnTertiaryFixed'];
get OnTertiaryFixedVariant(): CONTRACT['OnTertiaryFixedVariant'];
get Outline(): CONTRACT['Outline'];
get OutlineVariant(): CONTRACT['OutlineVariant'];
get Primary(): CONTRACT['Primary'];
get PrimaryContainer(): CONTRACT['PrimaryContainer'];
get PrimaryDim(): CONTRACT['PrimaryDim'];
get PrimaryFixed(): CONTRACT['PrimaryFixed'];
get PrimaryFixedDim(): CONTRACT['PrimaryFixedDim'];
get Scrim(): CONTRACT['Scrim'];
get Secondary(): CONTRACT['Secondary'];
get SecondaryContainer(): CONTRACT['SecondaryContainer'];
get SecondaryDim(): CONTRACT['SecondaryDim'];
get SecondaryFixed(): CONTRACT['SecondaryFixed'];
get SecondaryFixedDim(): CONTRACT['SecondaryFixedDim'];
get Shadow(): CONTRACT['Shadow'];
get Surface(): CONTRACT['Surface'];
get SurfaceBright(): CONTRACT['SurfaceBright'];
get SurfaceContainer(): CONTRACT['SurfaceContainer'];
get SurfaceContainerHigh(): CONTRACT['SurfaceContainerHigh'];
get SurfaceContainerHighest(): CONTRACT['SurfaceContainerHighest'];
get SurfaceContainerLow(): CONTRACT['SurfaceContainerLow'];
get SurfaceContainerLowest(): CONTRACT['SurfaceContainerLowest'];
get SurfaceDim(): CONTRACT['SurfaceDim'];
get SurfaceTint(): CONTRACT['SurfaceTint'];
get SurfaceVariant(): CONTRACT['SurfaceVariant'];
get Tertiary(): CONTRACT['Tertiary'];
get TertiaryContainer(): CONTRACT['TertiaryContainer'];
get TertiaryDim(): CONTRACT['TertiaryDim'];
get TertiaryFixed(): CONTRACT['TertiaryFixed'];
get TertiaryFixedDim(): CONTRACT['TertiaryFixedDim'];
get AllEnums(): {
readonly PrimaryKeyColor: CONTRACT["PrimaryKeyColor"];
readonly SecondaryKeyColor: CONTRACT["SecondaryKeyColor"];
readonly TertiaryKeyColor: CONTRACT["TertiaryKeyColor"];
readonly ErrorKeyColor: CONTRACT["ErrorKeyColor"];
readonly NeutralKeyColor: CONTRACT["NeutralKeyColor"];
readonly NeutralVariantKeyColor: CONTRACT["NeutralVariantKeyColor"];
readonly Background: CONTRACT["Background"];
readonly Error: CONTRACT["Error"];
readonly ErrorContainer: CONTRACT["ErrorContainer"];
readonly ErrorDim: CONTRACT["ErrorDim"];
readonly InverseOnSurface: CONTRACT["InverseOnSurface"];
readonly InversePrimary: CONTRACT["InversePrimary"];
readonly InverseSurface: CONTRACT["InverseSurface"];
readonly OnBackground: CONTRACT["OnBackground"];
readonly OnError: CONTRACT["OnError"];
readonly OnErrorContainer: CONTRACT["OnErrorContainer"];
readonly OnPrimary: CONTRACT["OnPrimary"];
readonly OnPrimaryContainer: CONTRACT["OnPrimaryContainer"];
readonly OnPrimaryFixed: CONTRACT["OnPrimaryFixed"];
readonly OnPrimaryFixedVariant: CONTRACT["OnPrimaryFixedVariant"];
readonly OnSecondary: CONTRACT["OnSecondary"];
readonly OnSecondaryContainer: CONTRACT["OnSecondaryContainer"];
readonly OnSecondaryFixed: CONTRACT["OnSecondaryFixed"];
readonly OnSecondaryFixedVariant: CONTRACT["OnSecondaryFixedVariant"];
readonly OnSurface: CONTRACT["OnSurface"];
readonly OnSurfaceVariant: CONTRACT["OnSurfaceVariant"];
readonly OnTertiary: CONTRACT["OnTertiary"];
readonly OnTertiaryContainer: CONTRACT["OnTertiaryContainer"];
readonly OnTertiaryFixed: CONTRACT["OnTertiaryFixed"];
readonly OnTertiaryFixedVariant: CONTRACT["OnTertiaryFixedVariant"];
readonly Outline: CONTRACT["Outline"];
readonly OutlineVariant: CONTRACT["OutlineVariant"];
readonly Primary: CONTRACT["Primary"];
readonly PrimaryContainer: CONTRACT["PrimaryContainer"];
readonly PrimaryDim: CONTRACT["PrimaryDim"];
readonly PrimaryFixed: CONTRACT["PrimaryFixed"];
readonly PrimaryFixedDim: CONTRACT["PrimaryFixedDim"];
readonly Scrim: CONTRACT["Scrim"];
readonly Secondary: CONTRACT["Secondary"];
readonly SecondaryContainer: CONTRACT["SecondaryContainer"];
readonly SecondaryDim: CONTRACT["SecondaryDim"];
readonly SecondaryFixed: CONTRACT["SecondaryFixed"];
readonly SecondaryFixedDim: CONTRACT["SecondaryFixedDim"];
readonly Shadow: CONTRACT["Shadow"];
readonly Surface: CONTRACT["Surface"];
readonly SurfaceBright: CONTRACT["SurfaceBright"];
readonly SurfaceContainer: CONTRACT["SurfaceContainer"];
readonly SurfaceContainerHigh: CONTRACT["SurfaceContainerHigh"];
readonly SurfaceContainerHighest: CONTRACT["SurfaceContainerHighest"];
readonly SurfaceContainerLow: CONTRACT["SurfaceContainerLow"];
readonly SurfaceContainerLowest: CONTRACT["SurfaceContainerLowest"];
readonly SurfaceDim: CONTRACT["SurfaceDim"];
readonly SurfaceTint: CONTRACT["SurfaceTint"];
readonly SurfaceVariant: CONTRACT["SurfaceVariant"];
readonly Tertiary: CONTRACT["Tertiary"];
readonly TertiaryContainer: CONTRACT["TertiaryContainer"];
readonly TertiaryDim: CONTRACT["TertiaryDim"];
readonly TertiaryFixed: CONTRACT["TertiaryFixed"];
readonly TertiaryFixedDim: CONTRACT["TertiaryFixedDim"];
};
}
export {};