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

@findagent/tokens

v0.1.0

Published

FindAgent design tokens — the single source of the brand palette, typography, borders and shadows, shared across the app, landing, bot and status page as a Tailwind preset + CSS + raw JS values.

Readme

@findagent/tokens — the FindAgent design tokens

The single source of truth for the FindAgent brand: palette, typography, borders, shadows, and shadcn aliases. Consumed by the app (apps/web, via workspace source → instant, no publish) and — once published to public npm — by the landing, the bot, and the status page, so every surface renders identically. Pairs with @findagent/ui (the shared React components), which assumes these tokens are present in the consumer's Tailwind theme.

Build-free: three static entry points, no compile step.

Entry points

| Import | Kind | Use it for | |---|---|---| | @findagent/tokens/tokens.css | CSS | the token values — light (:root) + dark ([data-theme='dark']) custom properties + shadcn aliases | | @findagent/tokens/tailwind | Tailwind preset (CJS) | maps bg-bg, text-fg-muted, shadow-pop, rounded-2xl, tracking-display, … to the CSS vars | | @findagent/tokens | JS/TS | TOKENS, light, dark, cssVars, cssVar(), fonts, radii, tracking — for non-CSS contexts (Workers, OG images, charts, emails) |

Consumer setups

1. A Tailwind app (app / landing / bot)

// tailwind.config.js
const findagent = require('@findagent/tokens/tailwind')
module.exports = {
  presets: [findagent],
  content: ['./app/**/*.{ts,tsx}', './components/**/*.{ts,tsx}'], // consumer-specific
  plugins: [require('tailwindcss-animate')], // consumer-owned
}
/* the global stylesheet — @import ONCE, before @tailwind, so PostCSS inlines
   the CSS vars ahead of the generated utilities */
@import '@findagent/tokens/tokens.css';
@tailwind base;
@tailwind components;
@tailwind utilities;

Set data-theme="dark" (or class="dark") on <html> to flip themes. Override --font-sans / --font-mono if you ship your own webfont (e.g. Next.js next/font); otherwise the fallback chain renders a correct system face.

2. A plain page (no Tailwind)

<link rel="stylesheet" href="/tokens.css" />
<body data-theme="dark" style="background: var(--bg); color: var(--fg)">…</body>

3. A non-CSS context (Cloudflare Worker, OG image, email)

const { dark, fonts, cssVar } = require('@findagent/tokens')
const style = `body{background:${dark.bg};color:${dark.fg};font-family:${fonts.sans}}`
// or reference the themed variable by name:
const border = cssVar('border') // → 'var(--border)'

Token reference

Every token carries a light + dark value, a group, and a purpose (see TOKENS).

| Token | CSS var | Light | Dark | Purpose | |---|---|---|---|---| | Surfaces | | bg | --bg | #ffffff | #0a0a0a | base page background | | bgElevated | --bg-elevated | #ffffff | #161618 | cards, popovers, menus | | bgSubtle | --bg-subtle | #fafafa | #111113 | recessed panels / bands | | bgMuted | --bg-muted | #f4f4f5 | #1f1f23 | muted fills — chips, code | | bgHover | --bg-hover | #f4f4f5 | #1f1f23 | hover surface | | bgActive | --bg-active | #e4e4e7 | #2a2a2f | pressed surface | | bgInverse | --bg-inverse | #0a0a0a | #ffffff | tooltip / toast | | Foreground | | fg | --fg | #18181b | #fafafa | primary text/icon | | fgStrong | --fg-strong | #0a0a0a | #ffffff | headings, key figures | | fgMuted | --fg-muted | #71717a | #a1a1aa | labels, captions | | fgSubtle | --fg-subtle | #6b7280 | #8b8b94 | hints, timestamps (≥4.5:1) | | fgOnAccent | --fg-on-accent | #ffffff | #0a0a0a | text on a brand fill | | Borders | | border | --border | #e4e4e7 | #27272a | hairline divider | | borderStrong | --border-strong | #d4d4d8 | #3f3f46 | focus ring, active outline | | Brand (Industry lens) | | brandAccent | --brand-accent | #18181b | #fafafa | primary accent | | brandAccentHover | --brand-accent-hover | #27272a | #ffffff | accent hover | | brandAccentSoft | --brand-accent-soft | #f4f4f5 | #1f1f23 | selected background | | brandAccentFg | --brand-accent-fg | #0a0a0a | #ffffff | fg on the soft tint | | Discipline lens | | accent2 | --accent-2 | #4f46e5 | #818cf8 | discipline accent (indigo) | | accent2Hover | --accent-2-hover | #4338ca | #a5b4fc | discipline hover | | accent2Soft | --accent-2-soft | #eef2ff | #1e1b3a | unselected tile tint | | accent2Fg | --accent-2-fg | #ffffff | #0a0a0a | fg on the discipline accent | | Status | | success | --success | #16a34a | #4ade80 | success / operational | | warning | --warning | #f59e0b | #fbbf24 | warning / degraded | | danger | --danger | #dc2626 | #f87171 | danger / down | | Shadows | | shadowSmshadowPop | --shadow-sm--shadow-pop | rgba(10,10,10,·) | rgba(0,0,0,·) | elevation ramp |

The Tailwind preset also ships the non-var scales: radii (rounded-smrounded-3xl, 6→16px), tracking (tracking-tight / tighter / display), and the sans / mono font families.

Accessibility

Contrast is baked into the values: fgSubtle clears WCAG 1.4.3 (4.5:1) for text on both themes; the two lens accents each clear AA + AAA against their paired text (accent2 indigo 7.0:1 light / 8.6:1 dark). Keep secondary text on fgMuted / fgSubtle — never on border (decorative).

Source of truth

tokens.css and index.cjs carry the same values; edit a token in both (the JS TOKENS array is the reference; the CSS mirrors it). Origin: the app's globals.css design-token block, extracted 2026-08-15 (FC-2125). Publishing is a private npm release (owner OTP) — the app rides the workspace source regardless, so intra-repo edits are live without a publish.