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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sentisis/react-tags-input

v1.0.6

Published

React input to create tags

Readme

React-Tags-Input

An input control that handles tags interaction with copy-paste and custom type support.

demo

Live Playground

For examples of the tags input in action, check the demo page

Installation

The easiest way to use it is by installing it from NPM and include it in your own React build process.

npm install @sentisis/react-tags-input --save

Usage

Example usage:

import React from 'react';
import TagsInput from '@sentisis/react-tags-input';
// Either a copy of our demo CSS or your custom one
import './TagsInput.css';

export default class Demo extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      tags: [],
    };
  }

  render() {
    return (
      <TagsInput
        label="Tags"
        placeholder="Write tags"
        tags={this.state.tags}
        onChange={tags => this.setState({ tags })}
      />
    );
  }
}

API

Currently the component listen to the following keys: enter, esc, backspace, mod+a, mod+c and mod+v (for copy/paste).

It supports a keyboard-only copy paste (using mod+a).

copy-paste-demo

Each tag you will be passing should have the following shape:

| Property | Type | Required | Description | | -------- | ---- | ----------- | -------- | | value | String | true | Tag value | | special | Boolean | false | Special marks the tag as different. For example a special tag when using the case-sensitive options is a case-sensitive tag |

The TagsInput component contains the following properties:

| Property | Type | Default | Description | | ---------| ---- | ------- | ----------- | | tags | Array<Tags> | [] | Array of tags to display | | label | String | undefined | Rendered above the field itself | | placeholder | String | undefined | Input placeholder | | error | String | undefined | Error message rendered below the field. When the field is set it will also have the class is-error| | tagRenderer | Function | undefined | Optional function that gets used to render the tag | | copyButton | Boolean | false | Renders a copy to clipboard button | | copyButtonLabel | String | Copy to clipboard | Label for the copy to clipboard button | | blacklistChars | Array<String> | [','] | Characters not allowed in the tags. Must always contain , | | specialTags | Boolean | false | Enable the creation of special tags | | specialButtonRenderer | Function | undefined | Function that gets used to render the special button | | specialButtonLabel | String | Special | Label for the special button. Only used when a specialButtonRenderer is not defined | | onChange | Function | noop | Fired when changing the tags with the tags array as the argument | | onBlur | Function | noop | Fired as the standard React SyntheticEvent | | onFocus | Function | noop | Fired as the standard React SyntheticEvent | | onSubmit | Function | noop | Fired when the user interaction is considered complete, invoked with tags |