v5.0.0
This consolidates everything since the last published release, 4.3.0. Two versions
shipped to Packagist in between — 4.4.0 and 4.5.0 — but neither got a GitHub
Release of its own, so their changes (including the package rename) are folded in
here too.
Breaking changes
The Composer package name changed, twice: mkocansey/bladewind → bladewindui/bladewindui (4.4.0) → bladewindui/ui (4.5.0).
Nothing else moved — the PHP namespace, the x-bladewind:: Blade namespace, the
bladewind config key, and the public/vendor/bladewind asset path are all
untouched, so existing markup and config need no changes. Both old names keep
working via metapackage shims; update your composer.json whenever you like:
- "mkocansey/bladewind": "^4.3"
+ "bladewindui/ui": "^5.0"The one thing that does break silently: a hardcoded vendor path, most commonly
a Tailwind v4 @source directive.
-@source '../../vendor/mkocansey/bladewind/packages';
+@source '../../vendor/bladewindui/ui/packages';Miss this and the build still succeeds — it just stops generating the utility
classes scanned from BladeWind's own templates, and styles quietly disappear. Check
any deploy script, asset pipeline, or IDE helper config that references the old
path too. Full details in docs/migration/README.md.
Buttons now emit a real type attribute. Previously the type was written
through {{ }}, which escapes quotes, so the rendered markup was
type="button" — not a valid HTML type keyword, so every button fell
back to the browser default of type="submit". A BladeWind <button> inside a
<form> submitted that form on click regardless of can_submit. This is now
fixed: buttons only submit a form when can_submit="true" is set. If you were
relying on the old (accidental) submit behavior, add can_submit="true" explicitly.
New components
- Calendar — inline month, week, and day views for displaying and selecting
dates or events, distinct from the form-bound Datepicker. Supportsnone,
single, andmultipleselection modes, a real hour grid for week/day view with
timed and all-day events, an inbuilt event details drawer, and ahighlight-today
toggle. - Data Grid — a higher-level companion to Table with column sorting,
filtering, selection, sticky headers, and both client-side and server-driven
pagination. - Command Palette — a keyboard-first, searchable action launcher with grouped
actions, shortcuts, empty states, and asynchronous results. - Drawer, Breadcrumbs, Stepper, and Sidebar (navigation) also
shipped in4.5.0.
New features
- Form components resolve
old()and validation errors themselves.input,
textarea,select,checkbox,radio,datepicker, andfilepickernow
takefill_from_oldandshow_validation_errorprops (both defaultfalse,
configurable globally) instead of every field wiring value/error state by hand. - New
input-groupcomponent for attaching a button or select to an input,
handling the corner radius and border collapse that used to be done by hand. icongains asizeprop,cardgains apaddingscale
(none…large, or any Tailwind utility), and the shared radius helper gains
more named values — replacing a long tail of!utility overrides consumers
were reaching for.tablegains a:columnsmodel and an empty-state slot;pagination
now consumes a Laravel paginator directly;statisticgains tones, trend
direction, hints, and progress.@bladewindScriptsBlade directive replaces hand-picking<script src>
tags per layout. All JS helpers are now also exported onwindow, so the
shims consumers used to write for inline handlers are no longer needed.- A Preflight-free CSS build (
bladewind-ui-no-preflight.min.css) for apps
that already ship their own Tailwind reset, alongside the full bundle. - The shipped CSS is hardened against a host theme — every custom property a
component rule reads now carries a literal fallback, so an app that resets
Tailwind's theme tokens doesn't silently break BladeWind's own styling. !importantremoved from every component rule (78 declarations across
button, input, table, and tabs). Consumers can now override component styles
with ordinary CSS; verified backward compatible rule-by-rule against the
previous bundle.- Popover, the select popup, and tooltip no longer clip inside a scrolling
ancestor (the classic case: a wide table'soverflow-x-autowrapper). All
three now position against the trigger's screen rect and reposition on scroll,
matching the fix Dropmenu already had. - Accessibility pass: ARIA semantics for select, dropmenu, alert, buttons,
tabs, toggle, rating, accordion, slider, and checkcards, plus keyboard
navigation for tabs and the rating slider. - Laravel 13 is now an allowed dependency.
Fixes
- Dropmenu, Popover, and Notification scripts could silently vanish after the
first render in any long-lived PHP process (Octane, PHP-FPM worker reuse, or
a single test run rendering more than one instance) —include_oncededupes
by file path for the life of the process, not per request. Switched to the
same@once-scoped<script src>pattern Datepicker already used correctly. - Snake_case props no longer leak as literal HTML attributes.
has_shadow="false"
and similar previously rendered onto the root element as-is; worst case was
button.circleleakingshow_focus_ring,title,onclick, and an empty
href(which resolves to the current page). - Dark mode specificity fixed for two components that ignored it.
- Table's empty-state markup fixed.
- A couple of defects in the shared core JS helpers fixed, including
domEls()
returningfalseinstead of an empty list when nothing matched a selector —
which could throw partway through page load and silently skip everything
after it, including the newwindowexports above.
Internal
Command Palette and Data Grid were rebuilt as anonymous Blade components (no
behavior change) to match the rest of the library's convention rather than
Sidebar's now-deprecated pattern. A new browser-driven test tier (Playwright)
covers geometry that render-only tests can't — popup clipping, focus traps,
viewport edges — and compiled-CSS assertions now guard against the bundle
drifting from its sources.
Every package still shares one version number across all split repos
(composer require bladewindui/calendar, bladewindui/data-grid,
bladewindui/command-palette, etc., or bladewindui/ui for the full install).