diff options
| author | Evan Senter <[email protected]> | 2025-04-19 19:45:42 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-19 19:45:42 +0100 |
| commit | 3fce6cea27d3e6129d6c06e528b62e1b11bf7094 (patch) | |
| tree | 244b8e9ab94f902d65d4bda8739a6538e377ed17 /packages/cli/src/ui/components/InputPrompt.tsx | |
| parent | 0c9e1ef61be7db53e6e73b7208b649cd8cbed6c3 (diff) | |
Starting to modularize into separate cli / server packages. (#55)
* Starting to move a lot of code into packages/server
* More of the massive refactor, builds and runs, some issues though.
* Fixing outstanding issue with double messages.
* Fixing a minor UI issue.
* Fixing the build post-merge.
* Running formatting.
* Addressing comments.
Diffstat (limited to 'packages/cli/src/ui/components/InputPrompt.tsx')
| -rw-r--r-- | packages/cli/src/ui/components/InputPrompt.tsx | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx index b5d0b2b5..86e760ee 100644 --- a/packages/cli/src/ui/components/InputPrompt.tsx +++ b/packages/cli/src/ui/components/InputPrompt.tsx @@ -5,41 +5,43 @@ */ import React from 'react'; -import { Box, Text } from 'ink'; +import { Box, useInput, useFocus } from 'ink'; import TextInput from 'ink-text-input'; -import { globalConfig } from '../../config/config.js'; interface InputPromptProps { - query: string; - setQuery: (value: string) => void; onSubmit: (value: string) => void; - isActive: boolean; - forceKey?: number; } -export const InputPrompt: React.FC<InputPromptProps> = ({ - query, - setQuery, - onSubmit, - isActive, - forceKey, -}) => { - const model = globalConfig.getModel(); +export const InputPrompt: React.FC<InputPromptProps> = ({ onSubmit }) => { + const [value, setValue] = React.useState(''); + const { isFocused } = useFocus({ autoFocus: true }); + + useInput( + (input, key) => { + if (key.return) { + if (value.trim()) { + onSubmit(value); + setValue(''); + } + } + }, + { isActive: isFocused }, + ); return ( - <Box marginTop={1} borderStyle="round" borderColor={'white'} paddingX={1}> - <Text color={'white'}>> </Text> - <Box flexGrow={1}> - <TextInput - key={forceKey?.toString()} - value={query} - onChange={setQuery} - onSubmit={onSubmit} - showCursor={true} - focus={isActive} - placeholder={`Ask Gemini (${model})... (try "/init" or "/help")`} - /> - </Box> + <Box + borderStyle="round" + borderColor={isFocused ? 'blue' : 'gray'} + paddingX={1} + > + <TextInput + value={value} + onChange={setValue} + placeholder="Enter your message or use tools..." + onSubmit={() => { + /* Empty to prevent double submission */ + }} + /> </Box> ); }; |
