vincci
TypeScript icon, indicating that this package has built-in type declarations

1.1.4 • Public • Published

Vincci

npm version npm downloads License jsDeliver npm bundle size

Vincci is a NodeJs [TypeScript] library designed to allow users to display fancy tables in the terminal, with advanced row and column formatting, color support checks, and more.

Features

  • Custom Table Display: Create visually appealing tables with advanced formatting options.
  • Color Support Check: Detect if the terminal supports colors.See Table Options
  • TypeScript Support: Full TypeScript support with strict linting rules.
  • Extendable Utilities: Add and customize various utilities for your Node.js projects.Contributing

Installation

To install Vincci via npm or yarn:

npm install vincci
yarn add vincci

Usage

Here’s how you can use Vincci to create a custom table in your terminal.

Example

import { vincci } from 'vincci';

const columns = ['Name', 'Age', 'City'];
const rows = [
  ['John Doe', 30, 'New York'],
  ['Jane Smith', 25, 'San Francisco'],
  ['Sam Brown', 35, 'Chicago'],
];

vincci(columns, rows);
╔══════════╦═════╦═════════════════╗
║ Name     ║ Age ║ Location        ║
╠══════════╬═════╬═════════════════╣
║ Alice    ║ 30  ║ New York        ║
╠══════════╬═════╬═════════════════╣
║ Bob      ║ 25  ║ San Francisco   ║
╠══════════╬═════╬═════════════════╣
║ Charlie  ║ 35  ║ Chicago         ║
╚══════════╩═════╩═════════════════╝

Color Support Check

You can check whether your terminal supports colors using Vincci:

import { isSupport } from 'vincci';

if (isSupport()) {
  console.log('Your terminal supports colors!');
} else {
  console.log("Your terminal doesn't support colors.");
}

Full Example with custom option

const columns = ["ID", "Name", "Age", "City", "Status"];
const rows = [
    ["asd", "Alice", 25, "New York", "Active"],    
    [2, "Bob", 30, "San Francisco", "Inactive"],
    [3, "Charlie", 35, "Los Angeles", "Inactive"], 
    ["asdasd", "David", 40, "", "Active"],         
    ["sg", "Bob", 30, "San Francisco", "Inactive"], 
    [6, "Chris", 35, "Los Angeles", "Active"], 
    [7, "David", 40],       
];
const options = {
    columnAlignments: {
        ID: "right",    
        Name: "left", 
        Age: "center", 
        City: "left",   
        Flag: "center",  
    },
    headerColors: {
        ID: "green.bold",
        Name: "yellow.underline", 
        Age: "red",     
        City: "cyan.italic",
    },
    rowStyleKey: "Name",
    rowStyles: {
        "Charlie": {
            ID: "green.bold", 
        },
        "David": "red.italic",
    },
    edgeStyles: "rounded",
    highlightColumn: "Name",
    rowBackgrounds: {
        odd: "bgWhite", 
        even: "bgCyan" 
    }
};
vincci(columns, rows, options);

Table Options

Option Name Type Example Description
headerColors string headerColors: {Column1: "green.bold",Column2: "yellow.underline",Column3: "red",Column4: "cyan.italic"} Map of column names to color/style functions for headers.
rowStyles string rowStyles: {"Charlie": {Column name: "green.bold"},"David": "red.italic"} Map of specific row values to style names or a record of styles.
rowStyleKey string rowStyleKey: "Column2" The column name that determines the cell to style for row-based styling.
rowBackgrounds { odd: "Chalk background"; even: "Chalk background" } {odd: "bgWhite", even: "bgCyan" } Background colors for odd/even rows.
edgeStyles single, bold, rounded, dotted, thick, minimal, heavyDashed, double or { topLeftCorner: string; topRightCorner: string; bottomLeftCorner: string; bottomRightCorner: string; horizontalSeparator: string; verticalSeparator: string; topCenter: string; vertical: string; bottomCenter: string; verticalRowLeft: string; verticalRowRight: string; } edgeStyles: "rounded" Customize table border styles using either predefined styles or custom definitions.
highlightColumn string it's an chalk color highlightColumn: "column name" Column to highlight (simulate hover effect).
columnAlignments left,center,right {column1: "right",column2: "left", column3: "center",.. } Column alignment options (left, center, or right).

Contributing

We welcome contributions to Vincci! Please refer to our CONTRIBUTING.md file for detailed guidelines on how to get involved.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Package Sidebar

Install

npm i vincci

Weekly Downloads

4

Version

1.1.4

License

MIT

Unpacked Size

30.5 kB

Total Files

27

Last publish

Collaborators

  • mohammadreza.hayati