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

@quario/landing

v0.3.2

Published

The foundation quario’s two surface elements share. The option check, the render boundary and the failure state.

Readme

@quario/landing

What quario's two surface elements share below their own surfaces. @quario/viewer and @quario/editor both take host properties, both carry a render boundary across their lifetime, and both draw a panel when something fails. The parts of that which are easy to get subtly wrong — and invisible when they are — live here once.

You almost certainly do not install this package. The two surfaces depend on it and run it for you. It holds no report vocabulary and renders nothing.

Install

npm install @quario/landing

One runtime dependency, @quario/layout, which the paged sheet paints through. It implements Lit's ReactiveController protocol, which is structural, so this package imports nothing from lit at run time and adds none of it to your tree.

ESM-only, Node 22+, and browser-ready through a standards-based bundler. CSP-safe: no string-to-code paths anywhere.

What is here

options() — the option check across one update cycle. A host writes several properties at once and gets one render, so the checks have to agree that:

  • one bad property does not block a good write to another,
  • a property still broken keeps the element failing, rather than an unrelated write clearing it,
  • writing one property does not clobber what another committed.

The checks themselves are each surface's own. Only that agreement is here.

Landing — the render boundary: whether a render has ever painted the sheet, whether the newest render landed on it, and the counter that asks for a fresh one. A run owes the sheet a render from the moment it starts. Only a render that lands settles that debt. An element you insert again therefore renders once more, unless its last render landed. Its complete promise settles once the run that is newest when it settles has landed or failed, which is what both surfaces answer renderComplete from.

sheet() — the paged sheet both surfaces paint on: the extent of a display list, and the reach within it carrying elements and pixels. The sheet element takes its own height and width from the list's paper and paints the page silhouettes itself, so the extent a reader scrolls through is whole whatever is standing. Only the pages in the reach have a canvas, positioned absolutely at the offset topOf() reports. A list has one paper, so the pages are a pitch apart: a position is a multiple of it and the reach's two ends are a division by it. sheet() takes a scale() thunk and the two elements, so scale policy stays with each surface, and so does the look of a page — the paper, the shadow, the margins. Everything that places a page is sheet()'s and needs no stylesheet from the caller.

failures() — which failure a panel carries and whether the reader dismissed it. Whether a repeat announces again is a policy the caller passes in, never a rule settled here. It is downstream of what re-runs the render, which is the one thing the two surfaces do not share.

What is not here

Each surface's own property checks, its panel markup, and its public API. The two elements differ in their vocabulary and in their policy. Only the machinery underneath is one thing.

Documentation

The quario documentation is the reference. The report schema is the normative specification of what a report may declare.

License

quario is commercial software with readable source. Evaluation is free and unlimited. Buy a per-developer license at getquario.com. See the bundled LICENSE.

This package carries no license mechanics of its own. The two surfaces that depend on it read the key from the quario() instance the host passes in.