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

@beluga-icon/react

v0.2.0

Published

React icon components for Beluga Icon

Readme

@beluga-icon/react

React icon components for the Beluga Icon library. Stroke-based SVG icons with built-in animations, visual styles, and full TypeScript support.

Bring your own style. Every icon accepts an iconStyle and animation prop out of the box — no extra wrappers, no CSS overrides needed. You can also inject custom colors per-style via styleColors.

Install

npm install @beluga-icon/react

Peer dependency: React ≥ 17

Quick Start

import { SearchIcon, HeartIcon, BellIcon } from '@beluga-icon/react'

function App() {
  return (
    <div>
      {/* Default — inherits color from CSS */}
      <SearchIcon />

      {/* Glass style with hover animation */}
      <HeartIcon iconStyle="glass" animation="heartbeat" trigger="hover" />

      {/* Neon style with custom color */}
      <BellIcon iconStyle="neon" color="#a855f7" animation="pulse" />

      {/* Accessible — announces to screen readers */}
      <SearchIcon size="lg" label="Search" />
    </div>
  )
}

Props

| Prop | Type | Default | Description | | ------------- | --------------------------------------------------------- | ---------------- | --------------------------------------------- | | size | 'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl' \| number | 'md' | Icon size — named preset or pixel value | | color | string | 'currentColor' | Stroke color — any valid CSS color | | strokeWidth | number | 2 | Stroke width in pixels | | iconStyle | IconStyleType | — | Visual style preset (see Styles section) | | styleColors | Record<string, string> | — | Custom color injection for color-aware styles | | animation | AnimKey | — | Animation preset (see Animations section) | | trigger | 'auto' \| 'hover' \| 'click' \| 'visible' | 'auto' | When the animation plays | | speed | 'slow' \| 'normal' \| 'fast' | 'normal' | Animation speed | | playOnce | boolean | false | Play animation once instead of looping | | label | string | — | Accessible label. Omit for decorative icons | | className | string | — | Extra CSS class on the <svg> element |

All standard SVG attributes (onClick, style, data-*, etc.) are also accepted.

Sizes

| Name | Pixels | | ----- | ------ | | xs | 12 | | sm | 16 | | md | 20 | | lg | 24 | | xl | 32 | | 2xl | 48 |

Pass a number for a custom pixel size: <SearchIcon size={36} />

Styles

21 built-in visual style presets. Apply any one via the iconStyle prop.

| Style | Description | | -------------- | ------------------------------------------------ | | circle | Solid filled circle background | | rounded | Rounded square background | | flat | Minimal flat background | | outline | Thin border, transparent fill | | ghost | Subtle transparent fill, no border | | glass | Frosted glass with backdrop blur | | liquid | Apple Liquid Glass — layered specular highlights | | neon | Glowing neon drop-shadow | | glow | Soft pulsing glow ring | | shadow | Elevated with layered box shadow | | gradient | Diagonal gradient background | | badge | Compact badge shape | | outline-ring | Double border ring | | neumorphic | Soft-UI extruded surface | | emboss | Pressed emboss effect | | inset | Inset / debossed surface | | ios | iOS-style rounded square | | fluent | Microsoft Fluent-inspired surface | | metallic | Brushed metal sheen | | duotone | Two-tone layered fill | | aurora | Animated hue-shifting gradient |

Color Injection

Some styles accept custom colors via styleColors:

{
  /* Gradient: from / mid / to */
}
;<StarIcon iconStyle="gradient" styleColors={{ from: '#f43f5e', mid: '#a855f7', to: '#06b6d4' }} />

{
  /* Aurora: three hue stops */
}
;<BellIcon iconStyle="aurora" styleColors={{ a: '#06b6d4', b: '#8b5cf6', c: '#f43f5e' }} />

{
  /* Metallic: light / base / dark */
}
;<LockIcon
  iconStyle="metallic"
  styleColors={{ light: '#e2e8f0', base: '#94a3b8', dark: '#475569' }}
