WireKit v2.32.0
Minor — a shared icon vocabulary that resolves the same way on every preset, an icon package you can actually install, a prop-naming reference that was wrong about six things, and a prop linter that no longer fails a build over a test selector.
Nothing here changes what an unchanged call site renders. One command reports less than it used to, and it is the reporting that was wrong rather than the rule.
Added
- Eleven words the shared icon vocabulary was missing.
chart-bar,trend-up,percent,coins,gift,map-pin,sliders,list-checks,list-bullets,lock-keyandbroadcast— reporting, money, settings and location, the vocabulary a back-office reaches for. Each resolves on all four base presets, and each target was checked against the installed icon set rather than assumed. Two more were asked for and are deliberately absent: Heroicons has no gauge and no handshake, and an alias that changes the drawing when you switch presets is worth less than no alias at all — for those two, name the glyph directly. See Icon.
Changed
-
chart-barmoved from the marketing extension into the shared vocabulary. While the extension owned the name it meantchart-bar-squareon Heroicons and nothing at all on Lucide, Phosphor or Tabler — so the one property a shared alias has to keep, that it means the same thing whichever preset you install, was the property it did not have. Onheroicons-marketingthe glyph is now the plain bar chart the other three presets draw. If you want the framed variant, nameheroicon-m-chart-bar-squaredirectly. -
wirekit:doctor:propsno longer reports a browser-test selector as an unknown prop.duskis written on a component precisely so that it reaches the rendered HTML, where a browser suite selects on it. The linter counted it as a mistake, and in a project whose quality gate runs the linter underset -euo pipefailthat exit code ended the stage before the tests ran — seventy of one project's findings were this one attribute. The line is what the attribute does: an unknown prop is an instruction that disappears, a test selector is one that arrives where it was aimed. The same change covers the runtime warning, since both read one verdict. Valid HTML attributes and thearia-/data-/wire:/x-/onprefixes were already passthrough and are unchanged. CLI Reference lists what is never reported.
Fixed
-
The
tablericon preset named a package you cannot install.ryangjchandler/blade-tabler-iconsis marked abandoned and its newest release requires Laravel 10 or 11, while WireKit requires 12 or 13 — socomposer requirerefused, for every supported installation. The preset was documented, listed in the preset table, and unreachable. It now namessecondnetwork/blade-tabler-icons, the maintained successor: sametabler-prefix, same alias vocabulary, ~7,200 icons, and it tracks Tabler's own version line. Nothing changes in your templates —<x-wirekit::icon name="user">on thetablerpreset resolves exactly as before. Icon names the new package. -
megaphonewas broken on thetablerpreset. It mapped totabler-megaphone, which does not exist — Tabler calls that glyphspeakerphone. Blade Icons throws on an unknown name, so the page broke rather than degraded. It survived because the preset's package could not be installed, which meant nothing could check its 94 targets; all four presets are verified now, and every other alias across them was already correct. -
wirekit:publish-icons lucidereported success while publishing the wrong thing. The command looked for SVGs in a directory the package emptied when it reorganized — the folder still exists, so the check answered yes and the copy producedicons/lucide/icons/…where every other preset gives youicons/lucide/…. The source directory is now located by looking for the files rather than by a written-down path, so an upstream reorganization cannot silently change what you get.
Documentation
-
The CLI reference documented an exit code no command returns. It described a three-value convention and gave exit
2its own row and its own meaning, plus two more mentions under individual commands. Everywirekit:*command exits0or1— including on rejected input — and has done since that was standardized. A CI step written asif [ $? -eq 2 ]could never fire, and1read as narrower than it is. The reference now states the two-value contract and says outright that there is no exit2. CLI Reference. -
A recipe's dark band did not follow the theme. The marketing landing-page recipe painted its hero with raw hex — a near-black gradient with white text, plus three sparkline strokes in literal red, green and gray. Copied into an application, that band stayed exactly as light in dark mode as it had been in light mode while everything around it moved. It is tokens now, so the band belongs to whichever theme is active.
-
The prop-naming reference was wrong about six things, on the page that exists to settle them. It named a component this package does not have, filed two components under a prop they do not declare, classified
alertandcalloutas surface-treatment while both resolvevariantinto the color axis, promised a stable seven-value intent enum thatbuttondoes not accept, and described a v3 plan whose canonical surface axis was the wrong name. It also named one component as keeping a back-compat alias while seven do — which is how a reader plans a one-component migration for a seven-component change. The page now carries the full alias matrix, the accepted values per component, and the v3 mapping split into the rows that are a plain prop rename and the rows that also rename a value. The release date stays open. Prop Naming Conventions. -
The integration guide says that
x-cloakis covered. Alpine hides nothing for that attribute — it removes it once initialized, and the hiding has to come from CSS. WireKit ships the rule and@wirekitStylesdelivers it, which was true and written down nowhere. The guide now also says why looking for it comes up empty: the stylesheet arrives as its own<link>, so the rule is never in your Vite bundle and greppingapp-*.cssfinds nothing whether your setup is right or not. Integration.