summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx')
-rw-r--r--packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx38
1 files changed, 31 insertions, 7 deletions
diff --git a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
index 2da045da..abc4fe61 100644
--- a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
@@ -61,14 +61,14 @@ export const ToolConfirmationMessage: React.FC<
question = `Apply this change?`;
options.push(
{
- label: '1. Yes, apply change',
+ label: 'Yes',
value: ToolConfirmationOutcome.ProceedOnce,
},
{
- label: '2. Yes, always apply file edits',
+ label: 'Yes (always allow)',
value: ToolConfirmationOutcome.ProceedAlways,
},
- { label: '3. No (esc)', value: ToolConfirmationOutcome.Cancel },
+ { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
);
} else {
const executionProps =
@@ -89,17 +89,17 @@ export const ToolConfirmationMessage: React.FC<
);
question = `Allow execution?`;
- const alwaysLabel = `2. Yes, always allow '${executionProps.rootCommand}' commands`;
+ const alwaysLabel = `Yes (always allow '${executionProps.rootCommand}' commands)`;
options.push(
{
- label: '1. Yes, allow once',
+ label: 'Yes',
value: ToolConfirmationOutcome.ProceedOnce,
},
{
label: alwaysLabel,
value: ToolConfirmationOutcome.ProceedAlways,
},
- { label: '3. No (esc)', value: ToolConfirmationOutcome.Cancel },
+ { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
);
}
@@ -118,8 +118,32 @@ export const ToolConfirmationMessage: React.FC<
{/* Select Input for Options */}
<Box flexShrink={0}>
- <SelectInput items={options} onSelect={handleSelect} />
+ <SelectInput
+ indicatorComponent={Indicator}
+ itemComponent={Item}
+ items={options}
+ onSelect={handleSelect}
+ />
</Box>
</Box>
);
};
+
+function Indicator({ isSelected = false }): React.JSX.Element {
+ return (
+ <Text color={isSelected ? Colors.AccentGreen : Colors.Gray}>
+ {isSelected ? '◉ ' : '○ '}
+ </Text>
+ );
+}
+
+export type ItemProps = {
+ readonly isSelected?: boolean;
+ readonly label: string;
+};
+
+function Item({ isSelected = false, label }: ItemProps): React.JSX.Element {
+ return (
+ <Text color={isSelected ? Colors.AccentGreen : Colors.Gray}>{label}</Text>
+ );
+}