Skip to main content
WireKit

WireKit v2.32.0

Minor release

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-key and broadcast — 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-bar moved from the marketing extension into the shared vocabulary. While the extension owned the name it meant chart-bar-square on 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. On heroicons-marketing the glyph is now the plain bar chart the other three presets draw. If you want the framed variant, name heroicon-m-chart-bar-square directly.

  • wirekit:doctor:props no longer reports a browser-test selector as an unknown prop. dusk is 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 under set -euo pipefail that 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 the aria- / data- / wire: / x- / on prefixes were already passthrough and are unchanged. CLI Reference lists what is never reported.

Fixed

  • The tabler icon preset named a package you cannot install. ryangjchandler/blade-tabler-icons is marked abandoned and its newest release requires Laravel 10 or 11, while WireKit requires 12 or 13 — so composer require refused, for every supported installation. The preset was documented, listed in the preset table, and unreachable. It now names secondnetwork/blade-tabler-icons, the maintained successor: same tabler- 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 the tabler preset resolves exactly as before. Icon names the new package.

  • megaphone was broken on the tabler preset. It mapped to tabler-megaphone, which does not exist — Tabler calls that glyph speakerphone. 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 lucide reported 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 produced icons/lucide/icons/… where every other preset gives you icons/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 2 its own row and its own meaning, plus two more mentions under individual commands. Every wirekit:* command exits 0 or 1 — including on rejected input — and has done since that was standardized. A CI step written as if [ $? -eq 2 ] could never fire, and 1 read as narrower than it is. The reference now states the two-value contract and says outright that there is no exit 2. 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 alert and callout as surface-treatment while both resolve variant into the color axis, promised a stable seven-value intent enum that button does 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-cloak is 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 @wirekitStyles delivers 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 grepping app-*.css finds nothing whether your setup is right or not. Integration.