NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2417 most downloaded on Packagist
Easy AdminLTE v4 integration with Laravel
Last release 9 days ago
28 Sep 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 12 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
124 releases · first in 2015
Publish the documentation of every major version by @resslinger in #1385
Full Changelog: v4.0.0...v4.0.1
One column per quarter.
Laravel-AdminLTE 4.0.0 replaces the bundled AdminLTE v3 with AdminLTE v4 — a ground-up rewrite on Bootstrap 5.3, without jQuery . 🚀
Laravel-AdminLTE 4.0.0 replaces the bundled AdminLTE v3 with AdminLTE v4 — a ground-up rewrite on Bootstrap 5.3, without jQuery. 🚀
⚠️ This is a breaking release. Every layout view, every partial and all 43 blade components were rewritten, so a published copy from a 3.x installation will not render correctly. The Upgrade guide below walks through it step by step, and the Upgrading from 3.x page covers every case with more context.
📚 Documentation: https://jeroennoten.github.io/Laravel-AdminLTE
📋 Full changelog: CHANGELOG.md
| 🐘 PHP | 8.2 or higher |
| 🅻 Laravel | 12 or 13 |
| 🎨 AdminLTE | ^4.9 (installed automatically) |
🅱️ Bootstrap 5.3 and no jQuery. The package loads no jQuery at all. The layout is driven by data-lte-toggle attributes and the AdminLTE v4 plugins, and Bootstrap Icons replaced Font Awesome on every default.
🌗 Native color modes. Light, dark and auto, built on the Bootstrap 5.3 color modes and configured through the new color_mode section — including a no-flash script that applies the theme before the first paint. The default menu ships the selector.
🔄 Right-to-left support. A new rtl section with automatic detection from the application locale, which also switches the stylesheet to its RTL build.
🔒 A lockscreen. Opt-in through the new lockscreen section: it keeps the visitor authenticated but locks the panel behind their password. Ships with a controller, its own routes, a RedirectIfLocked middleware, the ScreenWasLocked / ScreenWasUnlocked events, per-user and per-IP throttling, and password verification through the user provider of the configured guard — so a custom hasher is honored, and the password never reaches the session or a log.
🛡️ Self-hosted assets by default. php artisan adminlte:install now publishes the third party assets too. Previously anything unpublished was silently loaded from cdn.jsdelivr.net, which sent the IP address of every visitor to a third party without the operator ever choosing that. The Source Sans 3 web font joined the resource, so the whole panel can be served from your own domain. Without node_modules nothing changes: the install reports exactly which npm packages to add and falls back to the CDN.
⚡ Single page navigation. The new spa_navigation option supports Turbo Drive and Livewire. Every inline script of the package runs again after a body swap, and the Livewire navigation event is bridged to the AdminLTE lifecycle, which the template only wires for Turbo.
🚧 Styled error views. AdminLTE styled 401, 403, 404, 419, 429, 500 and 503 pages, published by --type=full or --with=error_views. The published files only extend the package ones, so a package update reaches them without republishing.
♿ Accessibility. Localized skip links, ARIA landmarks, translated card tools and loading overlays, and prefers-reduced-motion honored by the package's own animations.
content-header · timeline with timeline-item and timeline-label · ribbon · progress-group · user-block · toast · post · direct-chat with direct-chat-msg and direct-chat-contact · navbar-dropdown with navbar-dropdown-item and navbar-custom-menu
The existing components gained slots and options so fewer cases need a published view: card header, title and tabs, info box and small box title, text and footer, progress label, modal dialog and footer, datatable wrapper, slider attributes, maximizable="maximized", callout-link, and stacked progress bars through segments.
rtl · color_mode · assets (with per-file CDN fallback and assets.palette) · print · lockscreen · spa_navigation · layout_compact · sidebar_expand · sidebar_breakpoint · sidebar_theme · sidebar_without_hover · sidebar_nav_pills / _compact / _indent · sidebar_scrollbar_* · right_sidebar_* · css_variables · auth_social_links · logout_method · classes_footer · classes_wrapper · content_top_area / content_bottom_area
🎨 Most brandings need no stylesheet of their own any more: css_variables declares the Bootstrap and AdminLTE custom properties inline in the document head.
All 26 locales now carry the complete key set — 19 of them used to be incomplete and fell back to English silently. 47 new keys cover the error views, the lockscreen, the color mode selector, the card tools, the direct chat, the export buttons and the accessibility labels. The Lao translations moved from the wrong la folder to lo, with the old folder kept as an alias.
@php directives, which made the Blade compiler swallow everything between them and broke the partial for every authenticated user. A test now compiles every shipped view and rejects that mix.compact-mode, nav-compact, nav-indent and nav-pills variants sat on elements where AdminLTE's compound selectors could never match them, so the refinements for the collapsed and hover-expanded sidebar never applied.nav.💡 Work on a branch, and keep your published views until the last step.
Get to Laravel 12 or 13 on PHP 8.2+, verify the application boots, and only then bump this package. Two upgrades at once is how a broken panel becomes impossible to diagnose.
composer require jeroennoten/laravel-adminlte:^4.0⚠️ This is the one that bites hardest, and it produces no error message. A 3.x installation left folders in public/vendor, and the default local path of the Bootstrap bundle is exactly the path 3.x used for Bootstrap 4 — so the stale bundle keeps being served and every data-bs-* behavior dies silently.
rm -rf public/vendor/bootstrap public/vendor/jquery public/vendor/popper \
public/vendor/fontawesome-free public/vendor/overlayScrollbarsnpm i bootstrap@^5.3 bootstrap-icons@^1.13 overlayscrollbars@^2.11 @fontsource/source-sans-3@^5.0
php artisan adminlte:installSkipping the npm i is allowed — the panel then loads those four from cdn.jsdelivr.net, and the installer says so. 🛡️ Prefer self-hosting if visitor IP addresses reaching a third party is a concern for you.
Published copies still emit Bootstrap 4 markup. Back them up first, re-publish, then re-apply your changes on top:
php artisan adminlte:install --only=main_views --force
php artisan adminlte:install --only=auth_views --force
php artisan adminlte:install --only=components --force🔍 php artisan adminlte:status tells you which resources are published and whether they still match the package.
Start from the new file and port your values over, rather than patching the old one:
php artisan adminlte:install --only=config --forceThe three that break silently:
| Option | Do this |
|---|---|
🖼️ logo_img, auth_logo.img.path, preloader.img.path |
AdminLTE v4 moved its images to dist/assets/img/. An old path renders a broken logo and preloader. |
📜 sidebar_scrollbar_auto_hide |
OverlayScrollbars 2.x only accepts never, scroll, leave, move. The one-letter tokens are invalid: 'l' becomes 'leave'. |
💊 sidebar_nav_pills |
The sidebar no longer carries a hardcoded nav-pills. Set this to true to keep the 3.x look. |
🗑️ Removed and no longer read: enabled_laravel_mix, laravel_mix_css_path, laravel_mix_js_path, right_sidebar_slide, right_sidebar_push, right_sidebar_scrollbar_theme, right_sidebar_scrollbar_auto_hide.
🔁 Renamed: layout_dark_mode → color_mode.default, sidebar_collapse_auto_size → sidebar_expand.
grep -rn "fa-\|fas \|far \|fab \|data-widget\|data-card-widget\|content-wrapper\|jQuery" resources/viewsfas fa-user renders nothing. Translate to bi bi-*, or keep loading Font Awesome yourself..wrapper → .app-wrapper, .content-wrapper → main.app-main, navbar → nav.app-header, sidebar → aside.app-sidebar, footer → footer.app-footer.data-widget and data-card-widget no longer exist; AdminLTE v4 uses data-lte-toggle.The catalogue went from 32 AdminLTE v3 entries to 20 jQuery-free ones. Only chartJs, datatables, fullcalendar, select2 and sweetalert2 kept their key — the v3 keys are still recognized and report their replacement. Plugin files are published from your application's node_modules; php artisan adminlte:plugins prints the exact npm i line when one is missing.
php artisan optimize:clearIf you cache routes in production, re-run php artisan route:cache after changing lockscreen.enabled or color_mode.routes — the compiled routes hold whatever was registered when they were built.
AdminLTE 4.9 stopped printing the header, the sidebar and the footer. Set 'print' => ['app'] to restore the old printed page.
To everyone who tested the release candidates and reported back. Please open an issue if the upgrade trips over something this guide does not cover. 💬
The first release of the 4.x line. It replaces the bundled AdminLTE v3
template by AdminLTE v4, which is a ground-up rewrite on Bootstrap 5.3
without jQuery. This is a breaking release, please read the
Upgrading from 3.x
guide before updating.
Everything on this list needs an action on your side. The Upgrading from 3.x guide walks through them with more context.
Requirements
almasaeed2010/adminlte:^4.9. Upgrade the framework
first, verify the application boots, and only then bump this package.print => ['app'] option to get the old behavior
back.Markup
php artisan adminlte:install --only=main_views --force, the same for
auth_views and for components, and re-apply your changes on top..wrapper is now .app-wrapper,
.content-wrapper is now main.app-main, the navbar is nav.app-header,
the sidebar is aside.app-sidebar, the footer is footer.app-footer and the
content lives in .app-content and .app-content-header. The plugins are
driven by data-lte-toggle, the v3 data-widget and data-card-widget
attributes do not exist anymore, and jQuery is not loaded by the package
any longer. Sweep your own views for all of it.'icon' => 'fas fa-user' renders nothing. Translate your icons to bi bi-*,
or keep loading the Font Awesome stylesheet yourself.footer section being defined. It is also
rendered whenever layout_fixed_footer is enabled, because the fixed layout
has to reserve its space. Disable layout_fixed_footer to get no footer.Configuration options that were removed
layout_boxed, layout_dark_mode, sidebar_collapse_auto_size,
sidebar_collapse_remember_no_transition, right_sidebar_slide,
right_sidebar_push, right_sidebar_scrollbar_theme and
right_sidebar_scrollbar_auto_hide left the shipped configuration file.
Delete them from your published config/adminlte.php. The first two are
still read as a legacy fallback, the other six are not read at all.enabled_laravel_mix, laravel_mix_css_path and laravel_mix_js_path are
not read anymore. Use laravel_asset_bundling => 'mix' together with
laravel_css_path and laravel_js_path instead.Configuration options that were renamed or split
layout_dark_mode => true becomes color_mode.default => 'dark'.sidebar_mini is a plain on/off switch now and the breakpoint moved to the
new sidebar_expand option. The 'xs', 'md' and 'lg' values are still
accepted, but they only mean enabled: AdminLTE v4 has no responsive
variants of the mini sidebar.sidebar_collapse_auto_size becomes sidebar_expand.sidebar_scrollbar_auto_hide is handed over verbatim to OverlayScrollbars
2.x, which only accepts 'never', 'scroll', 'leave' and 'move'. The
one letter tokens are invalid, so 'l' has to become 'leave'.sidebar-dark-* and sidebar-light-* skins of classes_sidebar were
removed by AdminLTE v4. Put a Bootstrap background utility on
classes_sidebar and set the color mode on the new sidebar_theme option.nav-pills class. The
pill, the compact and the indented variants are opt-in now, through the new
sidebar_nav_pills, sidebar_nav_compact and sidebar_nav_indent options,
which all default to false. Set sidebar_nav_pills => true to keep the
3.x look.Defaults that changed
| Option | 3.x |
4.x |
|---|---|---|
title |
AdminLTE 3 |
AdminLTE 4 |
logo_img, auth_logo.img.path, preloader.img.path |
vendor/adminlte/dist/img/… |
vendor/adminlte/dist/assets/img/… |
logo_img_class |
brand-image img-circle elevation-3 |
brand-image opacity-75 shadow |
logo_img_xl_class |
brand-image-xs |
brand-image-xs opacity-75 |
classes_body |
'' |
bg-body-tertiary |
classes_brand_text |
'' |
fw-light |
classes_sidebar |
sidebar-dark-primary elevation-4 |
bg-body-secondary shadow |
classes_topnav |
navbar-white navbar-light |
bg-body |
classes_topnav_container |
container |
container-fluid |
classes_auth_btn |
btn-flat btn-primary |
btn-primary |
layout_fixed_sidebar |
null |
true |
sidebar_mini |
'lg' |
true |
sidebar_scrollbar_auto_hide |
'l' |
'leave' |
right_sidebar_theme |
'dark' |
null |
right_sidebar_icon |
fas fa-cogs |
bi bi-gear |
laravel_css_path |
css/app.css |
resources/css/app.css |
laravel_js_path |
js/app.js |
resources/js/app.js |
dist/assets/img/, so a configuration that keeps the old value renders
a broken brand logo, authentication logo and preloader.menu also changed: it ships a darkmode-widget entry, the
fullscreen-widget entry is pinned with topnav_right, every icon is a
bi bi-* one, and the label colors are the semantic danger, warning and
info instead of the extended red, yellow and cyan.Public API
NavbarDarkmodeWidget::makeIconDisabledClass() and makeIconEnabledClass()
were renamed to makeIconDisabledClasses() and makeIconEnabledClasses(),
and joined by makeIconAutoClasses(). A published
navbar-darkmode-widget.blade.php calling the old names fails.LayoutHelper::makeBodyData() returns an empty string now. The color mode
moved to the html element, which LayoutHelper::makeHtmlData() builds, and
the scrollbar settings are handed to OverlayScrollbars directly through
sidebar_scrollbar_options instead of through body data attributes.makeItemClass() and makeInputGroupClass() overrides of InputDate,
InputFile, InputSlider, InputSwitch and TextEditor were deleted. The
base InputGroupComponent still provides both with identical output, so a
published view keeps working, but a subclass that called
parent::makeItemClass() on one of those classes has to be reviewed.
InputSwitch::makeInputGroupClass() became makeSwitchWrapperClass().ProfileColItem and ProfileRowItem extend the new abstract ProfileItem
class, which now declares their public properties and their
makeTextWrapperClass() method.$sizes property of Progress and Modal became a SIZES
class constant. A subclass that redeclared the property has to redeclare the
constant instead.InfoBox progress-theme attribute defaults to null instead of
'white'. Pass progress-theme="white" explicitly for the old look.ProfileWidget icon attribute defaults to bi bi-person-fill instead
of fas fa-user.Plugins
adminlte:plugins catalogue was replaced. It went from 32 AdminLTE v3
entries to 20 jQuery free ones, of which only chartJs, datatables,
fullcalendar, select2 and sweetalert2 kept their key. The v3 keys are
still recognized and report their v4 replacement.node_modules folder of your
application, since AdminLTE v4 bundles no plugin. Install the npm package
first, the command tells you the exact npm i line when it is missing.@section('plugins.<Key>', true) keys and the config attributes of your
views have to be reviewed. See the Changed section below.plugins configuration were bumped: Datatables
1.10.19 to 2.1.8 (with the Bootstrap 5 files instead of the Bootstrap 4
ones), Select2 4.0.3 to 4.1.0-rc.0 (plus the RTL stylesheet), Chart.js
2.7.0 to 4.4.6, Pace 1.0.2 to 1.2.4 and SweetAlert2 8 to 11.Stale published assets
3.x installation left public/vendor/bootstrap, jquery, popper,
fontawesome-free and overlayScrollbars behind, and nothing in the
upgrade removes them. The Bootstrap folder is the dangerous one: the
default local path of the Bootstrap bundle is exactly the path the 3.x
releases used for Bootstrap 4, so the stale bundle keeps being served and
every data-bs-* behavior dies without a console error. Delete those five
folders, then either publish the new ones with
php artisan adminlte:install --only=vendor_assets or switch
assets.mode to 'cdn'.The full installation type now also publishes the error views, so
php artisan adminlte:install --type=full gives the AdminLTE styled 401,
403, 404, 419, 429, 500 and 503 pages without having to know the
--with=error_views flag.
The Source Sans 3 web font joined the vendor_assets resource, so the
typeface AdminLTE is designed with can be served from your own domain
instead of a CDN. Only the regular weight the stylesheet declares is
published (188 KB), not the other seventeen weight and style combinations
the npm package ships.
Right-to-left (RTL) support through the new rtl configuration section, with
an automatic detection based on the application locale.
Color mode support built on the Bootstrap 5.3 native color modes, through the
new color_mode configuration section, including a script that prevents the
flash of an incorrect theme before the first paint.
Asset delivery configuration (assets section): the assets are served from
the published files or from a CDN, with a per file CDN fallback. The CDN
locations follow the AdminLTE version that composer installed.
Support for the optional AdminLTE extended color palette, which also
generates the alert-*, btn-* and btn-outline-* families that the
palette stylesheet does not provide.
New vendor_assets console resource, which publishes the third party assets
that AdminLTE v4 no longer distributes (Bootstrap, Bootstrap Icons and
OverlayScrollbars) from the node modules folder of the application.
New sidebar_expand, sidebar_without_hover, sidebar_theme,
sidebar_nav_aria_label, classes_footer, logout_method and
right_sidebar_* options. The last family covers right_sidebar_title,
right_sidebar_placement, right_sidebar_backdrop, right_sidebar_scroll
and right_sidebar_classes.
Palette tuning through the new assets.palette section: primary remaps the
primary color of the whole template with the AdminLTE data-lte-primary
attribute, and contrast applies the WCAG AA correction of the palette
(data-lte-contrast), which is enabled by default on the v3 palette.
New layout_compact option, which enables the AdminLTE v4 compact mode, and
a new classes_wrapper option for the .app-wrapper element.
New content_top_area and content_bottom_area blade sections, together
with their classes_content_top_area and classes_content_bottom_area
options. They fill the AdminLTE v4 custom content areas.
New color_mode.enabled option, which opts out of the AdminLTE color mode
plugin explicitly when the application does its own theming, and a new
color_mode.routes option that gates the route registration.
Publish groups for the standard Laravel workflow: adminlte-config,
adminlte-views, adminlte-lang and adminlte-assets.
New blade components: content-header (title plus breadcrumbs), timeline
with timeline-item and timeline-label, ribbon, progress-group,
user-block and toast.
New slots and options on the existing components, so fewer cases require publishing a view: the card header, title and tabs, the info box and small box title, text and footer, the progress label, the modal dialog and footer, the datatable wrapper and the slider element attributes.
The AdminLTE v4 direct chat widget, through the new direct-chat,
direct-chat-msg and direct-chat-contact components. The contacts pane is
driven by the AdminLTE plugin, so it needs no javascript of its own.
Navbar dropdown menus, through the new navbar-dropdown,
navbar-dropdown-item and navbar-custom-menu components. They cover the
dropdown-menu-lg, dropdown-menu-xl, dropdown-item-title and
animated-dropdown-menu families of the stylesheet.
AdminLTE styled error views for the 401, 403, 404, 419, 429, 500 and 503
status codes, published into the application with
adminlte:install --only=error_views. The published files only extend the
package ones, so a package update reaches them without republishing. They
are deliberately outside every --type option, since publishing them
replaces error pages the application may already have.
A lockscreen, which keeps the visitor authenticated but locks the panel
behind their password. It is opt-in through the new lockscreen
configuration section and ships as a LockscreenController, its own route
file with the adminlte.lockscreen.lock, show and unlock routes, an
adminlte::auth.lockscreen view, a RedirectIfLocked middleware to protect
the routes of the application, and the ScreenWasLocked and
ScreenWasUnlocked events. The lockscreen.guard, lockscreen.except and
lockscreen.throttle options tune the guard whose user provider verifies the
password, the paths that stay reachable while the panel is locked, and the
unlock attempt limit.
Sidebar navigation variants (sidebar_nav_compact, sidebar_nav_indent and
sidebar_nav_pills), the sidebar_breakpoint option that picks where the
sidebar turns into an overlay, and the sidebar_scrollbar_options,
sidebar_scrollbar_click_scroll and sidebar_scrollbar_disable_below
options of the scrollbars. Note sidebar_breakpoint takes a viewport width
and takes precedence over sidebar_expand: it selects the matching
.sidebar-expand-* class, so the push menu plugin and the media queries of
the stylesheet agree. Only the five widths AdminLTE ships a stylesheet for
(576, 768, 992, 1200, 1400) are honored, any other value is
ignored.
The maximizable="maximized" initial card state, the callout-link support
of the callout component through its new url and url-text options, and
the stacked progress bars through the new segments option.
The Datatables Buttons extension, as the new DatatablesButtons plugin
entry and the datatablesButtons console catalog entry. The with-buttons
attribute used to configure export buttons the installer could not provide.
New plugins configuration entries for the jQuery free libraries the v4
components use: TomSelect, Tabulator, Flatpickr, Quill and
NoUiSlider.
Social login buttons on the authentication views, through the new
auth_social_links and auth_social_links_separator options.
The css_variables, css_variables_scope and css_variables_sidebar
options, which declare the Bootstrap and AdminLTE custom properties inline on
the document head. Most brandings need no stylesheet of their own any more.
The sidebar properties need their own block, since AdminLTE redeclares them
on the sidebar element under a color mode selector.
A dedicated Layout namespace (Layout, Sidebar, ColorMode, Palette,
Direction, BodyClasses and Tokens) that holds the class and attribute
computation the layout views need, plus an Assets namespace
(AssetResolver, AdminLteVersion) and an AssetHelper facade over it.
LayoutHelper keeps its old surface and delegates to them, and it gained
getColorMode(), getHtmlDirection(), isRtlEnabled(), isRtlLocale(),
isDarkModeEnabled(), isFixedNavbarEnabled(), isFixedFooterEnabled(),
makeHtmlData(), makeWrapperClasses(), makeSidebarData(),
makeSidebarNavClasses() and makeSidebarWrapperClasses().
The lo locale, which is the ISO 639-1 code of the Lao translations the
package shipped under the wrong la folder. The old folder is kept as an
alias of the new one.
The missing iframe.php translations of 17 locales and the missing
menu.php ones of 5, which used to fall back to English silently. All 26
locales carry the complete adminlte.php key set now, where 19 of them used
to be incomplete.
47 new translation keys, covering the error views, the lockscreen, the color mode selector, the card tools, the direct chat, the datatable export buttons, the loading overlays and the accessibility labels of the skip links, the navigation landmarks and the toggles.
A composer test and a composer test:coverage script, and package metadata
(homepage, support and extra keywords) on composer.json.
The way back to the login and register pages on the password reset view, which used to be a dead end.
Support for the single page navigation of Turbo Drive and Livewire, through
the new spa_navigation option. Every inline script of the package goes
through a lifecycle helper that also runs after a body swap, and the Livewire
navigation event is bridged to the AdminLTE lifecycle, which the template
only wires for Turbo.
The package author list names its two current maintainers.
The test suite grew from 23 to 63 test files, covering the layout classes, the rendered views, the translations, the lockscreen and the blade compilation of every shipped view.
New Events documentation page, gathering the five events the package
dispatches (BuildingMenu, ReadingDarkModePreference, DarkModeWasToggled,
ScreenWasLocked and ScreenWasUnlocked) with their payload, where a
listener goes on a Laravel 12 application, and the routes the package
registers with the options that gate them.
The documentation gained a How to Use a Component introduction (what a
blade component, an attribute and a slot are), a Where to Start reading
path on the home page, a Next Steps section on the usage page, and a
documented section for the <x-adminlte-navbar-notification> component,
which was only reachable as a menu item before.
laravel_css_path and laravel_js_path defaults changed to
resources/css/app.css and resources/js/app.js. The previous values were
Laravel Mix shaped and made the Vite setup throw on the first request.right_sidebar_theme default changed to null, so the offcanvas panel
follows the color mode of the page instead of forcing the dark one.text-bg-{color} instead of bg-{color}, which keeps
its label readable over the light theme colors.aria-invalid and aria-describedby.layout option instead of the deprecated 1.x dom one, which is still
honored when provided explicitly. Its export tooltips are translated.adminlte:plugins command are the jQuery free libraries
recommended by AdminLTE v4, published from the node modules folder. The
AdminLTE v3 plugin keys are still recognized and report their replacement.
The catalog itself moved into a dedicated PluginsCatalog class.route:cache can no longer freeze the
current value of the options into the compiled routes.protected instead of private, so an
application can override the loading of the views, the translations, the
configuration, the commands, the components and the routes.composer validate --strict before installing, cancels
superseded runs and no longer collects coverage.AdminLte and AdminLtePluginCommand
handlers reachable by static analysis, and the helper and support layer
declares its return types.layout_boxed and LayoutHelper::isLayoutBoxedEnabled(). AdminLTE v4 has no
boxed layout, so the option is read but has no effect. Scheduled for removal
on 5.0.layout_dark_mode, which is still read as a legacy fallback
(true behaves like color_mode.default => 'dark'). Use the color_mode
section instead.LayoutHelper::makeWrapperData(), which returns an empty string. The color
mode is applied on the html element, so use makeHtmlData(). Scheduled for
removal on 5.0.'xs', 'sm', 'md', 'lg', 'xl' and 'xxl' values of
sidebar_mini, which are accepted but only mean enabled.dom option of the config attribute, honored only when it
is provided explicitly. Use the Datatables 2.x layout option.adminlte:plugins, and the AdminLTE v3 color
names behind assets.extended_colors_v3_aliases.la translation folder, kept as an alias of the correct lo one.enabled_laravel_mix, laravel_mix_css_path and
laravel_mix_js_path options. Use laravel_asset_bundling => 'mix' with
laravel_css_path and laravel_js_path instead.layout_boxed, layout_dark_mode, sidebar_collapse_auto_size and
sidebar_collapse_remember_no_transition options left the shipped
configuration file. The last two had no effect on AdminLTE v4, the first two
are still read as a legacy fallback.right_sidebar_slide, right_sidebar_push,
right_sidebar_scrollbar_theme and right_sidebar_scrollbar_auto_hide
options. The right sidebar is a Bootstrap offcanvas panel now, which honors
none of them.makeItemClass() and makeInputGroupClass() overrides of the
form components, and the size arrays of the Progress and Modal
components. Every one of those methods is still available through the base
class with identical output. The size arrays became SIZES class constants,
so a subclass that redeclared the protected property has to redeclare the
constant instead.NavbarDarkmodeWidget::makeIconDisabledClass() and makeIconEnabledClass(),
replaced by makeIconDisabledClasses(), makeIconEnabledClasses() and
makeIconAutoClasses(), which also cover the new automatic color mode.Important, Warning and Information keys of the
pt-br, pt-pt and vi menu.php files. They duplicated the lowercase
keys the package actually looks up..github/ISSUE_TEMPLATE.md file and the Scrutinizer coverage upload of
the test workflow.A published configuration file that predates an asset key, or one trimmed by
hand, resolved the AdminLTE stylesheet and script to null, and the layout
rendered unstyled without a word. The shallow mergeConfigFrom cannot cover
it, and it is skipped altogether once the configuration is cached, so the
asset resolver falls back to the locations shipped by the package. An
explicit null still opts out of an asset.
The compact-mode class moved from the wrapper to the body element, and
the nav-compact, nav-indent and nav-pills variants from the sidebar
menu to the body too. AdminLTE compounds all four with sidebar-mini and
sidebar-collapse on a single element and then reaches the sidebar as a
descendant, so on the previous elements the refinements for the collapsed
and the hover expanded sidebar never applied.
The content_top_area section is emitted above the content header, as the
reference layout does. Its border is designed to sit right under the header.
The skip link pointed at no element, so the AdminLTE accessibility script
fell back to the first nav of the document and "skip to navigation"
focused the header toolbar. The sidebar navigation carries the id now.
A bare empty-option or placeholder attribute on the options component
rendered an option labelled 1, since the boolean reached the entity
decoder.
The slider element and its extra attributes were emitted without a
separator, producing class="…"wire:ignore="".
The progress bar carried an untranslated aria-label, while its stacked
variant used the translation.
The user menu pointed its profile entry at the logout url when the
profile_url option was missing from a published configuration.
The --only and --with help of the console commands never learned about
the vendor_assets and error_views resources.
Every inline script of the package bound on DOMContentLoaded, so none of
them ran again after a Turbo or Livewire navigation: the swapped body
re-executes them, but the document is already loaded and the event never
fires a second time.
The user menu partial mixed the inline @php(...) and the block
@php ... @endphp directives. The block form is matched lazily, so the
compiler swallowed everything in between and emitted the @else and
@endif of the url resolution as literal text, which broke the partial for
every authenticated user. A test now compiles every shipped view and rejects
that mix.
The color mode of a themed modal header is derived from the palette, so the close button of a dark header stays visible with the v3 color aliases too.
The data-lte-toggle="toast" controls resolve a data-bs-target that
carries the leading # of the Bootstrap convention.
The color mode route kill switch was evaluated inside the route file, so
route:cache froze its value into the compiled routes. The check moved to
the service provider.
The package emits its own localized skip links instead of the English ones AdminLTE injects, and the card tools and the loading overlays are translated on every shipped locale.
A dummy configuration file left behind by an interrupted console test used to break every later test run. The suite drops it on startup.
php artisan adminlte:install used to publish only the AdminLTE
distribution, and whatever was missing was silently loaded from
cdn.jsdelivr.net — which means the browser of every visitor sent its ip
address to a third party without the operator ever choosing that. The
vendor_assets resource is now part of the basic installation, so
installing it after npm i keeps the panel on your own domain. The
resource skips whatever the node modules folder does not hold, so an
application without npm keeps working exactly as before, and
google_fonts.allowed => false still drops the web font entirely.lockscreen.throttle. Exhausting them answers 429.
A successful unlock clears the counter.RedirectIfLocked middleware answers a locked JSON request with 423
instead of leaking the response, and only lets the lockscreen endpoints, the
login and logout paths and the explicitly configured lockscreen.except
paths through.http, https and application relative paths, which keeps a
javascript: url out of the markup.Complete the AdminLTE v4 feature surface: direct chat, navbar dropdowns, error views by @resslinger in #1376
Full Changelog: v4.0.0-rc2...v4.0.0-rc3
Broaden the v4 component set, tune the palette and fix the user menu compilation by @resslinger in #1375
Full Changelog: v4.0.0-rc1...v4.0.0-rc2
The first release of the 4.x line. It replaces the bundled AdminLTE v3 template by AdminLTE v4 — a ground-up rewrite on Bootstrap 5.3 , without jQuery
The first release of the 4.x line. It replaces the bundled AdminLTE v3 template by AdminLTE v4 — a ground-up rewrite on Bootstrap 5.3, without jQuery, using Bootstrap Icons.
Warning
This is a breaking release. Please read the Upgrading from 3.x guide before updating.
Two things bite almost every upgrade: published views and components still carry the Bootstrap 4 markup and have to be re-published with --force, and the Bootstrap 4 files a 3.x installation left under public/vendor/ keep being served, silently breaking the new markup. The guide covers both.
| Laravel | 12.x or 13.x (support for 11 and older was dropped) |
| PHP | 8.2 or higher |
| AdminLTE | almasaeed2010/adminlte:^4.8 |
RTL support. A new rtl configuration section, with automatic detection from the application locale. The dir attribute and the RTL variants of the stylesheets are handled for you.
Color modes. Built on the Bootstrap 5.3 native color modes, configured through the new color_mode section, with a script that prevents the flash of an incorrect theme before the first paint. The preference lives in the browser, or on your server through the existing events.
Asset delivery. The new assets section serves the assets from your public folder or from a CDN, with a per file fallback. The CDN locations follow the AdminLTE version that composer installed, so the two can no longer drift apart.
Extended color palette. Enable assets.extended_colors for the AdminLTE palette. The package additionally generates the alert-*, btn-* and btn-outline-* families that the palette stylesheet does not ship, so theme="teal" works everywhere.
adminlte:plugins catalogue publishes from node_modules. The AdminLTE v3 plugin keys are still recognized and report their replacement.vendor_assets console resource, to self-host Bootstrap, Bootstrap Icons and OverlayScrollbars.enabled_laravel_mix, laravel_mix_css_path and laravel_mix_js_path options. Use laravel_asset_bundling => 'mix' with laravel_css_path and laravel_js_path instead.The layout and the asset helpers were split into focused classes. Layout\Tokens now holds the whole vocabulary of the AdminLTE distribution — every class name, attribute and breakpoint it defines — so a future template update touches one file instead of logic spread over the helpers and the views.
The test suite grew from 251 to 613 tests (6699 assertions). Every blade component is rendered with every attribute it accepts and checked against the markup AdminLTE v4 removed, the helpers are covered branch by branch, and every defect found while preparing this release has a regression test. The result was additionally verified on a real Laravel application with the assets published locally.
The color mode selector and the navbar togglers introduce eight new translation strings (search, toggle_fullscreen, toggle_right_sidebar, toggle_color_mode, color_mode_light, color_mode_dark, color_mode_auto, close). They currently exist in English and German only. Every other locale falls back to English, so nothing breaks, but translation pull requests are very welcome.
Bump rollup from 4.34.8 to 4.59.0 by @dependabot [bot] in #1368
Full Changelog: v3.15.3...v3.16.0
Bump vite from 5.4.14 to 5.4.21 by @dependabot [bot] in #1354 and #1358
.scrutinizer.yml configuration to use newer PHP version by @dfsmania in #1355, #1359 and #1364Full Changelog: v3.15.2...v3.15.3
Allow using tooltips on profile item components by @dfsmania in #1352
Full Changelog: v3.15.1...v3.15.2
Fix Favicon Path for MsApplication by @dfsmania in #1342
Full Changelog: v3.15.0...v3.15.1
Bump vite from 5.4.8 to 5.4.14 by @dependabot in #1333
Full Changelog: v3.14.3...v3.15.0
Implement GitHub page for docs by @gpibarra in #1312
Improve style on Datatables component when using responsive extension by @dfsmania in #1320
Full Changelog: v3.14.1...v3.14.2
Revert type='module' on components scripts due to backward compatibility issues by @dfsmania in #1313
Full Changelog: v3.14.0...v3.14.1
Auto show right sidebar when section is present by @dfsmania in #1301
Full Changelog: v3.12.1...v3.14.0
Caution
The right-sidebar section was renamed to right_sidebar to keep consistency with other section names (see details on #1301). So you should update your views extending this template if you were using that section. Also, it's recommended to review and update the package published views if it's your case.
While including Vite Support the old Laravel Mix configuration was reworked. This new version would still be compatible with the old configurations options, however we recommend migrating to the new one:
/*
|--------------------------------------------------------------------------
| Laravel Mix
|--------------------------------------------------------------------------
|
| Here we can enable the Laravel Mix option for the admin panel.
|
| For detailed instructions you can look the laravel mix section here:
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
*/
'enabled_laravel_mix' => false,
'laravel_mix_css_path' => 'css/app.css',
'laravel_mix_js_path' => 'js/app.js', /*
|--------------------------------------------------------------------------
| Laravel Asset Bundling
|--------------------------------------------------------------------------
|
| Here we can enable the Laravel Asset Bundling option for the admin panel.
| Currently, the next modes are supported: 'mix', 'vite' and 'vite_js_only'.
| When using 'vite_js_only', it's expected that your CSS is imported using
| JavaScript. Typically, in your application's 'resources/js/app.js' file.
| If you are not using any of these, leave it as 'false'.
|
| For detailed instructions you can look the asset bundling section here:
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
*/
'laravel_asset_bundling' => false,
'laravel_css_path' => 'css/app.css',
'laravel_js_path' => 'js/app.js',See details on Wiki / Misc Config. Also, if you want to use the new configuration options with VITE and you had previously published the package views, then you'll need to update them.
PluginsResource: Treat moment.js as independent plugin by @dfsmania in #1295
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →