interactive-cli-menu is a sleek, modern, and customizable NPM package for creating interactive CLI menus. It supports smooth arrow key navigation, actionable items, and beautiful terminal UI—all without external dependencies! Perfect for making your command-line tools pop! 🎉
- 🔼 Arrow Key Navigation: Effortlessly navigate menus with the up/down arrows.
- 🎨 Customizable Styling: Choose colors, widths, borders, and more.
- ⚡ Actionable Items: Attach custom actions to menu selections.
- 🪶 Lightweight: No external dependencies—100% native Node.js.
- 🛑 Graceful Exit: Cleanly handles
Ctrl+C
to terminate.
Install via NPM:
npm install interactive-cli-menu
const { createMenu } = require('interactive-cli-menu');
const menu = createMenu({
title: '🍔 Main Menu',
width: 50,
borderColor: 36, // Cyan
highlightColor: 33, // Yellow
textColor: 37, // White
items: [
{ label: '🔍 Search', action: () => console.log('Searching... 🔎') },
{ label: '⚙️ Settings', action: () => console.log('Opening settings... 🛠️') },
{ label: '❌ Exit', action: () => console.log('Goodbye! 👋') }
]
});
menu.render();
──────────────────────────────────────────────────
🍔 Main Menu
──────────────────────────────────────────────────
🔍 Search
> ⚙️ Settings
❌ Exit
──────────────────────────────────────────────────
- Use ⬆️ Up and ⬇️ Down to navigate.
- Press ⏎ Enter to select.
Option | Type | Default | Description |
---|---|---|---|
title |
string |
'Menu' |
Title displayed at the top of the menu. |
width |
number |
60 |
Width of the menu in characters. |
borderColor |
number |
90 (Gray) |
ANSI color code for the border. |
highlightColor |
number |
34 (Blue) |
ANSI color code for the selected menu item. |
textColor |
number |
37 (White) |
ANSI color code for unselected menu items. |
items |
array |
[] |
Array of menu items (see below). |
Each item is an object with the following properties:
Property | Type | Description |
---|---|---|
label |
string |
The text displayed for the menu item (supports emojis). |
action |
function |
The function executed when the item is selected. |
const { createMenu } = require('interactive-cli-menu');
let items = [
{ label: '📄 View Files', action: () => console.log('Listing files... 🗂️') },
{ label: '➕ Add Item', action: () => console.log('Adding item... ✅') },
{ label: '❌ Exit', action: () => console.log('Goodbye! 👋') }
];
const menu = createMenu({
title: '🛠️ My CLI Tool',
width: 60,
borderColor: 35, // Magenta
highlightColor: 32, // Green
textColor: 37, // White
items
});
menu.render();
🔮 Future Enhancements:
- 📂 Nested Menus: Add support for multi-level menus.
- 🌈 Extended Themes: More built-in color schemes and styles.
- 🕵️ Search: Enable searchable menus for longer lists.
- ⌨️ Custom Keybindings: Allow custom navigation keys.
We ❤️ contributions! If you find a bug or have an idea for improvement, feel free to open an issue or submit a pull request.
interactive-cli-menu is open-source and available under the MIT License.
✨ Make your CLI tools stylish and user-friendly with interactive-cli-menu! 🌟