Skip to content

v4.3.0

Choose a tag to compare

@mkocansey mkocansey released this 10 Aug 12:21
· 100 commits to main since this release

BladewindUI 4.3.0 adds descriptions and type-to-jump to <x-bladewind::select>, an animated underline for simple tabs, Laravel 13 support, and a batch of UI fixes. It also repairs the service provider declarations in the individual component packages — if you install single components rather than the full library, this release is a required upgrade.

composer require mkocansey/bladewind:^4.3

No breaking changes. Upgrading from 4.2.x is a drop-in.


✨ New

Select items can carry a description

Items now take an optional second line under the label. Descriptions are part of an item's searchable text, so filtering matches on them too.

{{-- manual items --}}
<x-bladewind::select name="plan">
    <x-bladewind::select.item value="pro" label="Pro"
                              description="Unlimited projects, priority support" />
    <x-bladewind::select.item value="free" label="Free"
                              description="One project, community support" />
</x-bladewind::select>

For data-driven selects, point description_key at the relevant key:

{{-- data: [ ["id" => 1, "name" => "Burkina Faso", "capital" => "Ouagadougou"], ... ] --}}
<x-bladewind::select name="country"
                     :data="$countries"
                     value_key="id"
                     label_key="name"
                     description_key="capital" />

Closes #255.

Type to jump to a select item

Typing a printable character while a select has focus jumps to the first item whose label starts with what you typed — without opening the dropdown. The buffer clears after a short pause, keystrokes inside the search box are ignored, and an item already chosen in a multiple select is not toggled off.

Arrow-key navigation now stops at either end of the list instead of running past it and writing an empty value.

Closes #474.

Simple tabs get a sliding underline

The per-heading bottom border on simple tabs is replaced by a single line that animates to the active heading. It positions itself on load, on resize, and — via ResizeObserver — when a tab group inside a modal, accordion, or another tab becomes visible for the first time. No markup changes needed.

Code inputs fill on paste

Pasting a multi-character code into an <x-bladewind::code> field distributes the characters across the boxes instead of dropping everything into the first one.

Laravel 13

illuminate/support now allows ^13.0, alongside ^10.0, ^11.0 and ^12.0.


🐛 Fixes

Dropmenu

  • Menus use fixed positioning with auto-flip, so they escape overflow: hidden ancestors instead of being clipped, and reposition on scroll and resize while open.
  • hide_after_click works again. Item clicks are bound once (no duplicate handlers on reopen) and the hide is deferred a tick so an inline onclick or a link navigation still runs. The attribute now accepts true, 1, "1" and "true".
  • Outside-click detection moved to mousedown and no longer mis-fires on the menu itself.

Toggle

  • Active colours render again. The peer-checked:bg-* classes were built by string interpolation, which Tailwind's JIT scanner cannot see; they are now a static map covering all supported colours.
  • The thumb stays inside the track at every bar size, with RTL handled.

Other components

  • Checkcards: checkmark alignment.
  • Rating: star alignment.
  • Icon: hidden icons stay hidden.
  • Input: lighter borders.
  • Number, progress bar: centred labels.

📦 Packaging

Service provider class names fixed in 35 split packages. The extra.laravel.providers entry in each component's own composer.json named a class that does not exist. The monorepo never exercises those entries — the root composer.json has its own list — so this was invisible to anyone installing the full library, and a boot-time fatal for anyone installing a component on its own (composer require mkocansey/bladewind-table and friends). A bin/validate-providers.php check now runs in CI and verifies all 92 declarations resolve.

Stale per-package public/ directories removed. Several packages shipped a second copy of a JS file that nothing ever published — the copy of select.js in packages/select/public had been missing a filter() fix for two releases. All published assets live in packages/core/public and are published by BladewindCoreServiceProvider under the bladewind-public tag. Every component requires bladewind-core, so installing a single component still gets the assets.

If you publish assets, re-publish after upgrading:

php artisan vendor:publish --tag=bladewind-public --force

Full changelog: mkocansey/bladewind@v4.2.1...4.3.0