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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@versini/ui-textarea

v6.1.1

Published

[![npm version](https://img.shields.io/npm/v/@versini/ui-textarea?style=flat-square)](https://www.npmjs.com/package/@versini/ui-textarea) ![npm package minimized gzipped size](<https://img.shields.io/bundlejs/size/%40versini%2Fui-textarea?style=flat-squar

Downloads

1,650

Readme

@versini/ui-textarea

npm version npm package minimized gzipped size

An accessible and feature-rich React textarea component built with TypeScript and TailwindCSS.

The TextArea component provides multi-line text input with comprehensive form features including validation states, helper text, character counting, and customizable styling options.

Table of Contents

Features

  • ♿ Accessible: WCAG compliant with proper labeling and keyboard navigation
  • 🎨 Customizable: Multiple themes, sizes, and styling options
  • 🔧 Form Integration: Built-in validation states and helper text
  • 📊 Character Counting: Optional character limit with visual feedback
  • 🌲 Tree-shakeable: Lightweight and optimized for bundle size
  • 🔧 TypeScript: Fully typed with comprehensive prop definitions

Installation

npm install @versini/ui-textarea

Note: This component requires TailwindCSS and the @versini/ui-styles plugin for proper styling. See the installation documentation for complete setup instructions.

Usage

Basic TextArea

import { TextArea } from "@versini/ui-textarea";

function App() {
  return (
    <TextArea
      label="Message"
      name="message"
      placeholder="Enter your message here..."
      rows={4}
    />
  );
}

TextArea with Character Limit

import { TextArea } from "@versini/ui-textarea";

function App() {
  return (
    <TextArea
      label="Tweet"
      name="tweet"
      placeholder="What's happening?"
      maxLength={280}
      helperText="Share your thoughts"
      rows={3}
    />
  );
}

TextArea with Error State

import { TextArea } from "@versini/ui-textarea";

function App() {
  return (
    <TextArea
      label="Description"
      name="description"
      error
      helperText="Description is required"
      placeholder="Enter a description..."
    />
  );
}

API

TextArea Props

| Prop | Type | Default | Description | | ----------------- | ----------------------------------------------- | ---------- | -------------------------------------------- | | label | string | - | The label of the TextArea (required) | | name | string | - | The name of the TextArea (required) | | error | boolean | false | Whether the TextArea is in error state | | helperText | string | - | Text to add to the bottom of the TextArea | | helperTextOnFocus | boolean | false | Show helper text only when focused | | mode | "dark" \| "light" \| "system" \| "alt-system" | "system" | Theme mode | | focusMode | "dark" \| "light" \| "system" \| "alt-system" | "system" | Focus ring color mode | | labelHidden | boolean | false | Hide label visually but retain accessibility | | noBorder | boolean | false | Whether to render without border | | raw | boolean | false | Whether to render without styles |

Also supports all standard HTML textarea element attributes

Examples

Comment Form

import { TextArea } from "@versini/ui-textarea";
import { Button } from "@versini/ui-button";

function CommentForm() {
  return (
    <div className="space-y-4">
      <TextArea
        label="Add a comment"
        name="comment"
        placeholder="Share your thoughts..."
        rows={4}
        maxLength={500}
        helperText="Be respectful and constructive"
      />
      <Button variant="primary">Post Comment</Button>
    </div>
  );
}

Feedback Form

import { TextArea } from "@versini/ui-textarea";

function FeedbackForm() {
  return (
    <TextArea
      label="Feedback"
      name="feedback"
      placeholder="Tell us how we can improve..."
      rows={6}
      helperText="Your feedback helps us improve our service"
      helperTextOnFocus
    />
  );
}