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

@timmo001/docs-kit

v0.1.1

Published

Shared branding, layout and config for timmo001 documentation sites

Readme

@timmo001/docs-kit

Shared branding, layout and config for my documentation sites.

The root export renders brand images and doesn't depend on a docs tool. The blume export holds the Blume parts: a config helper, a home page banner, a header GitHub link and a layout stylesheet. If the sites move off Blume, the root export stays and a new tool gets its own entry point.

Install

bun add -E @timmo001/docs-kit

The blume export needs the blume version in peerDependencies.

Blume

Config

docsConfig returns a full Blume config from the site details. Pass anything else Blume accepts alongside them; it overrides the default it replaces, and navigation and seo merge one level deep.

import { docsConfig } from "@timmo001/docs-kit/blume";
import { defineConfig } from "blume";

export default defineConfig(
  docsConfig({
    title: "Triage",
    description: "Pull request triage from the terminal.",
    site: "triage.timmo.dev",
    github: { owner: "timmo001", repo: "triage" },
    navigation: {
      sidebar: ["/", "/getting-started"],
    },
  }),
);

The defaults:

  • Light and dark logos from public/logo-light.svg and public/logo-dark.svg, with the title as the logo text.
  • Content in src/content/docs, last-modified dates from git and external links opening in a new tab.
  • Cloudflare deployment to https://<site>.
  • llms.txt, the MCP endpoint at /mcp, WebMCP and agent readability on. Ask AI and page feedback off.
  • GitHub branch set to main and dir to docs, plus the header repository link.
  • Generated share cards using src/assets/logo.svg, and an organisation logo at /logo.png (see Brand images).

Components

Blume reads components.ts without running it, so import the components there directly:

import HeaderSearch from "@timmo001/docs-kit/blume/header-search.astro";
import HomeBanner from "@timmo001/docs-kit/blume/home-banner.astro";
import { defineComponents } from "blume";

export default defineComponents({
  layout: {
    PageHeader: HomeBanner,
    Search: HeaderSearch,
  },
});
  • HomeBanner shows the logo, title and description across the top of the home page and hides the page's own heading and lede. Other pages render nothing.
  • HeaderSearch keeps Blume's search and adds a GitHub link after it when the config has a repository.

Both use scoped CSS, so they don't rely on Tailwind scanning node_modules.

Theme

Import the layout styles from the site's theme.css:

@import "@timmo001/docs-kit/blume/theme.css";

This widens the content column on large screens and keeps the "On this page" rail next to the content. The banner's full-width layout relies on these columns.

Set these in theme.css to change the banner:

.home-banner {
  --home-banner-logo-size: 20rem;
  --home-banner-height: 30rem;
  --home-banner-background: #e4e4e7;
  --home-banner-background-dark: #09090b;
}

Brand images

writeBrandImages renders PNGs from a square SVG logo with a viewBox: Open Graph and GitHub social preview cards, a 512px logo and an Apple touch icon. Leave an output out to skip it.

import { writeBrandImages } from "@timmo001/docs-kit";

await writeBrandImages({
  logo: "src/assets/logo.svg",
  title: "Triage",
  tagline: ["Pull request triage", "from the terminal."],
  site: "triage.timmo.dev",
  background: "#18181b",
  accent: "#d97706",
  outputs: {
    socialPreview: "../.github/social-preview.png",
    logo: "public/logo.png",
    appleTouchIcon: "public/apple-touch-icon.png",
  },
});

Blume makes its own per-page share cards, so a Blume site only needs og for links outside the docs. GitHub doesn't read the social preview from the repository; upload it under the repository settings.

Development

See the repository README.