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

@bpdm/ui

v0.1.4

Published

A modern, themeable, accessible React component library — Radix primitives, Tailwind 4, and a warm amber design system.

Downloads

32

Readme

@bpdm/ui

A modern, themeable, accessible React component library38 components built on Radix primitives and Tailwind CSS 4, with a warm amber design system, four built-in themes (light & dark), and one consistent motion language.

npm version license types

Live demo & docs → ui.bpdm.dev — interactive Storybook with every component, variant, and theme.

The React implementation of the bpdm design system — one shared set of design tokens, built natively for React and Angular so the same components look and behave identically in both. Using Angular? Install @bpdm/ng. See the monorepo overview.


Features

  • 38 components across forms, selection, data display, overlays, feedback, and navigation.
  • Accessible by default — keyboard, focus, and ARIA handled via Radix primitives (role, aria-*, roving focus); built following WCAG 2.1 AA + WAI-ARIA patterns and checked with axe on every release. (A design goal, not a conformance claim — see the accessibility notes.)
  • Themeable — every component reads semantic CSS variables; switch the whole UI with one data-theme attribute, or override variables to match your brand.
  • Four built-in themespaper & mist (light), charcoal & slate (dark).
  • One motion language — shared easing/duration tokens drive every transition; honors prefers-reduced-motion.
  • Typed — full TypeScript types and prop-level autocomplete.
  • Tree-shakeable — ESM + CJS, sideEffects: false; only what you import ships.
  • Light footprint — Tailwind class strings, no runtime CSS-in-JS.

Install

pnpm add @bpdm/ui
# peers: react ^18 || ^19, react-dom ^18 || ^19, and tailwindcss ^4

Compatibility

| Dependency | Supported | Notes | | --- | --- | --- | | React / react-dom | 18.x · 19.x | declared as a peer (^18 \|\| ^19) | | Tailwind CSS | 4.x (required) | the tokens use Tailwind 4 syntax (@theme inline, custom variants); declared as a peer | | TypeScript | 5.x or newer | optional — full types ship with the package | | Node | ≥ 20 | for local development only; the package itself is browser code |

Support policy: we support the current and previous major of React (today: 18 & 19). Older majors are best-effort and may be dropped in a minor release, always noted in the changelog. Tailwind CSS 4 is required — the design tokens won't compile on Tailwind 3.

Setup

@bpdm/ui ships Tailwind class names, so your app's Tailwind generates the styles. In your global CSS:

@import "tailwindcss";
@import "@bpdm/ui/styles.css";                  /* design tokens + themes */
@source "../node_modules/@bpdm/ui/dist";        /* the components */
@source "../node_modules/@bpdm/variants/dist";  /* the shared variant classes */

Pick a theme on any ancestor (default is paper):

<html data-theme="paper">    <!-- light · warm (default) -->
<html data-theme="mist">     <!-- light · cool -->
<html data-theme="charcoal"> <!-- dark · warm -->
<html data-theme="slate">    <!-- dark · cool, enterprise -->

Usage

import { Button, Input, Checkbox } from "@bpdm/ui";

export function Example() {
  return (
    <form className="space-y-3">
      <Input placeholder="[email protected]" type="email" />
      <label className="flex items-center gap-2">
        <Checkbox /> Remember me
      </label>
      <Button>Sign in</Button>
    </form>
  );
}

Import from the package root, or deep-import a single component by its file name — both are tree-shakeable; the per-component subpath guarantees only that module is pulled in:

import { Button } from "@bpdm/ui";            // barrel (tree-shaken)
import { Button } from "@bpdm/ui/button";     // single component
import { DatePicker } from "@bpdm/ui/calendar";

Components

ActionsButton

InputsInput · Textarea · NumberInput · MoneyInput · PasswordInput · SecureField · InputOtp · FloatLabel · DatePicker

SelectionCheckbox · RadioGroup · Switch · Select · MultiSelect · TreeSelect

Data DisplayCard · Avatar · Badge · StatCard · StatusTimeline · DataTable · OrderList · PickList

OverlayDialog · Drawer · Popover · Tooltip · ConfirmDialog · DynamicDialog · StepDialog

FeedbackToast · Alert · Spinner · ProgressBar

NavigationTabs · Accordion · Stepper

A few highlights:

| Component | Highlights | | --- | --- | | DataTable | sorting, multi-select, paging (client / server / cursor), column pinning + reorder, filters, frozen columns, virtualization, responsive card mode | | DatePicker | single & range, multi-month, month/year dropdowns, configurable presets, min/max + disabled days — zero date-lib dependency | | Select / MultiSelect / TreeSelect | virtualized (10k+ rows), searchable, grouped, chips with overflow | | NumberInput / MoneyInput | precision-safe (string + bignumber.js), no float drift | | Toast | imperative toast() API, toast.promise(), swipe-to-dismiss, six positions | | Stepper | horizontal / vertical, linear + validation gating, lock indicator | | OrderList / PickList | select & reorder / transfer between lists, drag-and-drop |

Every component has live examples and copy-pasteable code on ui.bpdm.dev.

Theming

Components never hardcode colors — they read CSS variables (--primary, --background, …). Re-brand by overriding those variables, globally or scoped:

:root {
  --primary: #7c3aed;          /* your brand color     */
  --ring: #7c3aed;             /* matching focus ring  */
  --primary-foreground: #fff;  /* text on primary      */
}

A starter theme template (with the full required/optional variable reference) is on the Theming → Custom Theme Template page in the docs.

Local development

This package lives in the bpdm-ui monorepo. From the repo root:

pnpm install
pnpm storybook   # interactive docs at http://localhost:8100
pnpm build       # bundle the library (tsup → ESM + CJS + d.ts)
pnpm typecheck   # tsc --noEmit

Or scope a command to this package directly with pnpm --filter @bpdm/ui <script>.

Contributing

Conventions, project structure, and how to add a component are in CONTRIBUTING.md.

License

MIT © bpdm