@theme-ui/color
Color manipulation utilities for Theme UI
npm i @theme-ui/color
Import utilities from the @theme-ui/color
package and use them with colors in
the sx
prop.
import { darken, lighten } from '@theme-ui/color'
export default (props) => (
<div
{...props}
sx={{
color: darken('primary', 0.25),
bg: lighten('primary', 0.875),
}}
/>
)
API
getColor
import { getColor } from '@theme-ui/color'
darken
Darken a color by an amount 0β1
import { darken } from '@theme-ui/color'
lighten
Lighten a color by an amount 0β1
import { lighten } from '@theme-ui/color'
rotate
Rotate the hue of a color by an amount 0β360
import { rotate } from '@theme-ui/color'
hue
Set the hue of a color to a degree 0β360
import { hue } from '@theme-ui/color'
saturation
Set the saturation of a color to an amount 0β1
import { saturation } from '@theme-ui/color'
lightness
Set the lightness of a color to an amount 0β1
import { lightness } from '@theme-ui/color'
desaturate
Desaturate a color by an amount 0β1
import { desaturate } from '@theme-ui/color'
saturate
Saturate a color by an amount 0β1
import { saturate } from '@theme-ui/color'
shade
Shade a color by an amount 0β1
import { shade } from '@theme-ui/color'
tint
Tint a color by an amount 0β1
import { tint } from '@theme-ui/color'
alpha
Set the transparency of a color to an amount 0-1
import { alpha } from '@theme-ui/color'
transparentize
Similar to alpha
, but decreases opacity by the given amount.
import { transparentize } from '@theme-ui/color'
mix
Mix two colors by a specific ratio
import { mix } from '@theme-ui/color'
complement
Get the complement of a color
import { complement } from '@theme-ui/color'
invert
Get the inverted color
import { invert } from '@theme-ui/color'
grayscale
Desaturate the color to grayscale
import { grayscale } from '@theme-ui/color'
Advanced Usage
If you want to do something more complex, such as setting up gradients, you can
do that with some extra workarounds.
We can take the result of any of the above helper functions (which return a
function) and call it with the theme object to generate a string in place. This
is useful for interpolating values into complex CSS declarations:
<MyComponentWithBackground
sx={{
backgroundImage: (t) => `
linear-gradient(
to bottom,
${alpha('primary', 0.5)(t)},
${alpha('secondary', 0.5)(t)}
)
`,
}}
/>
Related