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

iza-ui

v0.4.0

Published

A small set of genuinely non-trivial, reusable UI primitives: WindowCard, Dock, AmbientCanvas, PlasmaLogoMark, PhoneMockup, GlowButton, GradientHeading.

Readme

iza-ui

A small set of genuinely non-trivial, reusable UI primitives — not a full design system. No Button/Input/Textarea here on purpose: those take a competent dev minutes to rebuild and aren't worth an external dependency. What's here is the stuff with real engineering behind it.

Install

npm install iza-ui
import "iza-ui/styles.css"; // once, anywhere in your app
import { Dock, WindowCard, AmbientCanvas, PlasmaLogoMark, PhoneMockup, GlowButton, GradientHeading } from "iza-ui";

No Tailwind config, no CLI, no copy-paste — styles are precompiled and ship with the package.

Components

Dock

A floating macOS-style magnification dock: hover an item and it scales up, lifts, and pushes its neighbors aside without ever overlapping them.

<Dock
  items={[
    { key: "home", label: "Home", icon: <HomeIcon />, href: "/", active: true },
    { key: "docs", label: "Docs", icon: <DocsIcon />, href: "/docs" },
  ]}
/>

WindowCard

A frosted-glass "OS window" shell — a chrome bar (with an optional functional close dot) above a content slot.

<WindowCard onClose={() => setOpen(false)}>
  <div className="p-8">Your content</div>
</WindowCard>

AmbientCanvas

A full-viewport WebGL fragment shader — a halftone dot grid with a pointer-reactive brush trail. Respects prefers-reduced-motion, skips WebGL entirely on low-power devices, and lazy-loads three so pages that never mount it don't pay for the dependency.

<AmbientCanvas />

PlasmaLogoMark

A fluid plasma fragment shader (raw WebGL, no three) masked to the silhouette of a logo image — the image renders underneath as the SSR/no-WebGL fallback, and the canvas occludes it once mounted.

<PlasmaLogoMark src="/logo.png" alt="Your logo" />

PhoneMockup

A skeuomorphic iPhone mockup with a looping chat-typing → send → notifications animation (GSAP timeline, repeat: -1) and mouse-driven 3D tilt. Purely decorative (aria-hidden); respects prefers-reduced-motion by rendering the resting frame with no loop.

<PhoneMockup
  eyebrow="Live Preview"
  title="Your Workspace"
  chatPlaceholder="Ask anything…"
  chatPrompt="Design a portfolio site for a photographer."
  notifications={[
    { icon: <BellIcon />, title: "New message", time: "2m" },
    { icon: <MailIcon />, title: "Invite sent", time: "5m" },
    { icon: <LinkIcon />, title: "Generating…" },
    { icon: <CheckIcon />, title: "Deploy complete", time: "1h" },
  ]}
/>

GlowButton

A CTA pill with a hover sheen-sweep and a touch-device fallback: tapping shows the sheen via a manual .is-active class, then fires onClick ~450ms later so the effect is actually visible before anything (e.g. navigation) unmounts it.

<GlowButton onClick={() => router.push("/work")}>Start a Project</GlowButton>

GradientHeading

A large heading treatment in two variants: "matte" (solid color with a soft layered text-shadow) and "silver" (gradient-clipped text with a matching layered drop-shadow). Both read the --color-on-surface CSS variable, so they retint automatically with the .light theme class. Plays a one-shot entrance animation on mount by default (matte fades/rises out of a blur, silver wipes in via clip-path) — pass animate={false} to skip it, or delay to stagger a second heading after the first.

<GradientHeading as="h1">Tell me about the project,</GradientHeading>
<GradientHeading as="h1" variant="silver" delay={0.6}>we'll design it.</GradientHeading>

Peer dependencies

react, react-dom, framer-motion, next (only Dock/DockItem/GlowButton use next/link — v1 targets Next.js apps). three and gsap ship as regular dependencies since they're not something most consumers already have installed.

Theming

Components read a small set of CSS variables (--color-primary, --color-on-surface, --color-surface, --glass-bg, --glass-border). Add a .light class to <html> (or any ancestor) to switch to the light values shipped in styles.css.