Convert Figma logo to code with AI

Qix- logocolor

:rainbow: Javascript color conversion and manipulation library

4,767
265
4,767
13

Top Related Projects

10,080

JavaScript library for all kinds of color manipulations

101,622

JavaScript 3D Library.

Fast, small color manipulation and conversion for JavaScript

Quick Overview

Color is a JavaScript library for immutable color conversion and manipulation. It provides a simple and intuitive API for working with colors in various formats, including RGB, HSL, and HEX. The library is designed to be lightweight and efficient, making it suitable for both browser and Node.js environments.

Pros

  • Immutable color objects, ensuring safe and predictable color manipulations
  • Supports a wide range of color formats and conversions
  • Chainable API for easy and readable color transformations
  • Lightweight and has no dependencies

Cons

  • Limited advanced color manipulation features compared to some larger libraries
  • Documentation could be more comprehensive, especially for advanced use cases
  • No built-in color palette generation or accessibility functions
  • Limited support for color spaces beyond RGB and HSL

Code Examples

Creating and manipulating colors:

import Color from 'color';

const red = Color('red');
const lightRed = red.lighten(0.2);
const transparentLightRed = lightRed.alpha(0.5);

console.log(transparentLightRed.rgb().string()); // rgb(255, 85, 85, 0.5)

Color conversions:

const blue = Color('#0000ff');
console.log(blue.hsl().string()); // hsl(240, 100%, 50%)
console.log(blue.rgb().array()); // [0, 0, 255]

Color operations:

const green = Color('lime');
const darkGreen = green.darken(0.5);
const complementary = darkGreen.rotate(180);

console.log(darkGreen.hex()); // #007f00
console.log(complementary.rgb().string()); // rgb(127, 0, 127)

Getting Started

To use Color in your project, first install it via npm:

npm install color

Then, import and use it in your JavaScript code:

import Color from 'color';

const myColor = Color('#7743CE');
console.log(myColor.rgb().string()); // rgb(119, 67, 206)
console.log(myColor.lighten(0.2).hex()); // #9466d7

You can chain multiple operations to create complex color transformations:

const result = Color('hsl(100, 50%, 50%)')
  .lighten(0.1)
  .saturate(0.2)
  .rotate(180)
  .alpha(0.8);

console.log(result.hsl().string()); // hsla(280, 70%, 60%, 0.8)

Competitor Comparisons

10,080

JavaScript library for all kinds of color manipulations

Pros of chroma.js

  • More comprehensive color manipulation functions, including color scales and color space conversions
  • Better support for working with color palettes and generating color schemes
  • Extensive documentation and examples available on the project website

Cons of chroma.js

  • Larger file size, which may impact load times for web applications
  • Steeper learning curve due to the extensive API and features

Code Comparison

chroma.js:

const scale = chroma.scale(['#fafa6e', '#2A4858'])
    .mode('lch').colors(6);
const interpolated = chroma.mix('#ff0000', '#00ff00', 0.5, 'lab');

color:

const scale = color('#fafa6e').mix(color('#2A4858'), 0.2);
const interpolated = color('#ff0000').mix(color('#00ff00'), 0.5);

Summary

chroma.js offers a more feature-rich solution for color manipulation, with advanced functionality for working with color scales and palettes. It's well-documented but has a larger footprint. color provides a simpler, lightweight alternative with basic color manipulation functions. The choice between the two depends on the specific needs of your project and the level of color manipulation required.

101,622

JavaScript 3D Library.

Pros of three.js

  • Comprehensive 3D graphics library with extensive features for creating complex 3D scenes and animations
  • Large and active community, providing extensive documentation, examples, and third-party resources
  • Supports various rendering techniques, including WebGL, CSS3D, and SVG

Cons of three.js

  • Larger file size and potentially higher learning curve due to its extensive feature set
  • May be overkill for simple color manipulation tasks or projects not requiring 3D graphics
  • Requires more setup and configuration for basic usage compared to simpler libraries

Code Comparison

three.js:

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

color:

const Color = require('color');
const red = Color('#ff0000');
const lightRed = red.lighten(0.5);
console.log(lightRed.hex());

Summary

three.js is a powerful 3D graphics library with extensive features and community support, making it ideal for complex 3D visualizations and games. However, it may be excessive for simple color manipulation tasks. color, on the other hand, is a lightweight library focused specifically on color manipulation, making it more suitable for projects that don't require 3D graphics capabilities.

Fast, small color manipulation and conversion for JavaScript

Pros of TinyColor

  • Smaller file size and lighter weight library
  • Includes color manipulation methods like lighten, darken, and saturate
  • Supports a wider range of color input formats

