1.0.1 โ€ข Published 7 months ago

interactive-cli-menu v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

๐ŸŒŸ interactive-cli-menu

npm version downloads GitHub stars

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! ๐ŸŽ‰


๐Ÿš€ Features

  • ๐Ÿ”ผ 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.

๐Ÿ“ฆ Installation

Install via NPM:

npm install interactive-cli-menu

๐Ÿ› ๏ธ Usage

โœจ Simple Example

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();

๐Ÿ–ฅ๏ธ Output

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
                   ๐Ÿ” Main Menu
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  ๐Ÿ” Search
> โš™๏ธ Settings
  โŒ Exit

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Interact:

  • Use โฌ†๏ธ Up and โฌ‡๏ธ Down to navigate.
  • Press โŽ Enter to select.

๐ŸŽจ API

createMenu(options)

options (object)

OptionTypeDefaultDescription
titlestring'Menu'Title displayed at the top of the menu.
widthnumber60Width of the menu in characters.
borderColornumber90 (Gray)ANSI color code for the border.
highlightColornumber34 (Blue)ANSI color code for the selected menu item.
textColornumber37 (White)ANSI color code for unselected menu items.
itemsarray[]Array of menu items (see below).

Menu Items (items)

Each item is an object with the following properties:

PropertyTypeDescription
labelstringThe text displayed for the menu item (supports emojis).
actionfunctionThe function executed when the item is selected.

๐ŸŒŸ Advanced Example: Dynamic Menus with Emojis

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();

๐Ÿ›ฃ๏ธ Roadmap

๐Ÿ”ฎ 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.

๐Ÿ™Œ Contributing

We โค๏ธ contributions! If you find a bug or have an idea for improvement, feel free to open an issue or submit a pull request.


๐Ÿ“„ License

interactive-cli-menu is open-source and available under the MIT License.


โœจ Make your CLI tools stylish and user-friendly with interactive-cli-menu! ๐ŸŒŸ

climenuinteractiveterminalcommand-linenpm-packagecli-menuterminal-uicli-toolcommand-line-interfacenodejsnodejs-menumenu-systeminteractive-cliconsoleterminal-appnode-cliterminal-navigationarrow-navigationmenu-navigationcli-navigationconsole-menucommand-line-menucustomizable-menuterminal-appsinteractive-menunode-menucommand-line-interface-menucli-toolkitterminal-navigation-menuinteractive-uistylish-menuascii-menutext-menustyled-cli-menunpm-cli-menucli-interfacearrow-key-navigationno-dependency-menuminimal-cli-menulightweight-cli-menucolor-menuconsole-navigationtext-uiterminal-applicationcli-apptext-interfacekeyboard-navigationcli-navigation-utilitycustom-cli-menunodejs-terminalmodern-cli-menuterminal-ui-libraryterminal-toolcli-widgetcommand-line-widgetcli-navigation-systemconsole-toolinteractive-cli-toolnode-cli-toolcommand-line-navigationcli-navigatorarrow-navigatorterminal-selectorcustom-navigationterminal-stylingstyled-terminalmenu-navigation-toolterminal-interactioncli-interactive-toolcli-menu-buildercli-app-buildercli-app-uicli-menu-systemactionable-menustylish-cli-navigationcli-colorterminal-colorcli-keyboard-navigationconsole-action-menuinteractive-terminalterminal-ui-systemterminal-menu-builderinteractive-command-linenode-terminalarrow-menuconsole-navigation-toolcli-componentcommand-line-componentnpm-terminal-menunpm-command-linecommand-line-action-menudynamic-cli-menuinteractive-CLInode-terminal-menucli-projectcommand-line-appstylish-command-lineconsole-menu-systemcli-interface-libraryconsole-actionable-menucli-keyboard-interfaceaction-menuinteractive-navigatornode-terminal-toolcommand-line-interface-libraryCLI-librarynpm-cli-navigationcli-interactionstylish-command-line-menuterminal-inputcli-input-handlerterminal-interaction-systemdynamic-menumenu-buildercommand-line-utilityterminal-utilityterminal-UI-componentcli-project-toolinteractive-CLI-menustylish-command-line-interfacenode-cli-navigationcommand-line-stylingcli-utilitycli-stylenodejs-navigationterminal-styling-toolkeyboard-menucommand-line-styling-toolcommand-line-interactionstylish-cli-toolcommand-line-keyboard-navigationactionable-cliterminal-UI-navigationcli-uxux-cliterminal-ux-toolcli-ux-menuCLI-UX-interfacecommand-line-UXinteractive-CLI-toolkitcli-menu-UXterminal-action-menuCLI-UI-systemUX-CLI-toolstylish-command-line-toolcli-project-menumenu-system-clistylish-menu-builderactionable-terminal-menustylish-terminal-appinteractive-CLI-appCLI-menu-systemcommand-line-navigation-toolUX-menucommand-line-menu-buildermenu-systemnodejs-uiUX-interfaceterminal-menu-systemCLI-navigationterminal-interaction-toolCLI-menu-navigationterminal-UX-interfacecli-command-toolterminal-interface-builderCLI-systemterminal-app-builder
1.0.1

7 months ago

1.0.0

7 months ago