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

@spences10/pi-tui-modal

v0.0.24

Published

Shared Pi TUI modal primitives for consistent pickers, settings, prompts, confirmations, and scrollable overlays

Downloads

2,240

Readme

@spences10/pi-tui-modal

built with Vite+ tested with Vitest npm version license

my-pi package preview

Build Pi overlays that feel consistent instead of one-off. pi-tui-modal provides shared TUI modal primitives for pickers, settings, prompts, confirmations, and scrollable text views used across Pi extensions.

Upstream Pi boundary

Pi already provides ctx.ui.select(...), ctx.ui.confirm(...), and ctx.ui.input(...) for simple dialogs. It also owns custom-component and overlay lifecycles through ctx.ui.custom(...) and overlayOptions, while @earendil-works/pi-tui supplies components such as SelectList and SettingsList.

Use those upstream APIs directly when their default UI is sufficient. This package does not re-export or replace them. Its helpers compose them into the shared my-pi experience: consistent modal chrome, responsive terminal-height budgets, focus propagation, searchable settings with metadata, scrollable text, and dense command-output defaults.

Styling

Modals render with a full rounded border by default. Pass style to change it:

style: {
	border: 'rounded';
} // 'rounded' | 'square' | 'line' | 'none'

overlay_options still controls size and placement. List and text bodies automatically shrink to the current terminal height so modal footers remain visible on small terminals.

Helpers

  • show_picker_modal(ctx, options) — select one item from a themed modal list.
  • show_settings_modal(ctx, options) — toggle/update settings with optional search, metadata, and stable-width selection cursor. Use up/down to navigate, left/right to choose previous/next values, or Enter/Space to advance; left/right continue to edit an active search query when it contains text.
  • show_text_modal(ctx, options) — show scrollable read-only output.
  • show_command_output_modal(ctx, options) — show dense command or status output with shared wide, responsive defaults. Pass max_visible_lines or overlay_options to override that policy for a specific report.
  • show_input_modal(ctx, options) — collect a single text value with IME-safe focus propagation.
  • show_confirm_modal(ctx, options) — confirm/cancel destructive or replacing actions.

Development

Package scripts build transitive workspace dependencies first, then run local tools through Vite+ with vp exec.

pnpm --filter @spences10/pi-tui-modal run check
pnpm --filter @spences10/pi-tui-modal run test
pnpm --filter @spences10/pi-tui-modal run build