2025-08-06 15:47:58 -04:00
/ * *
* @license
* Copyright 2025 Google LLC
* SPDX - License - Identifier : Apache - 2.0
* /
import { Box , Text , useInput } from 'ink' ;
import {
RadioButtonSelect ,
RadioSelectItem ,
} from './components/shared/RadioButtonSelect.js' ;
export type IdeIntegrationNudgeResult = 'yes' | 'no' | 'dismiss' ;
interface IdeIntegrationNudgeProps {
2025-08-11 21:01:37 +00:00
ideName? : string ;
2025-08-06 15:47:58 -04:00
onComplete : ( result : IdeIntegrationNudgeResult ) = > void ;
}
export function IdeIntegrationNudge ( {
2025-08-11 21:01:37 +00:00
ideName ,
2025-08-06 15:47:58 -04:00
onComplete ,
} : IdeIntegrationNudgeProps ) {
useInput ( ( _input , key ) = > {
if ( key . escape ) {
onComplete ( 'no' ) ;
}
} ) ;
const OPTIONS : Array < RadioSelectItem < IdeIntegrationNudgeResult > > = [
{
label : 'Yes' ,
value : 'yes' ,
} ,
{
label : 'No (esc)' ,
value : 'no' ,
} ,
{
label : "No, don't ask again" ,
value : 'dismiss' ,
} ,
] ;
return (
< Box
flexDirection = "column"
borderStyle = "round"
borderColor = "yellow"
padding = { 1 }
width = "100%"
marginLeft = { 1 }
>
< Box marginBottom = { 1 } flexDirection = "column" >
< Text >
< Text color = "yellow" > { '> ' } < / Text >
2025-08-11 21:01:37 +00:00
{ ` Do you want to connect your ${ ideName ? ? 'your' } editor to Gemini CLI? ` }
2025-08-06 15:47:58 -04:00
< / Text >
2025-08-11 21:01:37 +00:00
< Text
dimColor
> { ` If you select Yes, we'll install an extension that allows the CLI to access your open files and display diffs directly in ${ ideName ? ? 'your editor' } . ` } < / Text >
2025-08-06 15:47:58 -04:00
< / Box >
< RadioButtonSelect
items = { OPTIONS }
onSelect = { onComplete }
isFocused = { true }
/ >
< / Box >
) ;
}