# kleur

![kleur](https://github.com/bgoonz/Learning-Redux/blob/master/repos/examples/real-world/node_modules/kleur/shots/logo.png)[![version](https://badgen.now.sh/npm/v/kleur) ](https://npmjs.org/package/kleur)[![travis](https://badgen.now.sh/travis/lukeed/kleur) ](https://travis-ci.org/lukeed/kleur)[![downloads](https://badgen.now.sh/npm/dm/kleur) ](https://npmjs.org/package/kleur)[![install size](https://packagephobia.now.sh/badge?p=kleur)](https://packagephobia.now.sh/result?p=kleur)The fastest Node.js library for formatting terminal text with ANSI colors\~!

### Features

* No dependencies
* Super [lightweight](#load-time) & [performant](#performance)
* Supports [nested](#nested-methods) & [chained](#chained-methods) colors
* No `String.prototype` modifications
* Conditional [color support](#conditional-support)
* Familiar [API](#api)

***

As of `v3.0` the Chalk-style syntax (magical getter) is no longer used.\
If you need or require that syntax, consider using [`ansi-colors`](https://github.com/doowb/ansi-colors), which maintains `chalk` parity.

***

### Install

```
$ npm install --save kleur
```

### Usage

```js
const { red, white, blue, bold } = require('kleur');

// basic usage
red('red text');

// chained methods
blue().bold().underline('howdy partner');

// nested methods
bold(`${ white().bgRed('[ERROR]') } ${ red().italic('Something happened')}`);
```

#### Chained Methods

```js
console.log(bold().red('this is a bold red message'));
console.log(bold().italic('this is a bold italicized message'));
console.log(bold().yellow().bgRed().italic('this is a bold yellow italicized message'));
console.log(green().bold().underline('this is a bold green underlined message'));
```

![](https://github.com/bgoonz/Learning-Redux/blob/master/repos/examples/real-world/node_modules/kleur/shots/1.png)

#### Nested Methods

```js
const { yellow, red, cyan } = require('kleur');

console.log(yellow(`foo ${red().bold('red')} bar ${cyan('cyan')} baz`));
console.log(yellow('foo ' + red().bold('red') + ' bar ' + cyan('cyan') + ' baz'));
```

![](https://github.com/bgoonz/Learning-Redux/blob/master/repos/examples/real-world/node_modules/kleur/shots/2.png)

#### Conditional Support

Toggle color support as needed; `kleur` includes simple auto-detection which may not cover all cases.

```js
const kleur = require('kleur');

// manually disable
kleur.enabled = false;

// or use another library to detect support
kleur.enabled = require('color-support').level;

console.log(kleur.red('I will only be colored red if the terminal supports colors'));
```

### API

Any `kleur` method returns a `String` when invoked with input; otherwise chaining is expected.

> It's up to the developer to pass the output to destinations like `console.log`, `process.stdout.write`, etc.

The methods below are grouped by type for legibility purposes only. They each can be [chained](#chained-methods) or [nested](#nested-methods) with one another.

***Colors:***

> black — red — green — yellow — blue — magenta — cyan — white — gray — grey

***Backgrounds:***

> bgBlack — bgRed — bgGreen — bgYellow — bgBlue — bgMagenta — bgCyan — bgWhite

***Modifiers:***

> reset — bold — dim — italic\* — underline — inverse — hidden — strikethrough\*

\* *Not widely supported*

### Benchmarks

> Using Node v10.13.0

#### Load time

```
chalk       :: 14.543ms
kleur       ::  0.474ms
ansi-colors ::  1.923ms
```

#### Performance

```
# All Colors
  ansi-colors  x 199,381 ops/sec ±1.04% (96 runs sampled)
  chalk        x  12,107 ops/sec ±2.07% (87 runs sampled)
  kleur        x 715,334 ops/sec ±0.30% (93 runs sampled)

# Stacked colors
  ansi-colors  x 24,494 ops/sec ±1.03% (93 runs sampled)
  chalk        x  2,650 ops/sec ±2.06% (85 runs sampled)
  kleur        x 75,798 ops/sec ±0.19% (97 runs sampled)

# Nested colors
  ansi-colors  x  77,766 ops/sec ±0.32% (94 runs sampled)
  chalk        x   5,596 ops/sec ±1.85% (86 runs sampled)
  kleur        x 137,660 ops/sec ±0.31% (93 runs sampled)
```

### Credits

This project originally forked [Brian Woodward](https://github.com/doowb)'s awesome [`ansi-colors`](https://github.com/doowb/ansi-colors) library.

Beginning with `kleur@3.0`, the Chalk-style syntax (magical getter) has been replaced with function calls per key:

```js
// Old:
c.red.bold.underline('old');

// New:
c.red().bold().underline('new');
```

> *As I work more with Rust, the newer syntax feels so much better & more natural!*

If you prefer the old syntax, you may migrate to `ansi-colors`. Versions below `kleur@3.0` have been deprecated.

### License

MIT © [Luke Edwards](https://lukeed.com)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bryan-guner.gitbook.io/my-docs/redux/repos/examples/real-world/node_modules/kleur.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
