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

@earthos/ui

v0.1.0

Published

EarthOS UI kit: glass panels, layer controls, timeline, inspector, command palette

Readme

@earthos/ui

The EarthOS control surfaces: layer panel with schema-driven settings forms, timeline, inspector, command palette, and status bar. Styled with the Meridian design system (Efolusi) through CSS custom properties, laid out with Tailwind utility classes.

Install

pnpm add @earthos/ui framer-motion

@earthos/core comes in as a dependency. Peer dependencies, each of which must be deduped to a single instance: react (^19) and framer-motion (^11 || ^12). framer-motion is not optional: GlassPanel, LayerPanel, and CommandPalette import it directly, so a missing peer breaks rendering rather than degrading it.

Styling requirements

Components reference two things the consuming app provides:

  1. Tailwind content scanning. The classes live in this package's src (shipped in the tarball). In your Tailwind v4 CSS entry:
@import 'tailwindcss';
@source '../node_modules/@earthos/ui/src';
  1. Meridian tokens. Components read semantic custom properties (--surface-card, --text-primary, --border-default, --accent-subtle, --radius-lg, --font-mono, and friends). Import the Meridian token sheet (see the flagship app's app/meridian.css for the vendored copy) or map the variables to your own system. Unset variables fall back to browser defaults, which will look broken; the tokens are not optional.

The flagship app (apps/web) is the reference wiring. The 3D packages (@earthos/globe, plugins) have no styling requirements at all.

Components

| Export | Purpose | | ------------------------------------ | --------------------------------------------------------- | | LayerPanel | plugin catalog: toggles, status dots, expandable settings | | SettingsForm | auto-rendered from any plugin's defineSettings schema | | Timeline | play/pause, rate stepping, hour jumps, live re-sync | | Inspector | selected-entity details with fly-to and follow | | HoverCard | cursor-following label for the hovered entity | | CommandPalette | Cmd/Ctrl+K search across all layer entity sources | | StatusBar | camera readout, FPS meter, attribution | | GlassPanel, IconButton, Toggle | the underlying Meridian surfaces |

LayerPanel, Timeline, Inspector, HoverCard, CommandPalette, and StatusBar read the engine through useEarth / useEarthState / useSimTime, so they require an EarthEngineProvider (or <Earth/>) above them. SettingsForm and the GlassPanel / IconButton / Toggle surfaces have no engine dependency: they are prop-driven and render anywhere, SettingsForm taking a schema and a plugin api directly.

See docs/PLUGIN_GUIDE.md for the defineSettings schemas SettingsForm renders and docs/ARCHITECTURE.md for how the engine, globe, and UI fit together.

Part of EarthOS. MIT licensed.