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

@bounded-systems/brand

v1.4.0

Published

Design system for Bounded Systems — tokens/CSS (MIT) plus brand identity artwork (proprietary, all rights reserved, see LICENSE).

Readme

Bounded Systems — Brand

Identity assets and design tokens for Bounded Systems. Bounded authority for AI agents — drawn at the door, not the process or container.

The mark is the capability model made physical: a room (the boundary), a door (the gap — one sanctioned unit of authority), and an agent (the guest, sitting low near the door).

brand/
├── tokens/
│   ├── tokens.json        ← SOURCE OF TRUTH (W3C design tokens)
│   ├── tokens.css         ← generated CSS variables + text styles (do not hand-edit)
│   └── build-tokens.mjs   ← generator; `--check` fails CI on drift
├── css/                   ← ready-to-link stylesheets for web consumers
│   ├── fonts.css          ← @font-face Space Grotesk + IBM Plex Mono (self-hosted)
│   ├── fonts/             ← the woff2 files (OFL, latin subset) — no external CDN
│   └── base.css           ← resets + element defaults on the tokens
├── mark/                  ← logo only, transparent
│   ├── mark-white.svg     ← on forest / dark
│   ├── mark-forest.svg    ← on light
│   └── *-1024.png
├── avatar/                ← square masters (surfaces mask to rounded/circle)
│   ├── avatar-forest.svg  ← recommended
│   ├── avatar-light.svg
│   └── avatar-{forest,light}-{200,280,420,460,1024}.png
├── lockup/                ← wide link-card lockup (OG 1.91:1, 1200×630)
│   ├── lockup-forest.svg  ← repo social preview
│   └── lockup-light.svg
├── favicon-32.png
├── style-dictionary.config.mjs  ← native / Figma outputs → dist/ (gitignored)
└── package.json           ← build:css · check · build:sd

Tokens

tokens.json is the only file you edit. Everything else is generated.

node tokens/build-tokens.mjs          # regenerate tokens.css
node tokens/build-tokens.mjs --check  # exit 1 if tokens.css is stale (CI)

Wire the check into the pipeline so the CSS can never drift from the JSON:

# .github/workflows/tokens.yml (sketch)
- run: node brand/tokens/build-tokens.mjs --check

Layers

| Layer | What | Example | | --- | --- | --- | | Primitive token | one named value | color.forest = #0C5A42 | | Text style (composite) | a recipe bundling primitives | text.label → mono + 11px + 0.14em + uppercase | | Component | the mark, built from tokens | mark/*.svg |

The slug / eyebrow ("AVATAR SYSTEM · v1") is the text.label style — not a single token, but a composite that references font.mono, size.text-label, etc. Consume it as the .bs-text-label class or read its parts from JSON.

Consuming

CSS / web — import the generated variables and styles:

@import "brand/tokens/tokens.css";
.eyebrow { } /* or just add class="bs-text-label" */
h1        { color: var(--bs-color-ink); }

Anything that can't read CSS (native iOS/Android, email, Figma, print) reads tokens.json directly, or builds a platform output from it via Style Dictionary:

npm install
npm run build:sd   # → dist/{tokens.scss,tokens.js,tokens.flat.json,Tokens.swift,tokens.xml}

tokens.css stays the curated web artifact (it carries the composite .bs-text-* classes); Style Dictionary covers everything else. dist/ is gitignored — it's generated, never committed. JSON is the source; every CSS, SCSS, JS, Swift, and XML file is a derived artifact.

As a package — depend on @bounded-systems/brand (npm) and import by path:

import tokens from "@bounded-systems/brand/tokens.json" with { type: "json" };
@import "@bounded-systems/brand/tokens.css";

Deployed token bundle (a contract, not a dump)

npm run tokens:dist assembles dist/tokens-site/ and deploy-tokens.yml publishes it to a stable URL on every release. The bundle is a versioned, content-addressed contract:

tokens-site/
├── manifest.json     ← the contract — validates against tokens/manifest.schema.json
├── tokens.json       ← canonical DTCG source  (application/design-tokens+json)
├── tokens.css        ← CSS variables           (text/css)
├── tokens.scss · tokens.js · tokens.flat.json · Tokens.swift · tokens.xml

manifest.json declares every projection with its IANA media type and SHA-256, plus the package version and (in CI) the source commit. A consumer fetches the manifest, picks a format, and verifies the bytes by hash — integrity over freshness. node tools/build-tokens-dist.mjs --check gates DTCG conformance and the contract shape in CI, so the deployed surface can't drift from the spec.

