Logo
Noddev
ShowcaseDocsBlog
Go to Docs

Welcome

IntroductionEcosystem Overview

Omni (OSINT Platform)

OverviewCore ConceptsSteganographySocial Recon

ApiShield (Security)

Getting StartedRate LimitingThreat Models

Terminal-RichJS (CLI)

IntroductionInstallationComponentsLayouts

Ready to secure your next project?

GitHub Profile

Ā© 2026 NODDEV. All rights reserved.

GitHubTwitterWhatsApp

Components

Renderables - Panel, Table, Tree, Syntax, and Progress Bar.

Text

Basic text rendering with markup support.

typescript
import { Text } from "terminal-richjs";
 
const text = new Text("Hello, [bold]World[/bold]!");
console.print(text);

Panel

A bordered container for any content.

typescript
import { Panel } from "terminal-richjs";
 
const panel = new Panel("Content goes here", {
  title: "Panel Title",
  titleAlign: "left", // 'left' | 'center' | 'right'
  subtitle: "Subtitle",
  subtitleAlign: "right",
  box: "rounded",
  borderStyle: "cyan",
  padding: 1,
  expand: true,
});
 
console.print(panel);

Panel Options

OptionTypeDefaultDescription
titlestring-Title in top border
titleAlign'left' | 'center' | 'right''center'Title alignment
subtitlestring-Subtitle in bottom border
boxBoxStyle'rounded'Box drawing style
borderStyleStyle | string'dim'Border color/style
paddingnumber | [v, h] | [t, r, b, l]1Inner padding
expandbooleantrueExpand to full width
typescript
// Create a panel that fits its content
const fitted = Panel.fit("Content", { title: "Fitted" });

Table

Create formatted tables with headers, footers, and styling.

typescript
import { Table } from "terminal-richjs";
 
const table = new Table({
  title: "My Table",
  box: "rounded",
  rowStyles: ["", "dim"], // Alternating row styles
  showHeader: true,
  showFooter: false,
  showLines: false,
  caption: "Table caption",
});
 
table.addColumn("Name", { justify: "left", style: "bold" });
table.addColumn("Age", { justify: "right" });
table.addColumn("City", { justify: "center" });
 
table.addRow("Alice", "30", "New York");
table.addRow("Bob", "25", "San Francisco");
 
table.addFooter("Total", "2", "-");
 
console.print(table);

Table Options

OptionTypeDefaultDescription
titlestring-Table title
captionstring-Table caption
boxBoxStyle'rounded'Box drawing style
showHeaderbooleantrueShow header row
showFooterbooleanfalseShow footer row
showLinesbooleanfalseRow separators
headerStyleStyle | string'bold cyan'Header style
rowStylesstring[][]Alternating row styles

Column Options

OptionTypeDefaultDescription
headerstring-Header text
styleStyle | string-Cell style
justify'left' | 'center' | 'right''left'Alignment
widthnumber-Fixed width
minWidth / maxWidthnumber-Width constraints

Tree

Visualize hierarchical data structures.

typescript
import { Tree } from "terminal-richjs";
 
const tree = new Tree("šŸ“ root", {
  guideStyle: "#6e7681 dim",
  hideRoot: false,
});
 
const folder1 = tree.add("šŸ“ folder1");
folder1.add("šŸ“„ file1.txt");
folder1.add("šŸ“„ file2.txt");
 
const folder2 = tree.add("šŸ“ folder2");
const subfolder = folder2.add("šŸ“ subfolder");
subfolder.add("šŸ“„ file3.txt");
 
tree.add("šŸ“„ README.md");
 
console.print(tree);

Output:

šŸ“ root
ā”œā”€ā”€ šŸ“ folder1
│   ā”œā”€ā”€ šŸ“„ file1.txt
│   └── šŸ“„ file2.txt
ā”œā”€ā”€ šŸ“ folder2
│   └── šŸ“ subfolder
│       └── šŸ“„ file3.txt
└── šŸ“„ README.md

Guide Styles

  • standard (default): ā”œā”€ā”€ └── │
  • bold: ┣━━ ┗━━ ā”ƒ
  • double: ╠══ ā•šā•ā• ā•‘
  • ascii: |-- \-- |`

Syntax

Syntax-highlighted code with multiple themes.

typescript
import { Syntax } from "terminal-richjs";
 
const code = `function hello(name: string): void {
  console.log(\`Hello, \${name}!\`);
}`;
 
const syntax = new Syntax(code, "typescript", {
  theme: "monokai",
  lineNumbers: true,
  startLine: 1,
  highlightLines: [2],
  wordWrap: false,
});
 
console.print(syntax);
 
// Load from file
const fromFile = Syntax.fromPath("./src/index.ts", {
  theme: "dracula",
  lineNumbers: true,
});

Syntax Options

OptionTypeDefaultDescription
themestring'monokai'Theme name
lineNumbersbooleanfalseShow line numbers
startLinenumber1Starting line number
highlightLinesnumber[][]Lines to highlight
wordWrapbooleanfalseWrap long lines

Available Themes

ThemeDescription
monokaiDark theme with vibrant colors
draculaPurple-tinted dark theme
githubLight theme matching GitHub
one-darkAtom One Dark theme

Progress Bar

Visual progress indicators.

typescript
import {
  ProgressBar,
  PercentageColumn,
  TimeElapsedColumn,
} from "terminal-richjs";
 
const bar = new ProgressBar(100, 75, {
  width: 40,
  completeStyle: "#61afef",
  finishedStyle: "#50fa7b bold",
  remainingStyle: "#3a3a3a dim",
  completeChar: "━",
  remainingChar: "━",
});
 
console.print(bar);
 
const pct = new PercentageColumn(0.75); // 75%
const elapsed = new TimeElapsedColumn(65000); // 1:05

Progress Bar Options

OptionTypeDefaultDescription
widthnumber40Bar width
completeStylestring'#61afef'Completed portion style
finishedStylestring'#50fa7b bold'Style at 100%
remainingStylestring'#3a3a3a dim'Remaining portion style
pulsebooleanfalseEnable pulse animation
completeCharstring'━'Completed character
remainingCharstring'━'Remaining character
PreviousInstallationNextLayouts
Was this helpful?

On This Page

TextPanelPanel OptionsTableTable OptionsColumn OptionsTreeGuide StylesSyntaxSyntax OptionsAvailable ThemesProgress BarProgress Bar Options