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

@monostate/ui

v0.3.0

Published

A modern React component library with shadcn/ui philosophy - copy, paste, and customize

Readme

@monostate/ui

A modern React component library with 89 production-ready components following a three-tier architecture. Built with TypeScript, Tailwind CSS, and Radix UI primitives.

Features

  • 🏗️ Three-Tier Architecture - Primitives, Composed Components, and Examples
  • 🎨 89 Components - 45 primitives + 44 composed components
  • 🚀 Production Ready - TypeScript strict mode, no any types
  • 📦 Tree Shakeable - Only import what you need (1.2MB total)
  • 🎯 TypeScript - Full type safety and IntelliSense support
  • Accessible - Built on Radix UI primitives
  • 🎨 Tailwind CSS - Utility-first styling
  • 🌙 Dark Mode - Built-in dark mode support
  • 📱 Responsive - Mobile-first responsive design
  • 🪟 Glass Morphism - Built-in glass effect utilities

Installation

npm install @monostate/ui
# or
yarn add @monostate/ui
# or
pnpm add @monostate/ui

Architecture

Our component library follows a three-tier architecture:

1. 🏗️ Primitives (45 components)

Basic building blocks like Button, Card, Dialog. These are the foundation of your UI, built on Radix UI for accessibility.

2. 🎨 Composed Components (44 components)

Pre-built, prop-accepting patterns like PricingCard, VideoPlayer, KpiCard. Common UI patterns made easy with full customization.

3. 📚 Examples (Not in npm)

Complex templates like full dashboards and landing pages. Available in our showcase site for copy/paste.

Quick Start

import { 
  // Primitives
  Button, 
  Card,
  // Composed Components  
  PricingCard, 
  VideoPlayer,
  AvatarStatus,
  KpiCard
} from '@monostate/ui'

function App() {
  return (
    <>
      {/* Primitive component */}
      <Button variant="default" size="lg">
        Click me
      </Button>

      {/* Composed component with props */}
      <PricingCard
        title="Pro Plan"
        price="$29"
        features={["Unlimited projects", "Priority support"]}
        highlighted
        onSelect={() => console.log('Selected!')}
      />

      {/* More composed components */}
      <AvatarStatus
        src="/user.jpg"
        status="online"
        size="lg"
      />

      <KpiCard
        title="Revenue"
        value="$45,231"
        icon={DollarSign}
        change={{ value: 12.5, type: "increase" }}
      />
    </>
  )
}

Component Categories

Primitives (45 Building Blocks)

Core UI

  • Button - Versatile button with variants
  • Card - Container with header/content/footer
  • Badge - Status and label indicators
  • Avatar - User profile images
  • Separator - Visual divider

Forms

  • Input - Text input field
  • Textarea - Multi-line text input
  • Checkbox - Checkbox input
  • RadioGroup - Radio button group
  • Select - Dropdown select
  • Switch - Toggle switch
  • Slider - Range slider
  • Label - Form label
  • Form - Form with validation

Overlays

  • Dialog - Modal dialog
  • Sheet - Slide-out panel
  • Popover - Floating content
  • Tooltip - Hover tooltips
  • AlertDialog - Confirmation dialogs
  • DropdownMenu - Dropdown menus
  • ContextMenu - Right-click menus
  • HoverCard - Hover card content

Navigation

  • Tabs - Tab navigation
  • NavigationMenu - Navigation bar
  • Breadcrumb - Breadcrumb navigation
  • Pagination - Page navigation
  • Sidebar - Collapsible sidebar

Data Display

  • Table - Data tables
  • Accordion - Collapsible content
  • Progress - Progress bars
  • Skeleton - Loading placeholders
  • ScrollArea - Scrollable containers
  • AspectRatio - Aspect ratio container

Advanced

  • Command - Command palette
  • Calendar - Date picker
  • DateRangePicker - Date range selection
  • Carousel - Content carousel
  • Chart - Chart components
  • Toast - Toast notifications
  • Sonner - Toast notifications
  • Alert - Alert messages
  • Collapsible - Collapsible content
  • Drawer - Mobile drawer
  • InputOTP - OTP input
  • Menubar - Menu bar
  • Resizable - Resizable panels
  • Toggle - Toggle button
  • ToggleGroup - Toggle button group

Composed Components (44 Ready Patterns)

Stats & Data

// Animated statistics
<AnimatedStats
  stats={[
    { icon: DollarSign, label: "Revenue", value: 45231, prefix: "$" },
    { icon: Users, label: "Users", value: 2350 }
  ]}
  duration={2000}
/>

// KPI card with trend
<KpiCard
  title="Monthly Revenue"
  value="$45,231"
  icon={DollarSign}
  change={{ value: 12.5, type: "increase" }}
/>

// Metric ring chart
<MetricRing
  value={75}
  max={100}
  label="Complete"
  color="#3b82f6"
/>

User & Social

