UNPKG

polychrome

Version:

A small library for parsing and manipulating colors

182 lines (113 loc) 5.3 kB
# `polychrome` >A small `~2kB (gzipped)` library for parsing and manipulating colors ![logo](images/logo.png) ## Installation >feel free to replace `yarn add` with `npm install` ```shell $> yarn add polychrome ``` ## Usage ```js // using ES6 modules import polychrome from "polychrome"; // using CommonJS modules const polychrome = require("polychrome"); ``` ```js // Make a polychrome color from hex, rgb(a), and hsl(a) strings const red = polychrome("#F00"); // Get a string representation of a polychrome color in other formats red.rgb() // "rgb(255,0,0)" // Manipulate polychrome colors const darkerRed = red.darken(20); // (pass in an integer percentage) darkerRed.hsl() // "hsl(0,100%,40%)" // Chain polychrome methods together before outputting polychrome("#F00").darken(20).fadeOut(60).rgb() // "rgba(204,0,0,0.4)" ``` --- ## API Reference - [Polychrome](#polychrome-object) - [Alpha](#alpha) - [Hue](#hue) - [Lightness](#lightness) - [Mix](#mix) - [Saturation](#saturation) ### Polychrome Object `polychrome(colorString)` >`colorString` can be a hex (3 or 6 digit), rgb(a), or hsl(a) string. Returns a `polychrome` object. A polychrome object consists of the following properties: - `rHex` - 2 character hex string representation of the red color channel - `gHex` - 2 character hex string representation of the green color channel - `bHex` - 2 character hex string representation of the blue color channel - `r` - value of the red color channel [0 - 255] - `g` - value of the green color channel [0 - 255] - `b` - value of the blue color channel [0 - 255] - `h` - hue of the color [0 - 360] - `s` - saturation of the color [0 - 100] - `l` - lightness of the color [0 - 100] - `luma` - luma value of the color [0 - 255] In addition to the above properties, the following methods are available to a `polychrome` for outputting CSS color strings: - `.hex()` - returns a 6-digit hexadecimal CSS compatible color string ```js polychrome("rgb(0, 0, 0)").hex() // "#000000" ``` - `.rgb()` - returns an rgb(a) CSS compatible color string ```js // rgba will be used if an alpha value exists polychrome("#000").rgb() // "rgb(0,0,0)" polychrome("#000").fadeOut(60).rgb() // "rgba(0,0,0,.4)" ``` - `.hsl()` - returns an hsl(a) CSS compatible color string ```js // hsla will be used if an alpha value exists polychrome("#000").hsl() // "hsl(0,0%,0%)" polychrome("#000").fadeOut(60).hsl() // "hsla(0,0%,0%,.4)" ``` ### Alpha - `.setAlpha(value)` Returns a `polychrome` with an `alpha` value _absolutely_ set to `value`. No change occurs if value is omitted. - `.fadeIn(percentage)` Returns a `polychrome` faded in by `percentage`. Default `50` if no percentage is passed in. - `.fadeOut(percentage)` Returns a `polychrome` faded out by `percentage`. Default `50` if no percentage is passed in. ### Contrast - `.contrast(dark, light)` Checks `luma` value of `polychrome` and returns `dark` or `light` `polychrome` depending on the contrast level. If a contrast ratio of at least `4.5:1` is not met, the `dark`/`light` colors will be darkened / lightened until a valid ratio is met. ```js polychrome("#000").contrast().rgb() // "rgb(255,255,255)" polychrome("#DDD").contrast("#333", "#EEE").hex() // "#333333" ``` > `dark` and `light` can be a `String` _or_ `polychrome`. They default to `black (#000)` and `white (#FFF)` if params are not passed in. ### Hue - `.setHue(value)` Returns a `polychrome` with a `hue` value _absolutely_ set to `value`. No change occurs if value is omitted. - `.spin(degrees)` Returns a `polychrome` with a `hue` value _rotated_ `degrees`. Can be a positive or negative degree value. When bounds of `[0 - 360]` are reached, `hue` will continue in a circular fashion until it has been spun the full amount. - `.complimentary()` Returns a `polychrome` with a `hue` value _rotated_ `180 degrees`. Shorthand for `.spin(180)`. ### Lightness - `.setLightness(value)` Returns a `polychrome` with a `lightness` value _absolutely_ set to `value`. No change occurs if value is omitted. - `.lighten(percentage)` Returns a `polychrome` lightened by `percentage`. Default `10` if no percentage is passed in. - `.darken(percentage)` Returns a `polychrome` darkened by `percentage`. Default `10` if no percentage is passed in. ### Mix - `.mix(otherColor)` Returns a `polychrome` mixed with `otherColor`. `otherColor` can be another `polychrome` or a color string that will be parsed. - `.tint()` Returns a `polychrome` mixed with `white (#FFFFFF)`. Shorthand for `.mix("#FFFFFF")`. - `.shade()` Returns a `polychrome` mixed with `black (#000000)`. Shorthand for `.mix("#000000")`. ### Saturation - `.setSaturation(value)` Returns a `polychrome` with a `saturation` value _absolutely_ set to `value`. No change occurs if value is omitted. - `.saturate(percentage)` Returns a `polychrome` saturated by `percentage`. Default `10` if no percentage is passed in. - `.desaturate(percentage)` Returns a `polychrome` desaturated by `percentage`. Default `10` if no percentage is passed in. - `.grayscale()` Returns a `polychrome` with `saturation` set to `0`. Shorthand for `.setSaturation(0)`. --- ## License > MIT License 2017 © Chad Donohue