UNPKG

@mcler/cie-color-functions

Version:

Human perceived color functions base on LAB/LCH color spaces

170 lines (127 loc) 3.13 kB
# 🌈 CIE Color Functions [![npm package](https://img.shields.io/npm/v/@mcler/cie-color-functions.svg)](https://www.npmjs.org/package/@mcler/cie-color-functions) **Human perceived color functions based on [CIE LAB](https://en.wikipedia.org/wiki/CIELAB_color_space)/[CIE LCH](https://en.wikipedia.org/wiki/CIELAB_color_space#Cylindrical_model) color spaces** --- ## Why? Default color manipulation functions do not take into account color perception. ### Available functions: - `lighten` - `darken` - `desaturate` - `saturate` - `rotate` or `spin` - `mix` - `createPalette` and `createPaletteStop` Parsing and manipulations utilized via [Colord](https://github.com/omgovich/colord). All functions return `Colord` instance. ### Color Palettes #### Default ![Default](./images/default.png) #### Linear ![Linear](./images/linear.png) #### Ease ![Ease](./images/ease.png) #### Ease In ![Ease In](./images/ease-in.png) #### Ease Out ![Ease Out](./images/ease-in.png) #### Ease In Out ![Ease In Out](./images/ease-in-out.png) #### Ease In Out Sine ![Ease In Out Sine](./images/ease-in-out-sine.png) ## Usage ### Installation ```bash npm i @mcler/cie-color-functions ``` or ```bash yarn add @mcler/cie-color-functions ``` ### As standalone functions ```js import { lighten, darken, desaturate, saturate, rotate, mix, createPalette, createPaletteStop, } from '@mcler/cie-color-functions'; const baseColor = '#2b99ea'; const darkenColor = darken(baseColor, 15); // #0073c0 const lightenColor = lighten(baseColor, 15); // #64c1ff const desaturatedColor = desaturate(baseColor, 15); // #5e97d0 const moreSaturatedColor = saturate(baseColor, 15); // #009cff const rotatedColor = rotate(baseColor, -90); // #00a77f const mixedColor = mix(baseColor, '#f00', 0.5); // #c66f7a const baseColor100 = createPaletteStop(baseColor, 100); // #cce0f9 const baseColorPalette = createPalette(baseColor); // Record<string, Colord> ``` ### As Less plugin #### cie.js: ```js const { CieColorFunctionsPlugin } = require('@mcler/cie-color-functions/plugins/less'); module.exports = CieColorFunctionsPlugin; ``` #### style.less: ```less @plugin "cie"; // means that plugin from `cie.js` is used @base-color: #2b99ea; .text { color: @base-color; } .text-light { color: cie_lighten(@base-color, 15%); } .text-dark { color: cie_darken(@base-color, 15%); } .text-desaturate { color: cie_desaturate(@base-color, 15%); } .text-saturate { color: cie_saturate(@base-color, 15%); } .text-rotate { color: cie_spin(@base-color, 120deg); } .text-mix { color: cie_mix(@base-color, #f00, 33%); } .text-50 { color: cie_palette_stop(@base-color, 50); } .text-300 { color: cie_palette_stop(@base-color, 300); } ``` #### Output: ```css .text { color: #2b99ea; } .text-light { color: #64c1ff; } .text-dark { color: #0073c0; } .text-desaturate { color: #5e97d0; } .text-saturate { color: #009cff; } .text-rotate { color: #e26a76; } .text-mix { color: #a97f9f; } .text-50 { color: #dfebfc; } .text-300 { color: #76b2f0; } ``` ## TODO - [ ] PostCSS plugin