@dynt/formation
Line-led construction and reversible lifecycle.
Install independently when an interface should visibly establish and remove its geometry.
npm ↗DYNT adds two optional capabilities to the HTML your application already owns: Formation constructs and withdraws through measured geometry; Kinetic responds to contact through directional tilt and turbulent cell waves.
Line-led construction and reversible lifecycle.
Install independently when an interface should visibly establish and remove its geometry.
npm ↗Contact-led physical response and cells.
Install independently when surfaces should respond to input without changing semantic HTML.
npm ↗Thin lifecycle bindings for React.
Mount and clean up the same framework-neutral engines from a component boundary.
npm ↗Declarative custom-element lifecycle helpers.
Connect and disconnect engine boundaries without moving behaviour into a UI framework.
npm ↗Viewport lines locate targets, permanent geometry closes, content appears, and withdrawal reverses the same sequence.
Formation studio →The near edge compresses, the far edge lifts, and an input-origin wave travels through a configurable cell field.
Kinetic studio →Both engines work from a root and selector, adopt later content, preserve native semantics, and clean up what they own.
Integration handbook →Switch modes, change the Formation profile, reduce or open the cell field, send waves from real input points, reverse the lifecycle, and insert a surface after startup.
Interfaces form through reversible geometry.
Surfaces react at the point of contact.
One boundary enhances existing HTML.
Motion stays separate from accessible meaning.
Initialize once at a stable application boundary. The engine discovers matching elements inside that root, observes later insertions when requested, and restores owned state when destroyed.
const root = document.querySelector('#app');
createFormation({
root,
selector: '[data-surface]',
observe: true
});
createKinetic({
root,
selector: '[data-surface]',
observe: true,
cells: { size: [22, 18, 14] }
});Native names, values, focus order, and input remain application-owned. Reduced motion preserves meaningful state without physical animation.
Read the contract ↗Surface counts, active reactions, cell totals, device-pixel ratio, and simultaneous waves are explicit operational budgets.
Read the budgets ↗Inspect the source, install the released packages, reproduce the examples, and propose changes through the repository.
Open GitHub ↗