npm package: @monixlite/console-print
Description: Scene middleware for grammY with step-based navigation
Author: monixlite
Latest version: 1.1.0

# @monixlite/console-print

A small Node.js utility for building colored and styled console output using ANSI escape sequences. It is designed for simple, explicit composition of console messages without external dependencies.

The library focuses on:

* Explicit control over text, foreground color, background color, and styles
* Predictable ANSI behavior
* Minimal API surface

## Installation

Copy the source into your project or install it as a local dependency.

```bash
npm install @monixlite/console-print
```

## Import

```js
const { Print, Color, Background, Style } = require("@monixlite/console-print");
```

or

```js
const print = require("@monixlite/console-print");

// print([...])
// print.color[...]
// print.background[...]
// print.style[...]
```

## Core Concept

Output is built from an array of "rows". Each row is either:

* An empty array `[]` - inserts a single space separator
* An array describing a text segment:

```js
[
    text: string,
    color?: Color,
    background?: Background,
    styles?: Style[]
]
```

All rows are concatenated into a single line and printed with `console.log`.

## Print

```js
Print(rows: Array)
```

Prints a composed ANSI-formatted line to stdout.

Rules:

* `text` must be a string
* `color`, `background`, and `styles` are optional
* `styles` is applied in order and closed in reverse order
* Invalid or empty rows are ignored

## Colors

### Foreground colors

```js
Color.BLACK
Color.RED
Color.GREEN
Color.YELLOW
Color.BLUE
Color.MAGENTA
Color.CYAN
Color.WHITE
Color.GRAY
```

### Custom foreground color (24-bit RGB)

```js
Color.CUSTOM(r, g, b)
```

## Backgrounds

### Background colors

```js
Background.BLACK
Background.RED
Background.GREEN
Background.YELLOW
Background.BLUE
Background.MAGENTA
Background.CYAN
Background.WHITE
```

### Custom background color (24-bit RGB)

```js
Background.CUSTOM(r, g, b)
```

## Styles

```js
Style.RESET
Style.BOLD
Style.DIM
Style.ITALIC
Style.UNDERLINE
Style.DOUBLE_UNDERLINE
Style.INVERSE
Style.HIDDEN
Style.STRIKETHROUGH
```

Multiple styles can be combined by passing an array.

## Example

```js
const { Print, Color, Background, Style } = require("@monixlite/console-print");


Print([]);


Print([
    [
        " ERROR ",
        Color.WHITE,
        Background.RED,
        [
            Style.BOLD,
        ],
    ],
    [],
    [
        "File not found:",
        Color.RED,
    ],
    [],
    [
        "dog.png",
    ],
]);

Print([
    [
        " SUCCESS ",
        Color.BLACK,
        Background.GREEN,
        [
            Style.BOLD,
        ],
    ],
    [],
    [
        "File loaded:",
        Color.GREEN,
    ],
    [],
    [
        "cat.png",
    ],
]);


Print([]);


Print([
    [
        " MonixLITE: ",
        Color.CUSTOM(128, 128, 255),
        Background.CUSTOM(16, 16, 16),
        [
            Style.BOLD,
            Style.ITALIC,
        ],
    ],
    [],
    [
        "Hi, friend!",
        Color.CUSTOM(255, 255, 255),
    ],
]);


Print([]);
```

## Notes

* ANSI support depends on the terminal
* Designed for Node.js environments
* No automatic line wrapping or layout logic

## License

MIT