Releases: ColorlibHQ/AdminLTE
Release list
v4.3.1 — ribbons now fill the card corner
Patch release fixing a placement bug in the ribbon component introduced in 4.3.0. If you are picking up ribbons, start here rather than 4.3.0.
Fixed
Ribbons left the card corner bare. The banner was centred on its clipping square. That reads as the natural placement, but the centre of a square is the point furthest from its corner along the diagonal — so the banner sat too far into the card, left a large empty triangle at the very corner it exists to cover, and had its label cut off by the clip.
The banner's centre now sits on the corner's bisector at ~46% of the square's side, which both fills the corner and leaves the label room, and its width is the chord across the corner rather than the square's diagonal — so the ends still cut flush. RTL mirrors exactly as before.
Label length is now documented. The banner is clipped to the corner, so only about 64px of it is readable at the default size — roughly six characters. .ribbon-lg and .ribbon-xl give more room. The demo uses short labels accordingly.
Nothing else changed: no API change, no new classes, and the fix is CSS-only (+28 bytes gzip).
Install
npm install admin-lte@4.3.1<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.3.1/dist/css/adminlte.min.css">
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.3.1/dist/js/adminlte.min.js"></script>Everything new in this line is described in the 4.3.0 release notes. Full details in the CHANGELOG.
What's Changed
Full Changelog: v4.3.0...v4.3.1
v4.3.0 — Sidebar search, ribbons, social widgets, gallery & search results
AdminLTE 4.3.0 adds a new JavaScript plugin, two CSS components, three demo pages and three documentation pages — and fixes a duplicate-id bug that could affect your own code.
Sidebar search
A new SidebarSearch plugin filters the sidebar menu as you type. Drop data-lte-toggle="sidebar-search" on an input and it works:
<div class="sidebar-search" role="search">
<label for="sidebar-search-input" class="visually-hidden">Filter menu</label>
<input type="search" id="sidebar-search-input" class="form-control form-control-sm"
placeholder="Filter menu…" autocomplete="off"
data-lte-toggle="sidebar-search" data-lte-target="#navigation">
</div>A parent survives if any descendant matches and expands to reveal it. A group whose own name matches keeps its entire subtree, so expanding it is never a dead end. Clearing the field — ESC, the native clear button, or clear() — puts every submenu back exactly as you left it. Entries are hidden with the hidden attribute rather than a class, so they leave the accessibility tree as well as the layout.
Fires filtered.lte.sidebar-search with { query, matches }. Both listeners are delegated on document, so a sidebar rendered after load — Turbo Frame, client-side router — needs no re-initialisation. Full reference →
The app header also gains a navbar search and a language menu.
Ribbons
Corner banners in three sizes:
<div class="card">
<div class="ribbon-wrapper">
<div class="ribbon text-bg-primary">New</div>
</div>
<div class="card-body">…</div>
</div>The geometry derives from one custom property, so rescaling means overriding --lte-ribbon-size and nothing else. The clip inherits the parent's corner radius, so it follows a rounded card instead of cutting a square out of it, and RTL mirrors the corner and the rotation with no extra markup.
Social & post widgets
.user-block, .post, .widget-user, .widget-user-2 and .description-block — profile cards and activity feeds. The class names match v3, so markup you are migrating works unchanged, but the implementations are grid and flex rather than floats, and colour comes from Bootstrap utilities. .user-block renders avatar, name and meta from flat markup with no wrapper element.
New pages
- Gallery — a filterable media library that carries no image library at all. The tiles are a Bootstrap
.ratiobox plus.object-fit-cover; the filter is page-local script. Nothing is added toadminlte.js. - Search Results — typed results (page / user / file / project) over a tabbed filter, with a refine panel, related searches and a worked no-results state.
- Ribbons — every colour, size and placement.
- General UI Elements gains nav tabs & pills, modals and offcanvas.
Documentation
New Card and Miscellaneous component references mean every AdminLTE component that ships CSS now has a reference page: cards, callouts, ribbons, small box, info box, timeline, the social/post widgets, progress-bar sizes, themed toasts and the image-size utilities. Plus a SidebarSearch page and a recipe on wiring a language switcher to a real locale.
Fixes
#navigationresolved to the app header, not your menu. The accessibility module resolved its skip-link targets with a single selector list (#navigation, nav, [role="navigation"]), but a selector list resolves in document order rather than by which selector matched. On any page where a header<nav>precedes a menu already carryingid="navigation", the header was stamped with the id a second time — leaving a duplicate id, pointing "Skip to navigation" at the header, and silently redirectingdocument.querySelector("#navigation")in application code to the wrong element. An element the page already gave the id to now always wins.- Seven order links on dashboard v2 pointed at a page that does not exist.
Quality
- Accessibility gate widened from 10 to 16 pages, zero serious/critical violations. It caught three Bootstrap-default contrast misses on the new pages, all fixed at the source rather than waived.
- Unit tests up to 62 (from 51).
- A Playwright pass over all 88 built pages: no console errors, no failed requests, no dead links.
Install
npm install admin-lte@4.3.0<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.3.0/dist/css/adminlte.min.css">
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.3.0/dist/js/adminlte.min.js"></script>Full details in the CHANGELOG.
What's Changed
- feat(select2): opt-in compatibility theme, v3→v4 plugin migration table, real remote-data demo by @puikinsh in #6098
- chore(docs): remove the dead faq.mdx by @puikinsh in #6099
- 4.3.0 — sidebar search, ribbons, social widgets, gallery and search results by @puikinsh in #6100
Full Changelog: v4.2.0...v4.3.0
AdminLTE 4.2.0
AdminLTE 4.2.0 is a focused release that mostly answers one question the community kept asking: how do I stop AdminLTE from managing my theme? It also ships the lifecycle API that client-side rendered layouts have been waiting for, plus three new demo pages.
Highlights
Color mode gets out of your way
Applications with their own theming — a custom Bootstrap theme, a per-user preference rendered by Laravel or Django, or simply your own switcher — can now turn the bundled module off with a single attribute. No JavaScript, no load-order concerns, works straight from dist:
<html data-lte-color-mode="off">ColorMode then never writes data-bs-theme: not on load, not when a [data-bs-theme-value] toggle is clicked, not when the OS preference changes. The pre-paint snippet in <head> honours it too, so nothing touches your theme before first paint either.
And if all you need is a server-rendered default, you no longer have to opt out at all. The theme is now resolved from the visitor's stored choice → the theme your page declared → the OS preference, so this survives both page load and later OS preference changes:
<html lang="en" data-bs-theme="dark">It stays a default: the moment a visitor picks a theme themselves, their choice wins on that device.
Thanks to @cytech for the report (#6084), and to @dfsmania (#6093) for putting markup-as-a-preference on the table in the first place.
initialize() / teardown() for client-side rendered layouts
Frameworks that build the layout after DOMContentLoaded into a persistent <body> — GWT and similar widget toolkits — used to find no sidebar and no menu when AdminLTE ran its init pass. Two new exports fix that:
import { initialize, teardown } from "admin-lte"
initialize() // re-run every plugin's init against the DOM as it stands right now
teardown() // drop this cycle's listeners when you unmount the layoutinitialize() is safe to call repeatedly — it tears the previous cycle down first, so listeners never stack. Thanks @themarioga (#6083).
New demo pages
forms/advanced.html— the recommended Tom Select and Flatpickr integrationsforms/editors.html— Quill 2 in both the snow (toolbar) and bubble (inline) themeslayout/top-nav.html— a sidebar-less layout with primary navigation in the app-header
Fixes
- A sidebar rendered as
<body class="sidebar-collapse">no longer springs open on wide screens — the responsive pass was overwriting the state declared in the markup (#6076, thanks @dfsmania) - The Color Mode docs page no longer runs two switchers at once: it still carried the pre-4.1 inline toggler, which bound its own handlers to the same buttons as the bundled module and persisted to a different
localStoragekey
Maintenance
Every dev dependency refreshed to its latest release, including the eslint-plugin-astro 3 and eslint-plugin-unicorn 73 majors. TypeScript stays on 6.0.3 for now — 7.0 has shipped, but typescript-eslint and @astrojs/check both still cap the peer range, so installing it breaks npm ci outright. The unit suite grew to 51 tests, 13 of them covering the new color-mode precedence chain and the opt-out.
Install
npm install admin-lte@4.2.0<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.2.0/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.2.0/dist/js/adminlte.min.js"></script>// Or as a module
import { PushMenu, ColorMode } from "admin-lte"Full details in the CHANGELOG.
v4.1.0
AdminLTE 4.1.0 is the biggest developer-experience release of the 4.x line: the npm package finally speaks modern JavaScript (ESM + TypeScript types), the components got a real lifecycle API, the dark-mode switcher ships in the bundle, and the project has its first automated test suite — including an accessibility gate that already runs clean.
Highlights
Modern npm packaging
// This now works out of the box in Vite/webpack — with full type checking:
import { PushMenu, CardWidget, ColorMode } from "admin-lte"- New ESM bundle (
dist/js/adminlte.esm.js+.min) alongside the UMD build - TypeScript declarations ship under
dist/js/types/—types,module, and a fullexportsmap (withsassandstyleconditions) in package.json bootstrapis a peer dependency, so compiling@use "admin-lte/src/scss/adminlte"works right afternpm install admin-lte
Component lifecycle API
Every component now follows the Bootstrap contract: getInstance(element), getOrCreateInstance(element, config?), and dispose(), backed by a WeakMap registry (Turbo-safe by construction). The data API uses delegated document-level listeners, so cards and toggles inserted after page load — AJAX partials, Turbo Frames — work without re-initialisation. And the sidebar is finally scriptable:
PushMenu.getInstance(document.querySelector(".app-sidebar"))?.collapse()Behavior change: all plugin events are now bubbling CustomEvents dispatched on the component's root element, animated actions have cancelable "before" events (e.g. veto remove.lte.card-widget with preventDefault()), and "after" events fire when the animation completes. If you listened for card events on the tool buttons, listen on the card or on document instead — see the CHANGELOG for the full event table.
ColorMode in the bundle
The light/dark/auto switcher is now a proper module in adminlte.js — persisted, OS-preference aware, with a changed.lte.color-mode event. No more copy-pasting the demo's inline script.
First automated tests + accessibility gate
- 30-unit vitest suite wired into
npm run production npm run test-a11yruns axe-core (WCAG 2.1 A/AA) against seven built demo pages and fails on serious/critical violations — currently zero, after fixing the findings it immediately surfaced (breadcrumb link contrast, keyboard-unreachable chat pane)
New pages & slimmer CSS
- Starter page (the blank v3 starting point, back by popular demand), a dedicated ApexCharts page with six chart types, and a Users management demo
- Docs/FAQ styles moved to a separate
adminlte-docs.css:adminlte.min.cssis now ~40.4 KB gzip, down from 46.7 KB in 4.0.3 - The 1,766-line vendored Bootstrap variables fork is gone — AdminLTE's ~10 overrides live in a small
_bootstrap-overrides.scss(compiled CSS byte-identical)
Install
npm install admin-lte@4.1.0<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.1.0/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.1.0/dist/js/adminlte.min.js"></script>// Or as a module
import { PushMenu } from "admin-lte"Full details in the CHANGELOG.
v4.0.4
AdminLTE 4.0.4 is a quality patch driven by a full-code audit of the template — JavaScript, Sass, demo markup, packaging, and the accessibility layer. No breaking changes; upgrading from any 4.0.x is drop-in.
Heads-up for npm users: 4.0.3 was tagged but never published to npm, so this release moves the registry directly from 4.0.2 to 4.0.4. The npm package is also much leaner now — it ships the library (CSS/JS/Sass/TS sources) without the demo HTML, dropping from 12.7 MB to 9.0 MB unpacked.
Fixes
- Every dist stylesheet shipped the docs-site styles twice — a duplicated Sass import cost ~23 KB in each of the four CSS bundles. Removed once and locked in with tighter bundlewatch budgets.
- Accessibility module keyboard handling: removed a document-edge Tab wrap that acted as a page-level keyboard trap (WCAG 2.1.2); arrow keys are no longer intercepted while typing in inputs/textareas/selects; modal focus now restores to the actual triggering element (and respects
[autofocus]). - Hotwired Turbo: skip links, the live region, and the sidebar overlay are no longer duplicated on every Turbo navigation when restoring cached snapshots (follow-up to the Turbo support shipped in 4.0.3, #6059).
- Card widget:
remove()now actually removes the card from the DOM (hidden form fields no longer keep submitting); toggling collapse mid-animation reverses it instead of being swallowed; widget events dispatch on the toggle button rather than a clicked icon. - Slide animations are cancelable — rapid-toggling a treeview or card no longer desyncs its display state.
- Treeview: fixed an accordion guard that could slide an already-open menu shut; submenu toggles now expose
aria-expandedto assistive tech. - PushMenu: sidebar state now reacts only to genuine breakpoint crossings via
matchMedia— mobile URL-bar/keyboard resizes no longer re-expand a sidebar you collapsed; fixed a 992px off-by-one between JS and CSS. - Callout variants never recolored links/inline code (two custom properties were referenced but never defined); the user-menu footer used a Bootstrap token that doesn't exist in 5.3.
- Demo pages: added the missing forgot-password page (a dead link on both login pages since 4.0.0); Bootstrap JS CDN pin now matches the compiled CSS (5.3.8); removed the non-functional navbar-search button; every page has a proper
<h1>; breadcrumbs are navigation landmarks; all icon-only buttons carryaria-labels; auth forms have real labels and<main>landmarks.
Maintenance
- npm packaging hardened: the package is now built from a
filesallowlist instead of.npmignore, so stray local files can never leak into the tarball again, andengines: node >= 20is declared. - ACCESSIBILITY-COMPLIANCE.md rewritten as an accurate accessibility statement — what's implemented, what's partial, and the roadmap — replacing the aspirational checklist. Demo meta descriptions updated to match.
Install
npm install admin-lte@4.0.4<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.4/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.4/dist/js/adminlte.min.js"></script>Full details in the CHANGELOG.
v4.0.3
AdminLTE 4.0.3 — Hotwired Turbo support, fullscreen & a11y fixes, and a fully modernized build toolchain (Astro 7 / Vite 8).
📖 Documentation · 🎨 Live preview · 🚀 Migration from v3
✨ Added
- Hotwired Turbo / Turbo Drive support — the JS components (PushMenu, TreeView, and friends) now re-initialise on
turbo:load, so they keep working after Turbo swaps the<body>on in-app navigation instead of going dead after the first link click. Each init cycle uses anAbortControllerwhose signal is aborted onturbo:before-render, sowindow/documentlisteners are torn down before re-init rather than stacking up on every navigation. (#563, #5890 — diagnosed and prototyped by @MarkDaleman in #6058)
🐛 Fixes
- Fullscreen state sync — the fullscreen icons and the
maximized/minimizedevents are now driven by the nativefullscreenchangeevent instead of the request/exit calls. The UI no longer flips when a fullscreen request is denied (permissions policy, missingallowfullscreen, lost user gesture), and it stays in sync when the user exits withESCorF11. (builds on @webgo-oss's report in #6055) - Accessibility — form inputs lacking both an
idand anamenow receive a stable, generated error-message id instead of colliding on a shared-errorid and appending a new orphaned error node on every re-validation. (#6055, reported by @webgo-oss)
🧰 Maintenance
- Every dependency bumped to its latest release, including four majors — Astro 6 → 7 (which pulls in Vite 8), @astrojs/mdx 6 → 7, eslint-plugin-astro 1 → 2, and eslint-plugin-unicorn 68 → 69 — plus ESLint, Prettier, Stylelint, PostCSS, Rollup and typescript-eslint. No source changes were required: the full
npm run productionpipeline (lint + Astro build + bundlewatch) passes andnpm auditstays at 0 vulnerabilities. This single update supersedes Dependabot PRs #6065–#6074.
📦 New here? The AdminLTE family
AdminLTE 4 is also available as official framework integrations: adminlte-vue (Vue 3 & Nuxt), adminlte-react (React & Next.js), adminlte-django, and adminlte-laravel.
Install
npm install admin-lte@4.0.3Or via CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.3/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.3/dist/js/adminlte.min.js"></script>See CHANGELOG.md for the full notes.
Full Changelog: v4.0.2...v4.0.3
AdminLTE 4.0.2
AdminLTE 4.0.2 — a housekeeping patch: building from source is clean again.
📖 Documentation · 🎨 Live preview · 🚀 Migration from v3
🐛 Fixes
npm run productionworks from a source checkout again — the dev-only social preview script (scripts/social-preview.mjs, new in 4.0.1) tripped 9 ESLint errors during the lint stage and failed the build. The script is now fully lint-clean. (#6048, reported by @lfiorini)
🔒 Security
- Hardened the social preview script's tiny static file server against path traversal and error detail leakage (CodeQL alerts #87–#92). This script is dev-only and has never been part of the npm package — published builds were never affected.
📦 New here? The AdminLTE family
AdminLTE 4 is also available as official framework integrations: adminlte-vue (Vue 3 & Nuxt), adminlte-react (React & Next.js), adminlte-django, and adminlte-laravel.
Install
npm install admin-lte@4.0.2Or via CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.2/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.2/dist/js/adminlte.min.js"></script>See CHANGELOG.md for the full notes.
Full Changelog: v4.0.1...v4.0.2
Full Changelog: v4.0.1...v4.0.2
v4.0.1
AdminLTE 4.0.1 — first patch for the v4 line, and the launch of the AdminLTE family.
📖 Documentation · 🎨 Live preview · 🚀 Migration from v3
🎉 AdminLTE is now a family
The classic HTML/CSS/JS template you know is no longer alone. AdminLTE 4 is now available as four official framework integrations, each a first-class package maintained under ColorlibHQ:
| Project | For | Highlights |
|---|---|---|
| adminlte-vue | Vue 3 & Nuxt | 45+ typed components, composables, SSR-safe theming, ⌘K command palette |
| adminlte-react | React & Next.js (App Router / RSC) | 30+ typed components, dark mode, ⌘K command palette |
| adminlte-django | Django | Config-driven sidebar with per-request filters, 33+ components, themed django.contrib.admin, {{ form }} renderer |
| adminlte-laravel | Laravel | Blade integration, Vite-ready |
All four build on the same Bootstrap 5.3 + vanilla JS core as this package, so designs and docs carry over. If you build admin panels in any of these ecosystems, give them a ⭐ and tell us what you'd like to see next.
🐛 Fixes
- No more dark-mode flash — the stored color mode is now applied before first paint, so reloading a page in dark mode no longer flashes light first. (#6043, reported by @bsshreesha)
- Mailbox text overflow — long subject and preview text in the inbox list is now truncated instead of breaking the layout. (#6044, reported by @Oscurlo)
- Accessibility landmark fix —
accessibility.jsno longer assignsrole="navigation"to<ul>/<ol>elements, which broke list semantics and failed the Lighthouse accessibility audit. (#6038, reported by @lfiorini)
🧰 Maintenance
- All dependencies updated to latest;
axiospinned via npm overrides to clear a transitive advisory — localnpm auditreports 0 vulnerabilities. - New dev-only social preview generator (
scripts/social-preview.mjs), excluded from the npm package.
Install
npm install admin-lte@4.0.1Or via CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.1/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.1/dist/js/adminlte.min.js"></script>See CHANGELOG.md for the full notes.
Full Changelog: v4.0.0...v4.0.1
v4.0.0
AdminLTE 4.0.0 — first stable release of the v4 line. A ground-up rewrite on Bootstrap 5.3 with no jQuery.
📖 Documentation · 🚀 Migration from v3 · 🎨 Live preview
Highlights
- 18 new demo pages — Calendar (FullCalendar), Kanban (SortableJS), Chat, File Manager, Projects, Mailbox (Inbox/Read/Compose), Form Wizard, Data Tables (Tabulator), Profile, Settings, Invoice, Pricing, FAQ, plus 404 / 500 / Maintenance error pages.
- Documentation overhaul — Getting Started, Customization, RTL, Migration from v3, Layout Blueprint, Recipes, Deployment, Recommended Integrations, JavaScript Plugins Overview. Split sidebar navigation so the live preview no longer feels like a docs site. Reading-friendly typography with consistent card wrappers across every page.
- FAQ rebuilt as a custom page with a hero, live search, section chips, and an accordion of 19 questions across six topics.
- Six issue fixes: #6010, #6019, #6020, #6021, #6026, #6028.
- Visible color-mode toggle in the default topbar, with localStorage persistence and
prefers-color-schemeintegration. - Major dependency upgrades: ESLint 9 → 10, TypeScript 5.9 → 6, Stylelint 16 → 17, Astro 6.0 → 6.3, and refreshed minor versions across autoprefixer / postcss / rollup / sass / terser.
- Dependency tree cleanup: dropped
eslint-plugin-import,eslint-config-xo*, and the legacy.eslintrc.json. Flat config only. - Security: npm
overridesforyamlandstylelint-config-twbs-bootstrapmeannpm installruns without--legacy-peer-depsand reports 0 vulnerabilities.
Breaking changes from v3
| v3 | v4 |
|---|---|
.wrapper |
.app-wrapper |
.main-header |
.app-header |
.main-sidebar |
.app-sidebar |
.content-wrapper |
.app-main |
data-toggle |
data-bs-toggle (Bootstrap 5) |
data-widget="pushmenu" |
data-lte-toggle="sidebar" |
data-widget="treeview" |
data-lte-toggle="treeview" |
.dark-mode body class |
data-bs-theme="dark" attribute |
| jQuery required | Vanilla TypeScript — no jQuery |
enablePersistence defaulted on |
Defaults off; opt in via data-enable-persistence="true" |
See the dedicated Migration from v3 guide for the complete list and step-by-step upgrade order.
Install
npm install admin-lte@4.0.0Or via CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/js/adminlte.min.js"></script>See CHANGELOG.md for the full notes.
AdminLTE v4.0.0-rc7
AdminLTE v4.0.0-rc7 Release Notes
Highlights
This release delivers significant JavaScript refactors to the layout and push menu plugins, fixes several bugs affecting print, pagination, modals, and animations, and updates all dependencies to their latest semver-compatible versions.
Bug Fixes
- Print layout: Sidebar and main content are now both visible in browser print preview (#5982, PR #5996 by @herley-shaori)
- Pagination border-radius: Synced
_bootstrap-variables.scsscalc syntax with Bootstrap 5.3, fixing grouped pagination buttons showing rounded corners on all sides (#5951, reported by @Kneemund) - Escape key & modals:
handleEscapeKey()no longer bypasses Bootstrap 5'skeyboard: falseoption on modals (#5993, reported by @braytac) - slideDown/slideUp animation: Fixed unreliable
setTimeoutordering when duration is 0, which caused sidebar treeview instant-open to fail (#5964, PR by @Kneemund) - CSS lint: Fixed property order in print layout rules (#5997, reported by @lfiorini)
Refactors
-
Layout transition handling (#5956 by @dfsmania):
- Fixed broken
holdTransitiontimer (local variable promoted to instance property) - Removed duplicate
resizeevent listeners registered on every call - Consolidated layout initialization to
layout.ts(removed duplication fromadminlte.ts) - Moved
app-loadedclass application to layout Data API section
- Fixed broken
-
Push menu plugin overhaul (#5954 by @dfsmania):
- Single
PushMenuinstance instead of creating new instances per event handler - Proper separation of
setupSidebarBreakPoint()andupdateStateByResponsiveLogic() sidebar-openclass only added on mobile viewports (aligns with v3 behavior)- Configuration now readable from data attributes on sidebar element
- Removed unused
menusClose()method and dead constants
- Single
Improvements
- Login/register box width: Increased from 360px to 400px for better form readability (#5963 by @dfsmania)
- TypeScript compilation: Added
removeComments: truetotsconfig.json, reducing unminifiedadminlte.jsby ~15% (#5953 by @dfsmania)
Dependencies
Updated all packages to latest semver-compatible versions:
@astrojs/check0.9.7,@astrojs/mdx4.3.13@typescript-eslint/*8.57.0astro5.18.0,autoprefixer10.4.27eslint9.39.4,eslint-plugin-astro1.6.0fs-extra11.3.4,nodemon3.1.14postcss8.5.8,prettier3.8.1rimraf6.1.3,rollup4.59.0sass1.97.3,terser5.46.0
Breaking Changes
- Sidebar persistence is now opt-in:
enablePersistencedefaults tofalse(wastrue). To restore the previous behavior where sidebar state is remembered across page loads, adddata-enable-persistence="true"to your sidebar element:<aside class="app-sidebar" data-enable-persistence="true"></aside>
Contributors
Thank you to everyone who contributed to this release:
- @dfsmania (Diego Smania) — layout refactor, push menu refactor, login box width, tsconfig cleanup
- @herley-shaori (Herley) — print layout fix
- @Kneemund (Moritz Mechelk) — pagination bug report, slideDown/slideUp fix
- @braytac — escape key modal bug report
- @lfiorini — CSS lint issue report