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

greyui

v0.6.2

Published

BeOS R5 / Haiku-inspired React component library extracted from WorkbenchOS.

Readme

greyUI

greyUI is a standalone BeOS R5 / Haiku-inspired React component library derived from WorkbenchOS. Base UI provides keyboard, focus, positioning, and ARIA behavior for compound controls.

You can find the full set of interactive example components at https://greyui.questionable.services/

Install

npm install greyui

Import the shared stylesheet once. Named root imports remain the default:

import { Button, Input, Window } from "greyui";
import "greyui/styles.css";

Component subpaths are available for explicit imports:

import { Button } from "greyui/components/button";
import { Select } from "greyui/components/select";
import "greyui/styles.css";

Both forms use the same build graph. CI checks that representative root imports tree-shake to comparable consumer bundles as their component subpaths. React and React DOM remain peer dependencies.

API conventions

  • Simple controls accept native props; compound controls use Root plus named parts and Base UI behavior. Use the Base UI reference for exhaustive primitive props.
  • Consumers provide labels and accessible names. Wrap overlay-heavy apps in Layer.Provider.
  • Window adapts to its own inline size with chrome="auto". Use chrome="floating" or chrome="stacked" when geometry must remain fixed. The deprecated responsive adapter remains available throughout 0.6.x and is scheduled for removal no earlier than 0.7.0.

Common distinctions

  • Select is fixed-list; Combobox searches listed values; Autocomplete keeps free-form text valid.
  • Form popups match their anchor by default. Use Select popupWidth="content" or Combobox.Popup/Autocomplete.Popup width="content" for longer lists; all three accept positionerProps.
  • GroupBox is visual grouping; Fieldset adds form semantics. Use Fieldset.Root variant="plain" with an accessible name when surrounding chrome supplies the visual boundary.
  • Button emphasis (variant="primary"), default action (defaultAction), selection (aria-pressed), and keyboard focus are independent states.
  • Field.ActionRow bottom-aligns labeled controls such as Select with adjacent buttons. Its layout="auto" default follows its own container; "inline" and "stacked" are explicit overrides.

Use locally

Build greyUI:

git clone https://github.com/elithrar/greyUI.git
cd greyUI
npm install
npm run build

Then install that local build from your app:

npm install /path/to/greyUI

Components

  • Inputs: Input, Textarea, Field, InputGroup, NumberField, Select, Combobox, DatePicker, Autocomplete, Fieldset
  • Controls: Button, IconButton, ButtonGroup, ToggleButton, SegmentedControl, Checkbox, RadioGroup, Switch, Slider, CheckboxGroup, ToggleGroup
  • Desktop UI: Tabs, Menu, ContextMenu, Toolbar, Collapsible, Popover, Tooltip, Dialog, AlertDialog, Layer, Accordion
  • Feedback and content: Banner, Breadcrumbs, Empty, Loader, Pagination, Progress, Meter, SegmentedMeter, Toast, ScrollArea, Table, Badge, GroupBox, Separator
  • Window chrome: Window (Window.Widget, Window.MenuBar, Window.StatusBar.*)

Window supports controlled/uncontrolled collapse and container-aware chrome="auto" behavior; use "floating" or "stacked" to override its chrome geometry. Use Window.Content for standard body rails and compose Window.Header, Window.Description, and Window.Actions for in-body headers. Window.Header also accepts layout="auto" | "inline" | "stacked". The legacy responsive prop remains as a deprecated adapter. Popover.Popup.positionerProps accepts Base UI positioning options such as virtual anchors.

Window.MenuBar coordinates sibling Menu.Root components with menubar semantics, including arrow-key traversal and open-menu handoff. Menu includes item, link, checkbox, radio, group, and submenu primitives; Menu.Popup.positionerProps exposes Base UI positioning options for edge cases and nested menus.

For 0.5 migrations, replace responsive="stacked" with chrome="auto" and responsive="floating" with chrome="floating". If both props are present, chrome wins. Window.Header and Field.ActionRow become container-aware by default without markup changes; set their layout prop only when an explicit inline or stacked arrangement is required.

Layer.Provider routes overlays into stable top-level hosts; Layer.Portal exposes the same contract for custom content.

Development

npm install
npm run check
npm run build
npm run perf:package

npm run check runs Oxfmt, Oxlint + anti-slop, TypeScript, and Vitest. npm run perf:package checks package entrypoints and bundle costs; CI also validates the tarball and docs deployment.

Docs

npm run dev:docs
npm run verify:docs
npm run deploy:docs

The docs site deploys docs/dist with Cloudflare Workers Static Assets; no Worker runtime code is required.

Design provenance

The visual system is derived from WorkbenchOS's BeOS/Haiku design language. Kumo UI informs package ergonomics; Base UI provides headless behavior for compound primitives. greyUI ships original CSS and generic control geometry, not BeOS or Haiku artwork or system assets.