React component to show ghost text suggestions in an input field (similar to VS Code or Gmail Smart Compose). Key features:
- Displays auto-complete suggestions when the user pauses typing
- Press
tabto autocomplete (accept a suggestion) - Press
escapeto reject a suggestion - Caches and re-uses suggestions to avoid unnecessary calls to expensive AI services
- Typescript support for a good developer experience
Scroll down for the live demo.
npm install react-ghost-textimport{AutocompleteTextbox}from'react-ghost-text';exportdefaultfunctionHome(){// State to store the content of the textboxconst[content,setContent]=useState<string>("");constgetSuggestion=async(precedingText: string)=>{// Fetch suggestion from a backend API (which may call GPT, Gemini, Claude, etc.)return"suggestion";};return(<AutocompleteTextboxgetSuggestion={getSuggestion}onContentChange={content=>setContent(content)}/>)}| Prop | Description | Type |
|---|---|---|
getSuggestion | A function that retrieves suggestions based on user input. Usually, this will be an API call to an AI service (e.g., OpenAI or Claude API). | function |
| Prop | Description | Type |
|---|---|---|
value | Initial value of the textbox. | string |
debounceTime | The time to wait after the user stops typing before fetching a suggestion (in ms). Default: 1000. | integer |
suggestionClassName | The CSS class name for the span element that contains the suggestion. This is useful for styling the suggestion. Your className will override the default class name. Default: suggestion. | string |
suggestionStyle | The inline style for the span element that contains the suggestion. This is useful for styling the suggestion. Your style will override the default style. Default: {'color':'grey'}. | object |
disableAutocomplete | Disable autocomplete suggestions for the component. Default: false | boolean |
disabled | Disable editing in the component (unlike the above, this disables the textbox itself, not the suggestions). Default: false | boolean |
onSuggestionShown | An optional callback function that is called after a suggestion has been shown. | function |
onSuggestionAccepted | An optional callback function that is called when a suggestion is accepted. | function |
onSuggestionRejected | An optional callback function that is called when a suggestion is rejected. | function |
onContentChange | An optional callback function that is called when the content of the textbox changes. It is called with the current content of the textbox (as HTML string). Note: This does not include the suggestion, only the main text input by the user. | function |
Standard div props | This component accepts all standard HTML div attributes. This allows you to customize experience (e.g., disable paste by defining onPaste). |
- Basic example: Renders a basic textbox with inline autocomplete.
- Advanced example: Renders a textbox with inline autocomplete and shows how to use some of the optional props.
