Choice Component

Interactive single-choice prompt with optional Exit.

use Ajaxray\AnsiKit\Components\Choice;
use Ajaxray\AnsiKit\AnsiTerminal;

$choice = new Choice();
$selected = $choice
  ->prompt('Choose an action:', ['Deploy', 'Test', 'Rollback']);

echo "Selected: $selected\n";

// Optional choice (with Exit)
$selected = (new Choice())
  ->required(false)
  ->prompt('Choose:', ['A','B','C']);

// Styling
(new Choice())
  ->promptStyle([AnsiTerminal::TEXT_BOLD, AnsiTerminal::FG_CYAN])
  ->optionStyle([AnsiTerminal::FG_GREEN])
  ->numberStyle([AnsiTerminal::FG_YELLOW])
  ->errorStyle([AnsiTerminal::FG_RED])
  ->exitStyle([AnsiTerminal::FG_BRIGHT_BLACK])
  ->prompt('Select:', ['One','Two']);

Notes

  • Returns selected label (or false when optional Exit chosen).
  • Validates numeric input; trims whitespace.