npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

color-scheme

v1.0.1

Published

Generate pleasant color schemes

Downloads

30,305

Readme

color-scheme.js

Generate pleasant color schemes (sets of colors).

This library is based on the perl module Color::Scheme, which is in turn based on the Color Scheme Designer website.

Check out how it works.

Get the minified file (8kb).

Or for some reason, you could use the full file (18kb).

Table of Contents

Description

This module is a JavaScript implementation of the Perl implementation of Color Schemes 2 (http://wellstyled.com/tools/colorscheme2), a color scheme generator. Start by visitng the Color Schemes 2 web site and playing with the colors. When you want to generate those schemes on the fly, begin using this modoule. The descriptions herein don't make too much sense without actually seeing the colorful results.

Henceforth, paragraphs in quotes denote documentation copied from Color Schemes 2.

"Important note: This tool doesn't use the standard HSV or HSB model (the same HSV/HSB values ie. in Photoshop describe different colors!). The color wheel used here differs from the RGB spectre used on computer screens, it's more in accordance with the classical color theory. This is also why some colors (especially shades of blue) make less bright shades than the basic colors of the RGB-model. In plus, the RGB-model uses red-green-blue as primary colors, but the red-yellow-blue combination is used here. This deformation also causes incompatibility in color conversions from RGB-values. Therefore, the RGB input (eg. the HTML hex values like #F854A9) is not exact, the conversion is rough and sometimes may produce slightly different color."

Usage

In node.js

Gotta install it first:

npm install color-scheme
var ColorScheme = require('color-scheme');

var scheme = new ColorScheme;
scheme.from_hue(21)         // Start the scheme 
      .scheme('triade')     // Use the 'triade' scheme, that is, colors
                            // selected from 3 points equidistant around
                            // the color wheel.
      .variation('soft');   // Use the 'soft' color variation

var colors = scheme.colors();

/*
  colors = [ "e69373", "805240", "e6d5cf", "bf5830" ,
             "77d36a", "488040", "d2e6cf", "43bf30" ,
             "557aaa", "405c80", "cfd9e6", "306ebf" ]
*/

In the browser

<script src="wherever/your/installed/color-scheme.js"></script>

<script>
  // Pretty much the same exact syntax!
  var scheme = new ColorScheme;
  scheme.from_hue(21)         
        .scheme('triade')   
        .variation('soft');


  var colors = scheme.colors();

  /*
    colors = [ "e69373", "805240", "e6d5cf", "bf5830" ,
               "77d36a", "488040", "d2e6cf", "43bf30" ,
               "557aaa", "405c80", "cfd9e6", "306ebf" ]
  */
<script>

Schemes

There are five color schemes.

mono (monochromatic)

The monochromatic scheme is based on selecting a single hue on the color wheel, then adding more colors by varying the source color's saturation and brightness.

Four colors will be produced.

contrast

Contrast supplements the selected hue with its complement (the color opposite it on the color wheel) as another source color.

8 colors will be produced.

triade

Triade takes the selected hue and adds two more source colors that are both a certain distance from the initial hue.

The distance() method can be used to specify how far additional source colors will be from the initial hue.

12 colors will be produced.

tetrade

Tetrade adds another yet source color, meaning four total sources.

16 colors will be produced.

analogic

Analogic produces colors that are "analogous", or next to each other on the color wheel.

Increasing the distance distance() will push the colors away from each other. "Values between 0.25 and 0.5 (15-30 degrees on the wheel) are optimal."

12 colors will be produced.

Additionally, the complement() method can be used to add complementary colors (i.e. those that are opposite the source colors on the color wheel). This will result in 16 colors. "It must be treated only as a complement - it adds tension to the palette, and it's too aggressive when overused. However, used in details and as accent of main colors, it can be very effective and elegant."

Variations

These variations will alter the produced colors. They basically work exactly like filters would in any image editing program.

default

The default variation. No change to the colors.

s.variation('default');

pastel

Produces pastel colors, which have in HSV high value and low-intermediate saturation.

s.variation('pastel');

soft

Produces darker pastel colors.

s.variation('soft');

light

Very light, almost washed-out colors.

s.variation('light');

hard

Deeper, very saturated colors.

s.variation('hard');

pale

Colors with more gray; less saturated.

s.variation('pale');

Methods

ColorScheme instances use method chaining to alter settings.

scheme([scheme_name])

Set the scheme to [scheme_name]. The possible values are 'mono', 'contrast', 'triade', 'tetrade', and 'analogic'.

var s = new ColorScheme

// Set the scheme to analogic
s.scheme('analogic');

distance([float])

Note: Only works with the schemes 'triade', 'tetrade', and 'analogic'. (Because 'mono' only has one source color, and with 'contrast' the two source colors are always 180 degrees away from each other.)

This method sets the distance of the additional source colors from the initial hue. The value must be a float from 0 to 1.

var s = new ColorScheme;
var colors = s.scheme('triade')
 .distance(0.75)
 .colors();

/*
  colors = [ "ff9900", "b36b00", "ffe6bf", "ffcc80",
             "00b366", "007d48", "bfffe4", "80ffc9",
             "400099", "2d006b", "dabfff", "b580ff" ]
*/

complement([bool])

Add complementary colors to the analogic scheme. Does not work with any other scheme.

colors()

Returns the array of generated colors as hex values.

Note: Because this method returns the colors, it obviously cannot be chained afterwards.

var colors = s.colors()