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

poon-ui

v1.3.0

Published

The provocative UI framework that's so native it's indecent!

Readme

Poon-UI

Poon UI is so native, it feels indecent! Why settle for a vanilla web app? Poon UI is the most golfed UI library that attempts a native look and feel in the history of the web. It's immeasurable poon is due to the reuse of code internally across components.

DEMO: https://poon.app

Quick Start Guide

npm install poon-ui
npm install poon-router

Head Tag Add these lines

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0, viewport-fit=cover"/>
<link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet">

JavaScript Import the CSS:

import 'poon-ui/poon.css';

index.js/main.js Add PoonOverlays:

import { PoonOverlays } from 'poon-ui';

const App = () => (
    <Fragment>
        <Stack/>
        <PoonOverlays/>
    </Fragment>
);

PoonOverlays currently includes a Modal, Toast, and Alert

Integration with Poon Router

Poon Router passes some very important props (isVisible and animateIn) to the component being routed to. You must prop-drill both to the <Card/>, <Window/> and <Reveal/> components wherever you use them.

Custom Gestures

Personally I struggle to call them "custom" gestures. That would imply that when you use the Poon UI internal Gesture system, you are doing something different than I while coding the components that are built in to this library. When in fact, we be using the same gesture system.

Poon UI contains a juicy react hook called useGesture. Please simply take a look at ScrollView, Card, Window, etc, and the API for such a historically difficult task will become clear as day, and soon you will admit being unable to create gestures any other way.

Text Selection

The web is historically document based. However it seemed more sexy to disable text selection everywhere except for <p/> elements. Do you think it's too naughty? On iOS the guy who decided the text selection algorithm clearly had a lil concussy, so it is what it is.

Scrolling

An important note on scrolling. I've committed the X rated act of a custom scroller and I'm very sorry. Unfortunately the creators of iOS Safari are into sadism because they disable e.preventDefault() so you can't cancel a vertical scroll while another gesture is happening, say, for instance a swipe back gesture. This causes the most atrocious faux pas of UI interaction where you can be scrolling a scroller and swiping back at the same time. There is no fix for it. There is no way to cancel a scroll once the finger moves. So I had to make my own scroller. I'm sorry. I'm so sorry. This is something I am working on tirelessly to resolve.