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

@forumone/throughline-reference-ds

v0.2.0

Published

A competent, brand-neutral reference design system demonstrating contract compliance for Throughline.

Downloads

341

Readme

@forumone/throughline-reference-ds

A competent, brand-neutral reference design system that demonstrates contract compliance for Throughline. Twelve components, a CSS-variable token layer, a generated AI-ready manifest, and Storybook.

What this package provides

Twelve components covering the common editorial surface:

| Component | Purpose | | --- | --- | | Hero | Page opener with headline, body, CTAs, optional media — three variants | | SectionIntro | h2-level section opener with optional eyebrow and body | | Prose | Typographic container for long-form rich-text content | | MediaBlock | Single image or video with optional caption and aspect ratios | | Card | Linked or static content card with image, title, description, link | | CardGrid | 2/3/4-column responsive layout for Cards | | CTASection | Page-bottom call to action with one or two buttons | | Stats | 2–4 headline metrics as a semantic <dl> | | FAQ | Disclosure-style Q&A using native <details>/<summary> | | Quote | Pullquote or testimonial with optional attribution | | Divider | Decorative or semantic horizontal rule | | Spacer | Explicit token-sized vertical spacing |

Every component ships a ComponentContract that conforms to @forumone/throughline-design-contract@^0.2.0. The package exposes the aggregated manifest at the ./manifest subpath so any MCP server or client app can read it directly.

Three ways to use this package

As a starting point. Copy components into your own design system. Customize freely; keep what works.

As a test fixture. Core framework packages (Component Server, Publishing Server) consume this DS to verify their behaviour against a realistic, contract-compliant design system.

As a demo. Stand up a Throughline site in minutes using only these twelve components — useful for prototypes, internal tools, and pitches.

Installation

pnpm add @forumone/throughline-reference-ds

Peers: react + react-dom 18 or 19.

Using components

import '@forumone/throughline-reference-ds/styles.css'
import { Hero, CardGrid, Card } from '@forumone/throughline-reference-ds'

export function HomePage() {
  return (
    <>
      <Hero
        eyebrow="New program"
        headline="Fellowship for climate researchers"
        body="A one-year fellowship supporting researchers at the intersection of climate and community resilience."
        cta={{ label: 'Apply now', url: '/apply' }}
      />
      <CardGrid columns={3}>
        <Card title="Research" description="…" link={{ label: 'Read', url: '#' }} />
        <Card title="Partnerships" description="…" link={{ label: 'Read', url: '#' }} />
        <Card title="Funding" description="…" link={{ label: 'Read', url: '#' }} />
      </CardGrid>
    </>
  )
}

Reading the manifest

The aggregated manifest ships at the ./manifest subpath. Component servers, lint tooling, and documentation sites consume it:

import manifest from '@forumone/throughline-reference-ds/manifest'
import { loadManifest } from '@forumone/throughline-design-contract'

const loaded = loadManifest(manifest)
console.log(loaded.listComponents())
// ['Card', 'CardGrid', 'CTASection', 'Divider', 'FAQ', 'Hero', 'MediaBlock', 'Prose', 'Quote', 'SectionIntro', 'Spacer', 'Stats']

Theming via CSS variables

Every token is exposed as a CSS variable on :root. Override them to rebrand without touching component code:

:root {
  --color-brand-primary: #7E33FF;
  --color-brand-primary-hover: #6420CC;
  --font-family-sans: 'DM Sans', system-ui, sans-serif;
}

The package also ships a prefers-color-scheme: dark override that swaps background, text, and border tokens. Clients with more elaborate dark-mode requirements should override the entire token layer.

Full token list: src/styles/tokens.css (generated from src/tokens/*.ts via pnpm build:tokens-css).

Storybook

pnpm --filter @forumone/throughline-reference-ds storybook      # dev server on :6006
pnpm --filter @forumone/throughline-reference-ds build-storybook # produces storybook-static/

The static build is used by pnpm validate to verify that every storyId declared on a contract resolves to a real Storybook story.

CI validation

pnpm --filter @forumone/throughline-reference-ds build
pnpm --filter @forumone/throughline-reference-ds build-storybook
pnpm --filter @forumone/throughline-reference-ds validate

validate runs lintManifest from @forumone/throughline-design-contract/lint against the generated manifest. Errors fail the build; warnings print but pass.

Authoring your own design system

Use this package as a reference. Each component has a .contract.ts file; every contract satisfies ComponentContractSchema. Copy the structure, replace the content, and your design system becomes a valid input to Throughline.

The authoring guide lives at docs/building-plugins.md (for MCP plugins) and the contract authoring expectations live in @forumone/throughline-design-contract's README.