DynamicColor

constructor(name: String, palette: (DynamicScheme) -> TonalPalette, tone: (DynamicScheme) -> Double, isBackground: Boolean, background: (DynamicScheme) -> DynamicColor?, secondBackground: (DynamicScheme) -> DynamicColor?, contrastCurve: ContrastCurve?, toneDeltaPair: (DynamicScheme) -> ToneDeltaPair?, opacity: (DynamicScheme) -> Double? = null)

Strongly prefer using one of the convenience constructors. This class is arguably too flexible to ensure it can support any scenario. Functional arguments allow overriding without risks that come with subclasses.

For example, the default behavior of adjust tone at max contrast to be at a 7.0 ratio with its background is principled and matches accessibility guidance. That does not mean it's the desired approach for every design system, and every color pairing, always, in every case.

For opaque colors (colors with alpha = 100%).

Parameters

name

The name of the dynamic color.

palette

Function that provides a TonalPalette given DynamicScheme. A TonalPalette is defined by a hue and chroma, so this replaces the need to specify hue/chroma. By providing a tonal palette, when contrast adjustments are made, intended chroma can be preserved.

tone

Function that provides a tone, given a DynamicScheme.

isBackground

Whether this dynamic color is a background, with some other color as the foreground.

background

The background of the dynamic color (as a function of a DynamicScheme), if it exists.

secondBackground

A second background of the dynamic color (as a function of a DynamicScheme), if it exists.

contrastCurve

A ContrastCurve object specifying how its contrast against its background should behave in various contrast levels options.

toneDeltaPair

A ToneDeltaPair object specifying a tone delta constraint between two colors. One of them must be the color being constructed.

opacity

A function returning the opacity of a color, as a number between 0 and 1.