@quario/landing
v0.3.2
Published
The foundation quario’s two surface elements share. The option check, the render boundary and the failure state.
Maintainers
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/landingOne 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.
