Repository navigation
v0.12.2
Two breaking changes in the palette and four fixes, and the one to read is the build fix: the
published package had been dropping the reads that subscribe an effect, so a computed that
depended on one answered once and never again. The splitter never laid out at all.
Breaking
ropav/styles/compat-0.10.css is gone
The aliases that answered the palette under its pre-prefix names were opt-in, and they were always
going before 1.0. Delete the import:
@import "ropav/styles";
-@import "ropav/styles/compat-0.10.css";Anything still spelling --accent, --background, --field-border and the rest has to spell them
with rp- now. Tokens lists the names, and a theme that
maps only the names it writes is still the advice — a mapping carrying the whole set is mostly names
nothing writes, and a name nothing writes cannot be found to be wrong.
--rp-danger moves away from the page in each scheme, and its dark label flips
- --rp-danger: oklch(0.6532 0.2328 25.74); /* light */
+ --rp-danger: oklch(0.55 0.2328 25.74);
- --rp-danger: oklch(0.594 0.1967 24.63); /* dark */
- --rp-danger-foreground: var(--rp-snow);
+ --rp-danger: oklch(0.7 0.1967 24.63);
+ --rp-danger-foreground: var(--rp-eclipse);Danger is the only semantic colour the library paints both as a solid fill carrying a button label
and as body text — field-error, the error message, the destructive menu item. Those two jobs pull
the same way within a scheme and opposite ways across them: on a light page both want a dark red, on
a dark page both want a light one. The old value sat between them and failed both, and there is no
third option — contrast against white multiplied by contrast against black is 21 for any colour, so
a red that carries white text at AA is by construction too dark to read against a dark page.
The dark scheme crosses the lightness threshold that decides the label, which is why the fill now
takes a dark one, the way the brand themes whose reds already sit up there are handled. If you paint
your own text on --rp-danger in dark, it needs to be dark now. default, hero, lavender, mint
and sky move; the brand themes are unchanged.
Fixed
- A
computedthat depends on a reactive read updates in the published build. The build told the
bundler that reading a property is pure — in a reactivity library it is the opposite, because
reading.valueoff a ref is what subscribes the surrounding effect. Every read whose result went
unused was therefore dropped, which is exactly whatvoid version.value;is, across
use-collection,use-table-collection,use-virtualizer,use-single-select-list-state,
Breadcrumbsand the splitter's registry. Acomputedwhose only dependency was one had no
dependencies at all and cached its first answer for good. The splitter is the worst case: its key
registry first computes while the panel map is still empty, so the published splitter never laid
out — no panel received aflex-basis,defaultSize,minSizeandmaxSizewere ignored, and
dragging a handle did nothing.flex: 1split the container evenly, which looks close enough to
working that it went unreported. Source and tests, which run against source, were green throughout;
only the published package was affected. Costs about 1.4kB across the library. - A form field draws its own inset edge, rather than relying on a fill the container may share.
--rp-field-backgroundis--rp-surface, so a field inside a card or a popover was painted in the
fill behind it with nothing left to mark where it starts. The new--rp-field-edgeis an alpha of
the field's own foreground, which holds against any of them — 18% on a light page and 12% on a dark
one, because the same alpha reads stronger over a dark fill and the two land on the same contrast. - A row header keeps its name while the row is being edited. Name-from-contents covers a cell
holding text and covers nothing else, so a cell that swaps its text for an input read as an empty
header, and so did the row pointed at it. Give that celltext-valueand it is the name — deriving
one from the control would name the row after the field, and every row being renamed would answer
to "Name". - The empty and loading rows stop claiming to be a row header. Both carried
role="rowheader",
naming a row that does not exist; they aregridcellnow.
npm i ropav@0.12.2Full changelog: v0.12.1...v0.12.2