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

@ui8kit/aria

v0.1.0

Published

UI8Kit ARIA behavior layer with TypeScript and browser-compatible bundles

Readme

UI8Kit ARIA (npm i @ui8kit/aria)

TypeScript ARIA behavior layer for UI8Kit-compatible markup.

Documentation: docs/README.md — overview, getting started, SRI/CDN, testing, CI, patterns index (docs/patterns/README.md), and FAQ.

Two ways to consume the library:

  1. Pure ESM (@ui8kit/aria) — tree-shakeable, no side effects on import. You opt into each pattern explicitly.
  2. Full bundle (@ui8kit/aria/all / IIFE) — auto-registers every pattern, exposes window.ui8kit, and wires up DOMContentLoaded. Best for CDN drop-in usage.

Quick start

Install:

npm i @ui8kit/aria

Pure ESM (tree-shakeable)

import { registerPattern, getNamespace, dialog, tabs } from '@ui8kit/aria'

registerPattern(dialog)
registerPattern(tabs)
getNamespace().init()

Per-pattern side-effect entries (auto-register)

import '@ui8kit/aria/dialog'
import '@ui8kit/aria/tabs'

Each per-pattern entry registers itself and (unless disabled) initializes on DOMContentLoaded.

Full bundle

import '@ui8kit/aria/all'

CDN (IIFE)

<!-- Pinned, with Subresource Integrity (replace HASH with output of `npm run sri`) -->
<script
  src="https://cdn.jsdelivr.net/npm/@ui8kit/[email protected]/dist/all.iife.min.js"
  integrity="sha384-HASH"
  crossorigin="anonymous"
  defer
></script>

window.ui8kit becomes available after the script loads.

Auto init

By default the namespace auto-initializes registered patterns on DOMContentLoaded. Disable per-page:

<script>window.__UI8KIT_ARIA_AUTO_INIT__ = false</script>

Then run manually:

window.ui8kit.init()

…or, in ESM:

import { setAutoInitFlag, getNamespace } from '@ui8kit/aria'
setAutoInitFlag(false)
// ...register patterns...
getNamespace().init()

Exposed namespace

window.ui8kit (or the result of getNamespace()) exposes:

  • ready(fn)
  • byAttr(name, root?)
  • register(pattern)
  • init(root?)
  • initPattern(name, root?)
  • disposePattern(name, root?) — detach scope listeners.
  • resetRegistry() — clear the registry (test/HMR helper).

Each entry ships in ESM/CJS (and IIFE for all/core). Patterns follow a per-pattern contract based on data-ui8kit-* attributes — see docs/patterns/ and src/patterns/<name>/markup.md for the expected DOM shape.

SSR safety

Importing @ui8kit/aria (the pure entry) and @ui8kit/aria/core has no side effects on globalThis/window. The global namespace is created lazily on the first call to getNamespace() and only when document is defined.

License

MIT