Added
keyboardplugin (global) — exposes the soft (on-screen) keyboard's
geometry on:root:--live-keyboard-open(1/0),--live-keyboard-height,
--live-keyboard-width, and--live-keyboard-x/-y/-right/-bottom
(px, client coordinates), so layout can reflow around the keyboard with pure
CSS —padding-block-end: calc(var(--live-keyboard-height) * 1px). Reads exact
geometry from the VirtualKeyboard API on Chromium/Android (it sets
navigator.virtualKeyboard.overlaysContent = truewhile bound — so the
keyboard overlays content instead of resizing the viewport — and restores it on
dispose), and falls back to inferring the height fromvisualViewportshrink on
iOS/Safari (approximate: a pinch-zoom can read as a keyboard). Seeds zeros where
neither API is available. (#6)metaplugin (global) — writes every<meta name|property + content>on
the page as a write-once--const-meta-<slug>(the slug lowercases the name and
collapses runs of non-alphanumerics to a single dash):--const-meta-theme-color,
--const-meta-og-image,--const-meta-color-scheme, etc. — so CSS can read page
metadata directly (background: var(--const-meta-theme-color),
background-image: url(var(--const-meta-og-image))). First match wins per name,
and amedia-conditional meta is skipped when its query doesn't currently match,
so the activetheme-colorvariant is the one written. Read once at bind on the
constcadence, so meta tags swapped in by a framework after bind aren't
tracked. (#7)
Both are tree-shakeable opt-in plugins — import from prop-for-that/plugins, or
let auto load them on demand via data-props-for.