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

silver-ui

v1.7.1

Published

A comprehensive themeable React component library

Downloads

3,726

Readme

silver-ui

npm version license

A complete, themeable React component library, built with Panda CSS.

Documentation — components with live examples and API reference.

Storybook — browse and interact with all components.

Installation

npm install silver-ui
# or
pnpm add silver-ui
# or
yarn add silver-ui

silver-ui requires React 19+ as a peer dependency.

Usage

Import the stylesheet once in your app's entry point, then use components:

import 'silver-ui/styles.css';
import {Button, Card, Heading, Text} from 'silver-ui';

function App() {
  return (
    <Card padding={4}>
      <Heading level={2}>Welcome back</Heading>
      <Text>Your project is ready to deploy.</Text>
      <Button
        label="Deploy"
        onClick={() => console.log('Deploying…')}
        size="md"
        variant="primary"
      />
    </Card>
  );
}

For smaller JS bundles, import component subpaths:

import 'silver-ui/styles.css';
import {Button} from 'silver-ui/Button';
import {SideNav, SideNavItem} from 'silver-ui/SideNav';

Theming

The easiest way to theme silver-ui is the <Theme> component. It maps friendly token names to the underlying CSS variables and applies them app-wide or to a scoped subtree. Wrap your app (or any branded area) and override the tokens you care about:

import {Button, Theme} from 'silver-ui';

export function App() {
  return (
    <Theme
      mode="light"
      tokens={{
        colors: {
          primary: 'teal-500',
          primaryHover: 'teal-600',
          primaryActive: 'teal-700',
        },
        radii: {componentMd: '0.5rem'},
        fonts: {body: 'Inter, system-ui, sans-serif'},
      }}>
      <Button label="Save" />
    </Theme>
  );
}