Cons of TinyColor

  • Less comprehensive color space conversion options
  • Fewer advanced color harmony and palette generation features
  • Limited support for color blindness simulations

Code Comparison

TinyColor:

var color = tinycolor("red");
color.lighten(10).toHexString();
color.complement().toHexString();

Color:

const Color = require('color');
const color = Color('red');
color.lighten(0.1).hex();
color.complement().hex();

Both libraries offer similar basic functionality for color manipulation, but Color provides more advanced features for color space conversions and analysis. TinyColor is more lightweight and focuses on common color operations, while Color offers a more comprehensive set of tools for working with colors in various contexts.

TinyColor is better suited for projects requiring basic color manipulation and a smaller footprint, while Color is more appropriate for applications needing advanced color processing capabilities and extensive color space support.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

color

JavaScript library for immutable color conversion and manipulation with support for CSS color strings.

const color = Color('#7743CE').alpha(0.5).lighten(0.5);
console.log(color.hsl().string());  // 'hsla(262, 59%, 81%, 0.5)'

console.log(color.cmyk().round().array());  // [ 16, 25, 0, 8, 0.5 ]

console.log(color.ansi256().object());  // { ansi256: 183, alpha: 0.5 }

Install

$ npm install color

Usage

const Color = require('color');

Constructors

const color = Color('rgb(255, 255, 255)')
const color = Color({r: 255, g: 255, b: 255})
const color = Color.rgb(255, 255, 255)
const color = Color.rgb([255, 255, 255])

Set the values for individual channels with alpha, red, green, blue, hue, saturationl (hsl), saturationv (hsv), lightness, whiteness, blackness, cyan, magenta, yellow, black

String constructors are handled by color-string

Getters

color.hsl();

Convert a color to a different space (hsl(), cmyk(), etc.).

color.object(); // {r: 255, g: 255, b: 255}

Get a hash of the color value. Reflects the color's current model (see above).

color.rgb().array()  // [255, 255, 255]

Get an array of the values with array(). Reflects the color's current model (see above).

color.rgbNumber() // 16777215 (0xffffff)

Get the rgb number value.

color.hex() // #ffffff

Get the hex value. (NOTE: .hex() does not return alpha values; use .hexa() for an RGBA representation)

color.red()       // 255

Get the value for an individual channel.

CSS Strings

color.hsl().string()  // 'hsl(320, 50%, 100%)'

Calling .string() with a number rounds the numbers to that decimal place. It defaults to 1.

Luminosity

color.luminosity();  // 0.412

The WCAG luminosity of the color. 0 is black, 1 is white.

color.contrast(Color("blue"))  // 12

The WCAG contrast ratio to another color, from 1 (same color) to 21 (contrast b/w white and black).

color.isLight();  // true
color.isDark();   // false

Get whether the color is "light" or "dark", useful for deciding text color.

Manipulation

color.negate()         // rgb(0, 100, 255) -> rgb(255, 155, 0)

color.lighten(0.5)     // hsl(100, 50%, 50%) -> hsl(100, 50%, 75%)
color.lighten(0.5)     // hsl(100, 50%, 0)   -> hsl(100, 50%, 0)
color.darken(0.5)      // hsl(100, 50%, 50%) -> hsl(100, 50%, 25%)
color.darken(0.5)      // hsl(100, 50%, 0)   -> hsl(100, 50%, 0)

color.lightness(50)    // hsl(100, 50%, 10%) -> hsl(100, 50%, 50%)

color.saturate(0.5)    // hsl(100, 50%, 50%) -> hsl(100, 75%, 50%)
color.desaturate(0.5)  // hsl(100, 50%, 50%) -> hsl(100, 25%, 50%)
color.grayscale()      // #5CBF54 -> #969696

color.whiten(0.5)      // hwb(100, 50%, 50%) -> hwb(100, 75%, 50%)
color.blacken(0.5)     // hwb(100, 50%, 50%) -> hwb(100, 50%, 75%)

color.fade(0.5)     // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 0.4)
color.opaquer(0.5)     // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 1.0)

color.rotate(180)      // hsl(60, 20%, 20%) -> hsl(240, 20%, 20%)
color.rotate(-90)      // hsl(60, 20%, 20%) -> hsl(330, 20%, 20%)

color.mix(Color("yellow"))        // cyan -> rgb(128, 255, 128)
color.mix(Color("yellow"), 0.3)   // cyan -> rgb(77, 255, 179)

// chaining
color.green(100).grayscale().lighten(0.6)

Propers

The API was inspired by color-js. Manipulation functions by CSS tools like Sass, LESS, and Stylus.

NPM DownloadsLast 30 Days