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

@freshost/ui

v0.2.11

Published

Freshost design system — wraps PatternFly v6 (owns it as a dependency), re-exports its components/icons, and ships the Freshost brand theming as one stylesheet. Consuming apps depend only on @freshost/ui.

Readme

@freshost/ui

The Freshost design system — a thin wrapper around PatternFly v6, shared across all Freshost apps.

@freshost/ui owns PatternFly (it's a regular dependency, not a peer dep), re-exports its component and icon surface, and ships the Freshost brand theming as a single stylesheet. Consuming apps depend only on @freshost/ui and never import from @patternfly/* directly — so the PatternFly version is pinned in one place.

The branding recolors PatternFly's brand / link / focus / subtle tokens to the Freshost green (oklch(0.7607 0.1646 155.5)) in both light and dark themes, without touching PatternFly's blue palette (so info stays blue) or red (so danger stays red).

Install

pnpm add @freshost/ui   # or npm i @freshost/ui — published on the public npm registry

react and react-dom (>=18) are peer dependencies the app provides. PatternFly comes transitively through @freshost/ui — you don't install it yourself.

Usage

Import the single stylesheet once, at your app entry. It pulls in PatternFly base

  • utility styles and the Freshost tokens, in the correct order:
import '@freshost/ui/styles.css';

Import components and icons from the wrapper:

import { Button, Card, Toolbar } from '@freshost/ui';
import { PlusIcon } from '@freshost/ui/icons';

Dark mode: add the pf-v6-theme-dark class to the document root (<html>) when dark is active; the tokens flip to their dark Freshost values automatically.

Entry points

| Import | Contents | | --------------------------- | ----------------------------------------------------------- | | @freshost/ui | PatternFly react-core, react-table, react-data-view, and the Data-View react-component-groups symbols | | @freshost/ui/icons | The @patternfly/react-icons set | | @freshost/ui/styles.css | The single stylesheet to import (PF base + addons + tokens) | | @freshost/ui/tokens.css | Brand token overrides only (advanced / manual ordering) |

Storybook

A Storybook renders every PatternFly component in the Freshost branding, with a light/dark toggle:

npm run storybook        # dev server on http://localhost:6006
npm run build-storybook  # static build to storybook-static/

The stories are lifted from the official PatternFly examples and regenerated with npm run gen:stories (see the header of scripts/generate-stories.mjs). They are redistributed under PatternFly's MIT license — see THIRD-PARTY-NOTICES.md.

Theming internals

The brand theming lives in src/freshost-tokens.css, which has an extensive header explaining why it targets the specific PatternFly tier-2 token anchors it does (and why overriding only the three obvious semantic tokens is incomplete). Read it before changing colors.

Releasing

The package is published to npm by CI (.github/workflows/publish.yml) using npm Trusted Publishing (OIDC) — there is no npm token stored in the repo.

To cut a release:

  1. Bump version in package.json.
  2. Commit and push to main.
  3. Create a GitHub Release whose tag is v<version> (e.g. v0.3.0).

The workflow verifies the tag matches package.json, then publishes that version (with provenance). It can also be run manually via Actions → Publish to npm → Run workflow.

One-time setup: on npmjs.com, the @freshost/ui package's Trusted Publisher must point at GitHub org/user Freshost, repo freshost-ui, workflow publish.yml.

License

MIT © Freshost.

This package wraps and redistributes PatternFly (© Red Hat, Inc., MIT). Third-party attributions are listed in THIRD-PARTY-NOTICES.md.