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

inkglow

v0.2.0

Published

Color themes for VS Code — gel-pen darks, earthy lights, and curated retro palettes

Readme

Inkglow

Color themes for VS Code, Neovim, and terminal tools. 9 themes across dark/light variants with curated retro palettes.

All themes are defined once as compact, human-readable JSON files and built into VS Code themes, Neovim colorschemes, and an importable JS API from the same source.

Themes

| Theme | Type | Palette | |-------|------|---------| | Inkglow | dark | Gel-pen neons on black | | Inkglow Quill | light | Warm earthtone inks | | Inkglow Storm | light | Blue/orange contrast | | Inkglow Charm | dark | Sweetie-16 retro palette | | Inkglow Frost | light | Sweetie-16 retro palette | | Inkglow Blaze | dark | PICO-8 game palette | | Inkglow Hearth | light | PICO-8 game palette | | Inkglow Dusk | dark | NA16 retro palette | | Inkglow Gilt | light | NA16 retro palette |

Preview

Dark

Light

Install

VS Code

Install from the VS Code Marketplace, or from source:

git clone https://github.com/creationix/inkglow.git
cd inkglow
node build.mjs
code --install-extension .

Neovim

Add the repo with your plugin manager, then set the colorscheme:

-- lazy.nvim
{ "creationix/inkglow" }

-- packer
use "creationix/inkglow"
colorscheme inkglow          " flagship dark
colorscheme inkglow-dusk     " or any variant

Inkglow Charm in Neovim Inkglow Charm theme in Neovim with Treesitter highlighting

CLI tools (npm)

npm install @creationix/inkglow

Import the theme data directly in Node.js tools, REPLs, or terminal applications:

import { getTheme, colorize, toAnsi256, getAnsi256Map } from "@creationix/inkglow";

// Get a theme by name
const theme = getTheme("Inkglow");

// Colorize text for terminal output using 256-color ANSI codes
process.stdout.write(colorize(theme, "keyword", "fn "));
process.stdout.write(colorize(theme, "function", "fibonacci"));
process.stdout.write(colorize(theme, "bracket", "("));
process.stdout.write(colorize(theme, "parameter", "n"));
process.stdout.write(colorize(theme, "bracket", ")"));

// Get the ANSI 256-color code for any hex color
const code = toAnsi256("#ff9944"); // → 209

// Get a full lookup table for building your own renderer
const map = getAnsi256Map(theme);
// map.keyword  → { code: 209, fontStyle: undefined }
// map.comment  → { code: 103, fontStyle: "italic" }

You can also import individual theme JSON files directly:

import inkglow from "@creationix/inkglow/inkglow.json" with { type: "json" };
import scopes from "@creationix/inkglow/scopes.json" with { type: "json" };

Project structure

├── scopes.json           # Scope registry — all targeted TextMate + semantic scopes
├── inkglow.json          # Declarative theme source files (compact, human-readable)
├── inkglow-quill.json
├── ...
├── build.mjs             # Generates themes/ (VS Code) and colors/ (Neovim)
├── preview.mjs           # TUI previewer using 256-color ANSI
├── screenshots.mjs       # SVG screenshot generator
├── index.mjs             # npm entry point for CLI tools
├── themes/               # Generated VS Code themes (gitignored)
├── colors/               # Generated Neovim colorschemes (gitignored)
└── screenshots/          # Generated SVG previews

Declarative theme format

Each theme file at the root is a compact JSON mapping of token roles to "#color style" values:

{
  "tokens": {
    "comment":          "#8877aa italic",
    "keyword":          "#ff9944",
    "keyword.control":  "#77bbff",
    "string":           "#55cc99",
    "function":         "#a6e22e",
    "variable":         "#99ccff"
  }
}

The role names map to TextMate scopes (via scopes.json), Vim syntax groups, and Treesitter captures. This makes themes easy to compare side-by-side and keeps the single source of truth for all output formats.

Development

Open this repo in VS Code, then:

  • F5 — launches an Extension Development Host with the themes loaded (runs build automatically)
  • Cmd+Shift+B — run the default build task

CLI

node build.mjs              # Generate VS Code themes + Neovim colorschemes
node build.mjs --check      # Validate scope coverage without writing
node build.mjs --report-256 # Show 256-color fidelity for each theme

node preview.mjs            # Preview all themes in terminal (256-color)
node preview.mjs inkglow.json  # Preview a specific theme
node preview.mjs --compact  # Side-by-side view (auto-fits terminal width)
node preview.mjs --dark     # Only dark themes
node preview.mjs --light    # Only light themes
node preview.mjs --palette  # Show color palette with 256-color mappings

node screenshots.mjs --readme  # Regenerate SVG previews + update README

Scope registry

scopes.json lists every TextMate scope and semantic token type that themes target. Use it to:

  • Cross-reference when building language grammars
  • Validate that themes cover all scopes consistently
  • Understand which roles are available for coloring