Lightweight, beautiful and user-friendly interactive prompts >_ Easy to use CLI prompts to enquire users for information▌
string
| | Prompt message to display |
| initial | string
| ''
| Default string value |
| style | string
| 'default'
| Render style (`default`, `password`, `invisible`) |
| format | function
| | Receive user input. The returned value will be added to the response object |
| onState | function
| | On state change callback |
### password(message, [initial])
> Password prompt with masked input.
This prompt is a similar to a prompt of type `'text'` with `style` set to `'password'`.
#### Example
```js
{
type: 'password',
name: 'value',
message: 'Tell me a secret',
initial '',
}
```
#### Options
| Param | Type | Description |
| --- | --- | --- |
| message | string
| Prompt message to display |
| initial | string
| Default string value |
| format | function
| Receive user input. The returned value will be added to the response object |
| onState | function
| On state change callback |
### invisible(message, [initial])
> Prompts user for invisible text input.
This prompt is working like `sudo` where the input is invisible.
This prompt is a similar to a prompt of type `'text'` with style set to `'invisible'`.
#### Example
```js
{
type: 'invisible',
name: 'value',
message: 'Enter password',
initial: ''
}
```
#### Options
| Param | Type | Description |
| --- | --- | --- |
| message | string
| Prompt message to display |
| initial | string
| Default string value |
| format | function
| Receive user input. The returned value will be added to the response object |
| onState | function
| On state change callback |
### number(message, initial, [max], [min], [style])
> Prompts user for number input.
You can type in numbers and use up/down to increase/decrease the value. Only numbers are allowed as input.
#### Example
```js
{
type: 'number',
name: 'value',
message: 'How old are you?',
initial: 0,
style: 'default',
min: 2,
max: 10
}
```
#### Options
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| message | string
| | Prompt message to display |
| initial | number
| `null` | Default number value |
| format | function
| | Receive user input. The returned value will be added to the response object |
| max | number
| `Infinity` | Max value |
| min | number
| `-infinity` | Min value |
| style | string
| 'default'
| Render style (`default`, `password`, `invisible`) |
| onState | function
| | On state change callback |
### confirm(message, [initial])
> Classic yes/no prompt.
Hit y or n to confirm/reject.
#### Example
```js
{
type: 'confirm',
name: 'value',
message: 'Can you confirm?',
initial: true
}
```
#### Options
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| message | string
| | Prompt message to display |
| initial | boolean
| false
| Default value |
| format | function
| | Receive user input. The returned value will be added to the response object |
| onState | function
| | On state change callback |
### list(message, [initial])
> List prompt that return an array.
Similar to the `text` prompt, but the output is an `Array` containing the
string separated by `separator`.
```js
{
type: 'list',
name: 'value',
message: 'Enter keywords',
initial: '',
separator: ','
}
```
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| message | string
| | Prompt message to display |
| initial | boolean
| false
| Default value |
| format | function
| | Receive user input. The returned value will be added to the response object |
| separator | string
| ','
| String separator. Will trim all white-spaces from start and end of string |
| onState | function
| | On state change callback |
### toggle(message, [initial], [active], [inactive])
> Interactive toggle/switch prompt.
Use tab or arrow keys/tab/space to switch between options.
#### Example
```js
{
type: 'toggle',
name: 'value',
message: 'Can you confirm?',
initial: true,
active: 'yes',
inactive: 'no'
}
```
#### Options
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| message | string
| | Prompt message to display |
| initial | boolean
| false
| Default value |
| format | function
| | Receive user input. The returned value will be added to the response object |
| active | string
| 'on'
| Text for `active` state |
| inactive | string
| 'off'
| Text for `inactive` state |
| onState | function
| | On state change callback |
### select(message, choices, [initial])
> Interactive select prompt.
Use up/down to navigate. Use tab to cycle the list.
#### Example
```js
{
type: 'select',
name: 'value',
message: 'Pick a color',
choices: [
{ title: 'Red', value: '#ff0000' },
{ title: 'Green', value: '#00ff00' },
{ title: 'Blue', value: '#0000ff' }
],
initial: 1
}
```
#### Options
| Param | Type | Description |
| --- | --- | --- |
| message | string
| Prompt message to display |
| initial | number
| Index of default value |
| format | function
| Receive user input. The returned value will be added to the response object |
| choices | Array
| Array of choices objects `[{ title, value }, ...]` |
| onState | function
| On state change callback |
### multiselect(message, choices, [initial], [max], [hint])
> Interactive multi-select prompt.
Use space to toggle select/unselect and up/down to navigate. Use tab to cycle the list. You can also use right to select and left to deselect.
By default this prompt returns an `array` containing the **values** of the selected items - not their display title.
#### Example
```js
{
type: 'multiselect',
name: 'value',
message: 'Pick colors',
choices: [
{ title: 'Red', value: '#ff0000' },
{ title: 'Green', value: '#00ff00' },
{ title: 'Blue', value: '#0000ff', selected: true }
],
initial: 1,
max: 2,
hint: '- Space to select. Return to submit'
}
```
#### Options
| Param | Type | Description |
| --- | --- | --- |
| message | string
| Prompt message to display |
| format | function
| Receive user input. The returned value will be added to the response object |
| choices | Array
| Array of choices objects `[{ title, value, [selected] }, ...]` |
| max | number
| Max select |
| hint | string
| Hint to display user |
| onState | function
| On state change callback |
This is one of the few prompts that don't take a initial value.
If you want to predefine selected values, give the choice object an `selected` property of `true`.
### autocomplete(message, choices, [initial], [suggest], [limit], [style])
> Interactive auto complete prompt.
The prompt will list options based on user input. Type to filter the list.
Use up/down to navigate. Use tab to cycle the result. Hit enter to select the highlighted item below the prompt.
The default suggests function is sorting based on the `title` property of the choices.
You can overwrite how choices are being filtered by passing your own suggest function.
#### Example
```js
{
type: 'autocomplete',
name: 'value',
message: 'Pick your favorite actor',
choices: [
{ title: 'Cage' },
{ title: 'Clooney', value: 'silver-fox' },
{ title: 'Gyllenhaal' },
{ title: 'Gibson' },
{ title: 'Grant' },
]
}
```
#### Options
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| message | string
| | Prompt message to display |
| format | function
| | Receive user input. The returned value will be added to the response object |
| choices | Array
| | Array of auto-complete choices objects `[{ title, value }, ...]` |
| suggest | function
| By `title` string | Filter function. Defaults to sort by `title` property. `suggest` should always return a promise |
| limit | number
| 10
| Max number of results to show |
| style | string
| `'default'` | Render style (`default`, `password`, `invisible`) |
| onState | function
| | On state change callback |
Example on what a `suggest` function might look like:
```js
const suggestByTitle = (input, choices) =>
Promise.resolve(choices.filter(i => i.title.slice(0, input.length) === input))
```
![split](https://github.com/terkelg/prompts/raw/master/media/split.png)
## ❯ Credit
Many of the prompts are based on the work of [derhuerst](https://github.com/derhuerst).
## ❯ License
MIT © [Terkel Gjervig](https://terkel.com)