Fonts: Space Grotesk + IBM Plex Mono (Google Fonts).

Palette

| Token | Hex | Use | | --- | --- | --- | | forest | #0C5A42 | primary fill, mark on light | | forest-deep | #073D2C | pressed / deep | | forest-tint | #E2EBE6 | subtle tinted surface | | forest-soft | #D2E0D8 | fills / borders on tinted surfaces | | paper | #EDEAE1 | app background, warm | | card | #FFFFFF | card surface (aliases white) | | card-alt | #F4F1EA | light avatar fill | | ink | #16221C | primary text | | ink-soft | #5C6B63 | secondary text | | ink-mono | #5E6B62 | mono label / slug text (WCAG-AA on paper) | | line | #E4E0D4 | hairline borders | | white | #FFFFFF | mark on forest | | clay | #A6432F | accent / negative | | clay-tint | #F2DED8 | negative surface | | amber | #B5762A | caution / highlight | | amber-tint | #F3E8D6 | caution surface |

Grade colors

Status colors for graded claims (Enforced · Partial · Aspirational). Only the base is authored in tokens.json; build-tokens.mjs derives the -bg (light surface), -fg (readable text), and -on-dark ramps deterministically, so consumers get the full set as --bs-grade-* variables.

| Token | Hex | Use | | --- | --- | --- | | grade-enforced | #3FB984 | proven / enforced in running code | | grade-partial | #C8902F | partially enforced | | grade-aspirational | #7E8C83 | aspirational / not yet enforced |

Token accessibility

Token-level accessibility is a gated contract, not a vibe. The brand vendors the Token Accessibility suite from bounded-systems/conformance-kit (hash-pinned in vendor/conformance-kit/, PR #25), and one config — tokens/token-a11y.json — drives every member over the generated tokens.css:

| Member | Checks | WCAG | | --- | --- | --- | | palette | CVD-safe contrast (deutan/protan/tritan), APCA, non-text | 1.4.3 / 1.4.11 | | pairing | derives fg×bg pairings from the brand CSS ∪ declared set (report-only superset) | — | | typography | body line-height ≥1.5, overridable spacing, min size, weight×size | 1.4.12 / 1.4.4 / 1.4.8 | | target-size | interactive-target tokens ≥24×24; ≥44 status | 2.5.8 AA / 2.5.5 AAA | | opacity | EFFECTIVE composited contrast of any translucent foreground | 1.4.3 / 1.4.11 | | likeness | near-duplicate hygiene + categorical distinctness (normal + CVD) | 1.4.1 |

npm run token-a11y         # verify the vendor hash-pin, then run the whole suite
npm run token-a11y:check   # rebuild tokens.css first, then run (the CI entrypoint)
npm run token-a11y:verify  # only verify the vendored suite against its hash-pin

Fail-closed (exit 1) on any gated-member failure. No exemptions — hairlines, dividers, and separators are declared ui and must clear 3:1; accessible for everyone. CI: .github/workflows/token-a11y.yml.

Interactive-target (control) tokens

So every surface has an accessible pointer-target token to reach for (WCAG 2.5.8):

| Token | Value | Use | | --- | --- | --- | | control-min-tap-target | 24px | SC 2.5.8 (AA) floor — apply as min-width/min-height on any control | | control-sm | 36px | compact control (chips, dense toolbars) | | control-md | 44px | default control — also meets 2.5.5 (AAA, 44px) | | control-lg | 52px | prominent / primary control |

Avatar usage

  • Upload avatar/avatar-forest-460.png as the GitHub org avatar (or the SVG master). GitHub masks to rounded-square / circle itself — the mark sits inside a ~16% safe area so the door never clips.
  • Forest is the hero treatment. Light is for placing on dark/photographic backgrounds.
  • Don't recolor the mark, rotate it, add effects, or close the door gap.
  • Below 20px, prefer favicon-32.png.

Link cards / social preview

The square avatar center-crops badly on wide (~1.91:1) social/link cards and clips the door. Use the dedicated wide lockup instead:

  • Set lockup/lockup-forest-1200.png as the repo's social preview (Settings → Social preview). lockup-light-* is for light/photographic contexts.
  • 1200×630 (OG), mark + wordmark + slug + tagline, with safe margins.
  • SVG masters carry live text; the *-1200.png rasters (Space Grotesk + IBM Plex Mono baked in) are what social/link cards should point at — most platforms (Slack, X, iMessage) won't render an SVG OG image.