UNPKG

@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
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 {};