Releases: bladewindui/ui
Release list
v5.0.0
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).
v4.3.0
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.3No 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: hiddenancestors instead of being clipped, and reposition on scroll and resize while open. hide_after_clickworks again. Item clicks are bound once (no duplicate handlers on reopen) and the hide is deferred a tick so an inlineonclickor a link navigation still runs. The attribute now acceptstrue,1,"1"and"true".- Outside-click detection moved to
mousedownand 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
barsize, 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 --forceFull changelog: mkocansey/bladewind@v4.2.1...4.3.0
v4.2.1
This release adds three new components, input masking, and several packaging improvements since v4.1.0. (
New Components
- Sortable — drag-and-drop sortable lists powered by SortableJS. Supports shared lists, cloning, drag handles, item filtering, multi-drag, and swap mode, with built-in form-submission/order persistence.
mkocansey/bladewind-sortable - Popover — click/hover popovers with positioning and rich content.
mkocansey/bladewind-popover - Tooltip — lightweight tooltips.
mkocansey/bladewind-tooltip
New Features
- Input masking on the Input component, modelled on the Alpine.js mask plugin:
- Static templates with
9(digit),a(letter), and*(alphanumeric) wildcards, e.g.mask="(999) 999-9999". - Dynamic masks via
dynamicMask, including a built-increditCardmask (Amex / Diners / Visa-style) that needs no JavaScript. - Money formatting via
money="true"with configurable decimal/thousands separators and precision.
- Static templates with
Changes & Improvements
- Bell and Notification are now their own installable packages (
mkocansey/bladewind-bell,mkocansey/bladewind-notification), previously bundled with the Alert package. - Public assets relocated to the core package (
mkocansey/bladewind-core) and the compiled CSS rebuilt. - The required-field asterisk now only shows when a placeholder is present.
- Added README files across all packages.
- Build/dev dependency bumps (qs, express, serialize-javascript, terser-webpack-plugin).
Installation
composer require mkocansey/bladewind # full library
composer require mkocansey/bladewind-sortable # just the new Sortable component
composer require mkocansey/bladewind-popover
composer require mkocansey/bladewind-tooltipAfter updating, republish assets to pick up the rebuilt CSS/JS:
php artisan vendor:publish --tag=bladewind-public --forceFull changelog: mkocansey/bladewind@v4.1.0...v4.2.1
v4.1.0
Individual component packages are now available
This release fixes the CI pipeline that splits each packages/* directory into its own installable repo. All 43 individual component packages (mkocansey/bladewind-button, mkocansey/bladewind-table, mkocansey/bladewind-accordion, etc.) are published and installable from Packagist**, alongside the full mkocansey/bladewind package.
If you only need a handful of components, you can now install just what you use:
composer require mkocansey/bladewind-accordion
composer require mkocansey/bladewind-table…or pull in everything as before:
composer require mkocansey/bladewindFixed
- Split-package publishing was silently broken since the restructuring. The GitHub Action responsible for mirroring each
packages/*directory into its own repo was passing the access token through an input the action doesn't support, causing every job to report "success" while pushing nothing. Fixed by passing the token via the correct environment variable. (#3e07eda) - Split repos were never receiving version tags, so Packagist had no releases to register even once content started landing. The workflow now passes the triggering tag through to each split destination. (#13f84ae)
Removed
- Permanently removed the workflow entry that would have split
packages/metainto a repo namedbladewind— that name belongs to this monorepo's own GitHub remote, and the entry being live caused a serious incident where the split action force-overwrote this repo'smainbranch with just three files.
Docs
- Corrected
RELEASING.md: fixed an incorrect repo-name reference and replaced an inaccurate claim about howmkocansey/bladewindresolves on Packagist with an accurate description of the architecture, plus a prominent warning against ever naming a split targetbladewind. (#bcfca0a)
Internal
- Bumped inter-package version constraints from
^4.0to^4.1to start the next development iteration, per the standardmonorepo-builderrelease flow. (#b49028b)
Full changelog: [v4.0.0...v4.1.0](https://github.com/mkocansey/bladewind/compare/v4.0.0...v4.1.0)
v3.3.0
Release Notes
Enhanced Button and Table Components with Icon Type Support
This release introduces improved support for icon types within the BladeWind components library. The following enhancements and changes have been made:
Improvements
- Table Component
- Added support for specifying icon types (
solidoroutline) on action buttons in data tables. button_outlineallows you to opt either for outlined or filled action buttons.- The action icons are now defined as an array instead of strings separated by pipes. The pipes approach will be supported till v4.0
- Added support for specifying icon types (
Before...
$action_icons = [
"icon:chat | tip:send message | color:green | click:sendMessage('{first_name}')",
"icon:pencil | click:redirect('/user/{id}')",
"icon:trash | color:red | click:deleteUser({id}, '{first_name}')",
];Now...
$action_icons = [
[
'icon' => 'chat',
'icon_type' => 'solid',
'tip' => 'send message',
'color' => 'green',
'click' => "sendMessage('{first_name}')",
],
[
'icon' => 'pencil',
'click' => "redirect('/user/{id}')",
],
[
'icon' => 'trash',
'color' => 'red',
'click' => "deleteUser({id}, '{first_name}')",
],
];- Card and Statistics Component
- Both components have been refactored to support
radiusto change how rounded the components look.
- Both components have been refactored to support
v3.2.0
Release Notes
This release includes the following enhancements and improvements:
-
Table Component Enhancements:
- Refined table styles in
table.cssand the Blade table component to improve appearance and consistency, ensuring a more polished and user-friendly interface. - The search input for
searchabletables can now be placed anywhere else on the page. This allows you to place the input probably next to other components. #540
- Refined table styles in
-
Accordion Improvements:
- Introduced a new
contentCanCloseprop for accordion components, providing better control over content closing behavior.
- Introduced a new
-
Table OnClick Handling:
- Refactored the table and table-icons components: Moved row
onclickhandlers to individual table cells for more granular event management, and now theonclickprop is also passed to table-icons. Action icons will no longer trigger custom onclick functions.
- Refactored the table and table-icons components: Moved row
For more details, see the merged pull request: Merge development into main (#553) and the related commits:
Full Changelog: mkocansey/bladewind@v3.1.7...v3.2.0
v3.1.7
Release Notes
Summary
This release introduces several UI improvements and new features across Bladewind components, focusing on enhanced customization, consistency, and flexibility. Key changes include the addition of configurable border radius options for cards and modals, improved shadow and border styling, advanced accordion spacing options, enhanced pagination with dynamic support, and various minor tweaks for usability and appearance.
Notable Changes
UI Customization and Consistency
- Added a new
getRadiusStringhelper function to standardize border radius classes. - Updated
cardandmodalcomponents to support configurableradiusoptions for more consistent and customizable rounded corners. - Improved shadow and border colors for card and statistic components—visuals are more neutral and consistent.
- Enhanced card component hover effects for a better user experience.
Accordion Component Enhancements
- Introduced a
noPaddingoption for accordion components to allow more control over internal spacing. - Adjusted internal padding and updated property naming for "can open multiple" functionality to improve consistency.
Minor Component Updates
- Updated placeholder rendering in the
filepickercomponent to display a required icon when appropriate by @ntbutler-nbcs. - Tweaked icon and spacing styles in accordion items for better appearance.
- Added more Tailwind border radius classes to the precompiled CSS for expanded styling support.
Configuration Updates
- Default border radius settings for buttons, cards, and modals in
config/bladewind.phphave been updated to match new customization options.
Full Changelog: mkocansey/bladewind@v3.1.6...v3.1.7
v3.1.6
Release Notes
This release includes important bug fixes and improvements for file handling and table action parsing in Blade components.
File Picker Plugin Registration Improvements
- FilePond image plugins, including
FilePondPluginImageExifOrientation, are now registered only when$hasImageFilesis true. - This prevents unnecessary plugin loading and reduces the risk of errors in file picker functionality.
- Relevant changes:
resources/views/components/filepicker.blade.php
Table Action Parsing and Modal Placeholder Fixes
- Action strings in tables are now split using
explode(':', $this_action, 2), limiting the split to two parts. This ensures parameters containing colons are parsed correctly, preventing modal action errors. - The
build_clickfunction has been updated to accurately match and replace modal placeholder values wrapped in single quotes, improving data binding for table actions. - Relevant changes:
resources/views/components/table.blade.php
New Contributors
- @kusowl made their first contribution in https://github.com/mkocansey/bladewind/pull/547
Full Changelog: mkocansey/bladewind@v3.1.5...v3.1.6
v3.1.5
Release Notes
JavaScript: Select Component Filtering and Reset Logic
- Added a
skipResetproperty to theBladewindSelectclass for more granular control over reset behavior during filtering. - Updated the
filtermethod signature to accept askipResetparameter. - Refactored the
selectmethod to prevent unnecessary instantiation and resetting of related select components via the newskipResetflag. - Blade component usage now passes the
skipResetargument (false) to thefiltermethod for correct UI reset behavior.
Blade: Table Component Row Interactivity
- Table row rendering now adds a
cursor-pointerclass and anonclickhandler when the$onclickvariable is set, making rows clickable for improved UX. - A temporary
@dump($row)statement is included for debugging and inspecting row data during development.
For the complete list of changes and code details, see the merged PR: #532.
Other Changes
- Enhance theme handling and modal responsiveness by @mkocansey in https://github.com/mkocansey/bladewind/pull/525
- Bump on-headers and compression by @dependabot[bot] in https://github.com/mkocansey/bladewind/pull/515
- Merge Development into Main by @mkocansey in https://github.com/mkocansey/bladewind/pull/526
- Minify bladewind-ui CSS and update select.js by @mkocansey in https://github.com/mkocansey/bladewind/pull/527
- Merge Development into Main by @mkocansey in https://github.com/mkocansey/bladewind/pull/528
- Merge V3 0 x into development by @mkocansey in https://github.com/mkocansey/bladewind/pull/531
- Bump sha.js from 2.4.11 to 2.4.12 by @dependabot[bot] in https://github.com/mkocansey/bladewind/pull/530
- Merge Development into main by @mkocansey in https://github.com/mkocansey/bladewind/pull/532
- Add onclick handler support to table rows by @mkocansey in https://github.com/mkocansey/bladewind/pull/536
- Merge development into main by @mkocansey in https://github.com/mkocansey/bladewind/pull/537
Full Changelog: mkocansey/bladewind@v3.1.4...v3.1.5
v3.1.4
Release Notes
The updates include improvements and cleanups across JavaScript, CSS, and Blade components to enhance consistency, styling, accessibility, and dark mode support throughout the BladewindUI library.
Key Changes
JavaScript
- Refactor: Removed unused
changeCsscalls frompublic/js/select.jsfor cleaner code. - Improvement: Updated the
labelTemplatefunction to better support dark mode and refine SVG icon styling.
CSS
-
Input & Select Styling:
- Replaced
text-slate/border-slatewithtext-gray/border-grayfor better design consistency. - Improved dark mode styling for inputs and selects, adjusting opacity and colors.
- Replaced
-
Table Styling:
- Enhanced borders and hover effects in dark mode.
- Improved text and background colors for readability.
-
Tabs Styling:
- Refined border and text colors in dark mode.
- Increased font size for better accessibility.
Blade Components
-
Button & Checkbox:
- Added dark mode-specific text and border colors for better appearance.
-
Modal & Pagination:
- Improved overflow handling.
- Adjusted borders for dark mode.
-
Select:
- Improved focus and placeholder text styles for dark mode.
User Experience Improvements
- Consistent styling and color use across all components.
- Better accessibility and readability, especially in dark mode.
- Codebase cleanup for easier future maintenance.
Additional Information
- This is a summary of the most recent merged PR. There are 278 merged PRs in total for this repository.
- To view more merged PRs, see: All merged PRs in mkocansey/bladewind
- The results above are incomplete due to GitHub API limits; for full history, use the link above.