Palette references (teal-500) and custom CSS values (#e11d48, oklch(...), var(...)) are both supported, and multiple <Theme> regions can coexist on one page.

Prefer plain CSS? Every component is driven by --silver-* variables, so you can override them directly. All library styles use CSS @layer, so your overrides always win without specificity battles.

:root {
  --silver-colors-primary: #e11d48;
  --silver-colors-primary-hover: #be123c;
  --silver-colors-primary-active: #9f1239;
  --silver-radii-component-md: 0.5rem;
  --silver-fonts-body: Inter, system-ui, sans-serif;
}

Variables can be scoped to containers, dark mode ([data-theme="dark"]), or individual instances via className/style props.

See THEME.md for the full <Theme> API, variable reference, dark mode details, scoped theming examples, and per-instance overrides.

Components

Layout & Structure

  • Accordion — collapsible content sections
  • AppShell — application-level layout shell with responsive mobile navigation
  • AspectRatio — constrains children to a fixed aspect ratio
  • Card — rounded container surface for grouping content
  • Center — centers content horizontally, vertically, or both
  • Divider — visual separator between sections
  • Grid — responsive equal-width columns with minimum-child-width reflow
  • Layout — page shell with header, footer, side panels, and content slots
  • OverflowList — shows the items that fit and collapses the rest into a custom overflow indicator
  • HStack / VStack — horizontal and vertical flex containers with gap

Typography

  • Blockquote — styled quotation block
  • CodeBlock — read-only code display with line numbers, line highlighting, and copy button
  • Kbd — keyboard shortcut display with accessible labels
  • Text / Heading — typography primitives with size, color, and truncation

Navigation

  • Breadcrumbs — hierarchical page location trail
  • Link — polymorphic link with external link handling and router integration
  • NavIcon — circular accent-colored icon container for navigation headers
  • Pagination — page navigation controls
  • SideNav — vertical side navigation panel with collapsing support
  • Stepper — multi-step progress indicator
  • Tabs — tabbed content switching
  • TopNav — horizontal top navigation bar

Buttons & Actions

  • Button — versatile action element supporting links, loading states, and icon-only mode
  • ButtonGroup — connected group of related buttons
  • ContextMenu — right-click context menu
  • DropdownMenu — button-triggered dropdown menu
  • SegmentedControl — mutually exclusive option selector
  • SplitButton — primary action paired with a dropdown menu of related actions
  • ToggleButton — button with pressed/unpressed state
  • Toolbar — slotted action bar with roving-tabindex keyboard navigation and size cascading

Forms

  • AutocompleteInput — searchable autocomplete input (combobox)
  • CheckboxGroup — controlled checkbox group for multi-value selection
  • CheckboxInput — checkbox with label and description
  • ColorSwatchPicker — swatch picker for the named theme palette
  • Field — form field wrapper with label, description, and validation
  • Fieldset — native legend container for normally stacked, related fields
  • FileInput — file upload with drag-and-drop support
  • InputGroup — combines controls and addons into one connected input row
  • MultiSelect — multi-value dropdown selector
  • NumberInput — numeric input with increment/decrement
  • PasswordInput — text input with show/hide toggle
  • PinInput — multi-cell PIN and one-time-code input
  • RadioGroup — radio button group
  • Rating — star rating input
  • SearchFilterInput — search input with structured filter tags
  • Select — single-value dropdown selector
  • Slider — range slider with marks and labels
  • Switch — toggle switch
  • TagsInput — free-form tag entry field
  • TextArea — multi-line text input
  • TextInput — single-line text input

Dates & Time

  • Calendar — date picker calendar grid with single and range selection
  • DateInput — date picker field
  • DateRangeInput — date range picker field
  • DateTimeInput — combined date and time picker
  • Schedule — event calendar with day, week, month, and list views
  • TimeInput — time picker field
  • Timestamp — displays a point in time as relative or absolute text

Data Display

  • Avatar — user or entity avatar with status indicators
  • AvatarGroup — stacked avatar collection with overflow count
  • Badge — small status label with icon support
  • Icon — renders Lucide icons with size and color tokens
  • Image — responsive image with intrinsic loading and error fallback
  • Item — generic list item with icon, label, and description
  • List — ordered or unordered list with dividers
  • MetadataList — key-value metadata display
  • Stat — prominent label/value summary with optional change, context, and icon
  • Table — data table with sorting, filtering, and column resize plugins
  • Tag — removable label for categories or filters
  • Thumbnail — image preview with fallback and remove action
  • Timeline — ordered chronological event sequence with timestamps and custom indicators
  • TreeView — hierarchical expandable tree

Chat & Messaging

  • Chat — composable chat/message UI: layout with streaming auto-scroll, message list, bubbles, metadata, system messages, and a composer with send/stop

Feedback & Status

  • Alert — dismissable notification banner
  • EmptyState — placeholder for empty content areas
  • Progress — determinate progress bar
  • Skeleton — loading placeholder with pulse animation
  • Spinner — indeterminate loading indicator
  • Toast — temporary notification popup

Overlays

  • AlertDialog — confirmation dialog requiring explicit action
  • Dialog — modal dialog with header and content
  • Drawer — slide-in panel from screen edge
  • HoverCard — rich content popup on hover
  • Lightbox — full-screen media viewer
  • Popover — anchored popup with arbitrary content
  • Tooltip — informational popup on hover or focus

Utilities

  • Theme — scoped theme provider backed by CSS custom properties
  • VisuallyHidden — hides content visually while keeping it available to screen readers

Hooks

The primitives silver-ui's own components are built on are published from silver-ui/hooks, so you can build custom widgets that behave the same way.

import {
  useAnnounce,
  useHotkey,
  useListFocus,
  useTypeahead,
} from 'silver-ui/hooks';
  • useAnnounce — visually hidden polite and assertive live regions, plus an announce(message, politeness?) function
  • useHotkey — global, IME-safe keyboard shortcuts with exact modifier matching and automatic listener cleanup
  • useListFocus — roving-tabindex keyboard navigation over a list of elements (arrow keys, Home/End, wrapping, RTL)
  • useTypeahead — WAI-ARIA typeahead: multi-character search, repeat-press cycling, and wrap-around matching
  • useConstant — computes a value once and returns the same reference for the lifetime of the component

useHotkey(keys, handler, options?) accepts one case-insensitive descriptor such as f6, shift+k, or mod+k. Separate tokens with +; supported modifiers are mod, ctrl, alt, and shift, and the special-key vocabulary matches Kbd: enter, backspace, escape, tab, up, down, left, right, and plus. mod resolves to Command on Apple platforms and Control elsewhere.

The listener targets document by default; pass target: 'window' or a React ref to listen elsewhere. It is enabled by default and does not call preventDefault() unless hasPreventDefault: true is set. Composition events are always ignored, and shortcuts do not fire from inputs, selects, textareas, editable content, or textbox roles unless isEnabledOnFormElements: true is set. Sequences and priority arbitration between duplicate registrations are not supported.


Contributing

See CONTRIBUTING.md for setup, development scripts, and component contribution guidelines.

License

MIT