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

@arthur2079/whale2

v0.4.0

Published

Whale design system — Radix Themes and custom components for React 18 & 19

Readme

@arthur2079/whale2

Whale design system. Components from Radix Themes plus custom Whale components, exported from a single entry point.

Works with React 18 and 19, in Vite and Next.js (Pages or App Router).

Install

yarn add @arthur2079/whale2

react and react-dom are peer dependencies. @radix-ui/themes is a regular dependency, so you do not need to install it yourself.

Usage

Import the stylesheet once at the root of your app, then wrap it in WhaleProvider:

import { WhaleProvider, Button } from '@arthur2079/whale2';
import '@arthur2079/whale2/styles.css';

export default function App() {
  return (
    <WhaleProvider>
      <Button variant="solid" size="2">
        Click me
      </Button>
    </WhaleProvider>
  );
}

Next.js App Router

Import the stylesheet in app/layout.tsx. WhaleProvider and every component already carry the 'use client' directive, so they can be used directly from a server component without wrapping them yourself.

import { WhaleProvider } from '@arthur2079/whale2';
import '@arthur2079/whale2/styles.css';

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <WhaleProvider>{children}</WhaleProvider>
      </body>
    </html>
  );
}

Theming

WhaleProvider accepts every Radix Theme prop and forwards it untouched, so Radix's own defaults apply — including grayColor="auto", which picks a gray tuned to the current accent.

<WhaleProvider accentColor="jade" appearance="dark" radius="large">
  {children}
</WhaleProvider>

Whale intentionally does not override these yet. It is the right place for brand-level defaults once there are values worth setting; restating Radix's own defaults here would only shadow them.

Components

| Component | Source | Needs WhaleProvider | | --------------- | -------------------------- | --------------------- | | Button | Radix Themes (re-exported) | yes | | WhaleProvider | Whale | — |

Source layout mirrors this split: everything under src/radix is built on Radix Themes and requires WhaleProvider. Whale's own custom components live outside that folder and depend on neither Radix nor the provider.

Notes

@arthur2079/whale2/styles.css @imports the Radix Themes stylesheet and then adds Whale's own styles, so one import is all you need. Your bundler resolves that bare specifier, which also means it can dedupe the Radix rules if something else in your app imports them directly.