npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-ghost-text

v1.1.0

Published

React component to show ghost text suggestions in an input field (similar to VS Code or Gmail Smart Compose)

Downloads

81

Readme

react-ghost-text

License: MIT

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 tab to autocomplete (accept a suggestion)
  • Press escape to reject a suggestion
  • Caches and re-uses suggestions to avoid unnecessary calls to expensive AI services
  • Typescript support for a good developer experience

demo

Scroll down for the live demo.

Install

npm install react-ghost-text

Usage

import { AutocompleteTextbox } from 'react-ghost-text';
export default function Home() {

  // State to store the content of the textbox
  const [content, setContent] = useState<string>("");

  const getSuggestion = async (precedingText: string) => {
    // Fetch suggestion from a backend API (which may call GPT, Gemini, Claude, etc.)
    return "suggestion";
  };

  return (
    <AutocompleteTextbox
      getSuggestion={getSuggestion}
      onContentChange={content => setContent(content)} />
  )
}

Available Props

Required Props

|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 |

Optional Props

|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). | |

Live Examples

  • 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.