123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- import {LiteralUnion} from 'type-fest';
- import {BoxStyle, Boxes} from 'cli-boxes';
- declare namespace boxen {
- /**
- Characters used for custom border.
- @example
- ```
- // affffb
- // e e
- // dffffc
- const border: CustomBorderStyle = {
- topLeft: 'a',
- topRight: 'b',
- bottomRight: 'c',
- bottomLeft: 'd',
- vertical: 'e',
- horizontal: 'f'
- };
- ```
- */
- interface CustomBorderStyle extends BoxStyle {}
- /**
- Spacing used for `padding` and `margin`.
- */
- interface Spacing {
- readonly top: number;
- readonly right: number;
- readonly bottom: number;
- readonly left: number;
- }
- interface Options {
- /**
- Color of the box border.
- */
- readonly borderColor?: LiteralUnion<
- | 'black'
- | 'red'
- | 'green'
- | 'yellow'
- | 'blue'
- | 'magenta'
- | 'cyan'
- | 'white'
- | 'gray'
- | 'grey'
- | 'blackBright'
- | 'redBright'
- | 'greenBright'
- | 'yellowBright'
- | 'blueBright'
- | 'magentaBright'
- | 'cyanBright'
- | 'whiteBright',
- string
- >;
- /**
- Style of the box border.
- @default 'single'
- */
- readonly borderStyle?: keyof Boxes | CustomBorderStyle;
- /**
- Reduce opacity of the border.
- @default false
- */
- readonly dimBorder?: boolean;
- /**
- Space between the text and box border.
- @default 0
- */
- readonly padding?: number | Spacing;
- /**
- Space around the box.
- @default 0
- */
- readonly margin?: number | Spacing;
- /**
- Float the box on the available terminal screen space.
- @default 'left'
- */
- readonly float?: 'left' | 'right' | 'center';
- /**
- Color of the background.
- */
- readonly backgroundColor?: LiteralUnion<
- | 'black'
- | 'red'
- | 'green'
- | 'yellow'
- | 'blue'
- | 'magenta'
- | 'cyan'
- | 'white'
- | 'blackBright'
- | 'redBright'
- | 'greenBright'
- | 'yellowBright'
- | 'blueBright'
- | 'magentaBright'
- | 'cyanBright'
- | 'whiteBright',
- string
- >;
- /**
- Align the text in the box based on the widest line.
- @default 'left'
- @deprecated Use `textAlignment` instead.
- */
- readonly align?: 'left' | 'right' | 'center';
- /**
- Align the text in the box based on the widest line.
- @default 'left'
- */
- readonly textAlignment?: 'left' | 'right' | 'center';
- /**
- Display a title at the top of the box.
- If needed, the box will horizontally expand to fit the title.
- @example
- ```
- console.log(boxen('foo bar', {title: 'example'}));
- // ┌ example ┐
- // │foo bar │
- // └─────────┘
- ```
- */
- readonly title?: string;
- /**
- Align the title in the top bar.
- @default 'left'
- @example
- ```
- console.log(boxen('foo bar foo bar', {title: 'example', titleAlignment: 'center'}));
- // ┌─── example ───┐
- // │foo bar foo bar│
- // └───────────────┘
- console.log(boxen('foo bar foo bar', {title: 'example', titleAlignment: 'right'}));
- // ┌────── example ┐
- // │foo bar foo bar│
- // └───────────────┘
- ```
- */
- readonly titleAlignment?: 'left' | 'right' | 'center';
- }
- }
- /**
- Creates a box in the terminal.
- @param text - The text inside the box.
- @returns The box.
- @example
- ```
- import boxen = require('boxen');
- console.log(boxen('unicorn', {padding: 1}));
- // ┌─────────────┐
- // │ │
- // │ unicorn │
- // │ │
- // └─────────────┘
- console.log(boxen('unicorn', {padding: 1, margin: 1, borderStyle: 'double'}));
- //
- // ╔═════════════╗
- // ║ ║
- // ║ unicorn ║
- // ║ ║
- // ╚═════════════╝
- //
- ```
- */
- declare const boxen: (text: string, options?: boxen.Options) => string;
- export = boxen;
|