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

paperline

v1.0.1

Published

Paperline is a warm, editorial design system for any app.

Readme

Paperline

Paperline is a warm, editorial design system for any app: paper-toned surfaces, refined plum accents, Instrument Serif paired with Instrument Sans, curated 1.6-stroke icons, and small React primitives built on CSS variables.

What's Included

src/
  styles/paperline.css    Design tokens, themes, utility classes
  icons.jsx               ESM icon exports
  components.jsx          ESM React component exports
  index.jsx               Main package entry
dist/
  paperline.css           Copy-paste CSS artifact
  *.global.jsx            Browser globals for static demos
docs/
  index.html              Design system spec (all tokens, components, icons)
  standalone.html         Self-contained spec bundle
examples/
  browser.html            Minimal single-card integration
  dashboard.html          Product dashboard — sidebar nav, stats, table, activity feed
  settings.html           Settings page — profile form, toggles, danger zone, modal
  onboarding.html         Multi-step onboarding flow — plan picker, role selector, success state

Live Examples

Open these in a browser (npm run docshttp://localhost:8000) to see the system assembled into realistic product screens:

| Example | What it shows | |---|---| | examples/dashboard.html | Sidebar nav, stat cards, filterable project table with progress bars, team member list, activity feed, and a CSS bar chart — all dark-mode toggleable. | | examples/settings.html | Multi-section settings page with profile form, notification toggles, appearance picker, and a confirm-delete danger zone with a modal. | | examples/onboarding.html | 4-step onboarding card flow: account creation, role picker, plan selector, and a success state with animated step dots. | | examples/browser.html | Minimal single-card integration — the smallest possible starting point. | | docs/index.html | Full design-system spec: every token, component, and icon documented interactively. |

Dashboard example

Settings example

Use the Tokens

Load the fonts and CSS, then apply pl-root to your application shell.

<link href="https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="dist/paperline.css" />
<body class="pl-root">...</body>
.primary-action {
  background: var(--pl-accent-500);
  color: var(--pl-accent-ink);
  border-radius: var(--pl-r-md);
  box-shadow: var(--pl-shadow-sm);
  font-family: var(--pl-font-sans);
}

Use the React Primitives

Paperline exports pre-compiled ESM and CJS and keeps React as a peer dependency. No bundler configuration needed.

import "paperline/styles.css";
import { I, PLBadge, PLButton, PLStat } from "paperline";

export function DashboardHeader() {
  return (
    <div>
      <PLButton kind="primary" icon={I.Plus}>New project</PLButton>
      <PLBadge tone="ok" dot>Active</PLBadge>
      <PLStat label="Revenue" value="$48.2k" delta="+12%" tone="ok" />
    </div>
  );
}

Browser-Only Usage

For prototypes or static pages, use the files in dist/ with React, ReactDOM, and Babel Standalone:

<link rel="stylesheet" href="dist/paperline.css" />
<script type="text/babel" src="dist/paperline-icons.global.jsx"></script>
<script type="text/babel" src="dist/paperline-components.global.jsx"></script>

Full Usage Guide

See docs/USAGE.md for an end-to-end guide: bundled-React vs. static-HTML setup, the full token cheat sheet, every component's prop signature, and a section on driving Paperline from coding agents like Claude Code and Codex.

Component Surface

The current PL* primitives, all exported from paperline:

  • Forms: PLButton, PLInput, PLTextarea, PLSelect, PLToggle, PLCheckbox, PLRadio, PLField
  • Display: PLBadge, PLTag, PLCard, PLDivider, PLAvatar, PLAvatarGroup, PLProgress, PLSpinner, PLSkeleton, PLAlert, PLEmptyState, PLStat, PLTable, PLToast
  • Navigation: PLTabs, PLBreadcrumbs, PLPagination
  • Layout: PLStack, PLCluster, PLGrid
  • Overlays: PLTooltip, PLMenu, PLModal

Form primitives wrap real <input> elements (visually hidden via .pl-sr-only), so they're keyboard-operable, screen-reader-friendly, and submit with <form>. PLModal traps Tab focus, locks body scroll, and restores focus on close.

Local Review

npm run build   # regenerates dist/ from src/
npm test        # structural + parity check
npm run docs    # serves the repo

npm run build regenerates the browser-global files in dist/ from src/. npm test then verifies the package structure, the docs references, and that dist/ is in sync with src/. npm run docs serves the repo at http://localhost:8000; open docs/index.html or examples/browser.html.

Files inside dist/ are generated. Edit src/ and run npm run build — never edit dist/* by hand.

Dark Mode

Add pl-dark or data-theme="dark" to any wrapping element.

<div class="pl-root pl-dark">...</div>

Design Principles

  • Paper, not panels: warm surfaces, hairlines, and soft depth.
  • Serif for voice, sans for work.
  • Plum is the only primary accent and should be used sparingly.
  • Status colors are muted earth tones, never candy.
  • Icons are one stroke, one set, and inherit currentColor.

License

MIT. Created by Vinny Carpenter.