/>

{
  /* Duotone: foreground / background */
}
;<HeartIcon iconStyle="duotone" styleColors={{ a: '#f43f5e', b: '#fecdd3' }} />

Animations

46 built-in animation presets. Apply any one via the animation prop.

Mechanical

spin · pulse · bounce · shake · wiggle · ping · blink · float · heartbeat · flash · tada · jello · swing · rubberBand · flipX · breathe · wobble · roll

SVG Path

draw · erase · trace

Effects

neon · glitch · flicker · hologram · electric · ghost · burst · heat · crystal · rgbSplit · liquidMorph · aurora · shatter · cinematic

Physics

zoomIn · fadeUp · levitate · springPop · decay · magnetPulse · wobbleSpring

Trigger Modes

{
  /* Plays automatically on mount, loops */
}
;<LoaderIcon animation="spin" trigger="auto" />

{
  /* Plays once on hover */
}
;<BellIcon animation="shake" trigger="hover" playOnce />

{
  /* Plays on click */
}
;<HeartIcon animation="heartbeat" trigger="click" />

{
  /* Plays when scrolled into view */
}
;<StarIcon animation="draw" trigger="visible" playOnce />

Shared Config — IconProvider

Wrap your app (or a section) to set defaults once:

import { IconProvider } from '@beluga-icon/react'
;<IconProvider iconStyle="glass" animation="pulse" trigger="hover" size="lg">
  <SearchIcon /> {/* inherits all provider defaults */}
  <HeartIcon color="#ef4444" /> {/* override individual props */}
</IconProvider>

Accessibility

Icons are decorative by default (aria-hidden="true").

Add a label to expose the icon to screen readers:

{
  /* Decorative — hidden from screen readers */
}
;<HeartIcon />

{
  /* Accessible — announces "Add to favorites" */
}
;<HeartIcon label="Add to favorites" />

When label is provided the icon receives role="img" and aria-label automatically.

Tree Shaking

All exports are named and "sideEffects": false is set in package.json. Only the icons you import are included in your bundle.

import { SearchIcon, HeartIcon, BellIcon } from '@beluga-icon/react'

For the smallest possible import path, you can also import a single icon module:

import { SearchIcon } from '@beluga-icon/react/icons/ui/Search'

Icon Library — 1800+ Icons across 30+ Categories

| Category | Examples | | -------------- | ---------------------------------------------- | | ui | Search, Menu, Settings, Lock, Eye, Edit | | arrows | ArrowUp, ChevronDown, Refresh, CornerUpRight | | status | AlertCircle, CheckCircle, Info, Loader | | files | File, Folder, Download, Upload, Trash | | navigation | Home, MapPin, ExternalLink, Compass | | communication | Mail, Bell, MessageCircle, Phone | | social | Heart, Star, Bookmark, Share, ThumbsUp | | media | Play, Pause, Volume, SkipForward | | commerce | QrCode, PiggyBank, Euro, SaudiRiyal | | development | Code, Terminal, Git, Bug, Api | | devices | Monitor, Tablet, Mobile, Keyboard | | accessibility | EyeOff, Contrast, TextSize, HandPointer | | nature | Leaf, Sun, Moon, Cloud, Wind | | weather | Rain, Snow, Thunder, Fog | | medical | Heart, Pill, Syringe, Stethoscope | | food | Pizza, Coffee, Apple, Fork | | sports | Football, Basketball, Tennis, Trophy | | gaming | Gamepad, Dice, Trophy, Puzzle | | transportation | Car, Plane, Train, Bike | | buildings | House, Office, Hospital, School | | … and more | math, chart, shapes, text, time, layout, users |

→ Browse all icons in the demo

License

MIT. Some icon artwork is derived from or inspired by Lucide Icons and remains subject to the notices in THIRD_PARTY_NOTICES.md.