/** * @license * Copyright 2025 Qwen * SPDX-License-Identifier: Apache-2.0 */ import { Box, Text } from 'ink'; import React from 'react'; import { Colors } from '../colors.js'; import { RadioButtonSelect, RadioSelectItem, } from './shared/RadioButtonSelect.js'; import { useKeypress } from '../hooks/useKeypress.js'; export enum QuitChoice { CANCEL = 'cancel', QUIT = 'quit', SAVE_AND_QUIT = 'save_and_quit', SUMMARY_AND_QUIT = 'summary_and_quit', } interface QuitConfirmationDialogProps { onSelect: (choice: QuitChoice) => void; } export const QuitConfirmationDialog: React.FC = ({ onSelect, }) => { useKeypress( (key) => { if (key.name === 'escape') { onSelect(QuitChoice.CANCEL); } }, { isActive: true }, ); const options: Array> = [ { label: 'Quit immediately (/quit)', value: QuitChoice.QUIT, }, { label: 'Generate summary and quit (/summary)', value: QuitChoice.SUMMARY_AND_QUIT, }, { label: 'Save conversation and quit (/chat save)', value: QuitChoice.SAVE_AND_QUIT, }, { label: 'Cancel (stay in application)', value: QuitChoice.CANCEL, }, ]; return ( What would you like to do before exiting? ); };