// Avatar with status
<AvatarStatus
  src="/user.jpg"
  status="online"
  size="lg"
/>

// Social share buttons
<SocialShare
  url="https://example.com"
  title="Check this out!"
  platforms={["twitter", "facebook", "linkedin"]}
/>

// Notification bell
<NotificationBell
  count={5}
  onClick={() => showNotifications()}
/>

Content & Media

// Image carousel
<ImageCarousel
  images={[
    { src: "/img1.jpg", alt: "Slide 1" },
    { src: "/img2.jpg", alt: "Slide 2" }
  ]}
  autoPlay
  showIndicators
/>

// Video player
<VideoPlayer
  src="/video.mp4"
  poster="/thumbnail.jpg"
  autoPlay={false}
/>

// Code block
<CodeBlock
  code={`function hello() {
  console.log("Hello!");
}`}
  language="javascript"
  showLineNumbers
/>

Marketing & CTA

// Gradient CTA
<GradientCta
  title="Ready to get started?"
  description="Join thousands of users"
  primaryButtonText="Start Free Trial"
  gradient="from-purple-600 to-pink-600"
/>

// Pricing card
<PricingCard
  title="Pro Plan"
  price="$29"
  period="/month"
  features={[
    "Unlimited projects",
    "Priority support",
    "Advanced analytics"
  ]}
  highlighted
  badge="Most Popular"
/>

Interactive Components

// Terminal emulator
<Terminal
  prompt="$"
  commands={[
    { input: "npm install", output: "✓ Done" }
  ]}
  onCommand={(cmd) => executeCommand(cmd)}
/>

// File upload
<FileUpload
  accept="image/*"
  multiple
  maxSize={5}
  onUpload={(files) => handleFiles(files)}
/>

// Color picker
<ColorPicker
  value="#3b82f6"
  onChange={(color) => setColor(color)}
/>

Complete List of Composed Components

Stats & Data: AnimatedStats, KpiCard, MetricRing, GradientStat, MiniStatCard, RealtimeIndicator, RealtimeStatus

User & Social: AvatarStatus, SocialShare, NotificationBell, NotificationStack, MoodTracker, FeedbackEmoji

Content & Media: ImageCarousel, VideoPlayer, SpotifyPlayer, CodeBlock, TestimonialMini

Marketing & CTA: GradientCta, PricingCard, QuickActionCard, BadgeCollection

Interactive: Terminal, FileUpload, ColorPicker, CountdownTimer, CalendarMini, QrCode

Layout & Design: GlassmorphismCard, GradientBorderCard, SectionCards, WaveDivider, SkeletonCard

Progress & Status: ProgressSteps, JobProgress, PulseAnimation, StatusIndicator, RatingCard

Data Management: ComparisonTable, WeatherWidget, CryptoCard, Metric Ring

Effects: AnimatedGradientText, VoiceWave, FloatingAction

Glass Morphism Effects

Apply beautiful glass morphism effects to any component using our built-in utilities:

import { glass, Button, Card } from '@monostate/ui'

// Using the glass() utility function
<Button className={glass("medium")}>
  Glass Button
</Button>

// Different glass intensities
<Card className={glass("subtle")}>Subtle glass effect</Card>
<Card className={glass("medium")}>Medium glass effect</Card>
<Card className={glass("strong")}>Strong glass effect</Card>
<Card className={glass("ultra")}>Ultra glass effect</Card>

// Combine with other classes
<div className={glass("medium", "p-6 rounded-lg")}>
  Glass container with padding and rounded corners
</div>

Glass Effect Requirements

For glass effects to be visible, ensure there's content behind the component to blur. Glass effects work best with:

  • Gradient backgrounds
  • Images or patterns
  • Other content layers

Glass Configuration

import { getGlassClasses } from '@monostate/ui'

// Configure glass effects
const glassClass = getGlassClasses({
  enabled: true,
  blur: 'md',        // 'sm' | 'md' | 'lg' | 'xl'
  opacity: 0.1,      // Background opacity
  borderOpacity: 0.2,// Border opacity
  noise: true        // Enable noise texture
}, isDarkMode)

Customization

Components use Tailwind CSS classes and CSS variables for easy customization:

// Customize with className
<Button className="bg-purple-600 hover:bg-purple-700">
  Custom Button
</Button>

// Customize with CSS variables
<style>
  :root {
    --primary: 259 94% 51%;
    --primary-foreground: 0 0% 100%;
  }
</style>

Requirements

  • React 18.0.0 or higher
  • Tailwind CSS 3.0 or higher

Changelog

v0.3.0

  • Export cn utility function for class name management
  • Export ThemeProvider from next-themes for theme management
  • Move next-themes to peerDependencies

v0.2.1

  • Move react-hook-form to peerDependencies

v0.2.0

  • Add glass morphism effects system

v0.1.0

  • Initial release with 89 production-ready components

License

MIT © Monostate

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting PRs.

Links