Bladeren bron

chore(release): bump version to 4.0.0

- package.json: 4.0.0-rc7 -> 4.0.0
- package-lock.json refreshed
- src/scss/adminlte.scss: banner version updated
- src/ts/adminlte.ts: banner version updated
- README.md: rewrote the "What's New" section to summarise the v4.0.0
  stable release (18 new pages, docs overhaul, six issue fixes, major
  dep upgrades, breaking changes from v3)
- CHANGELOG.md: marked the unreleased section as [4.0.0] - 2026-05-19
- Docs (introduction / getting-started / deployment): swapped
  @4.0.0-rc7 CDN URLs for @4.0.0
Aigars Silkalns 1 dag geleden
bovenliggende
commit
8e139d7ea9

+ 2 - 0
CHANGELOG.md

@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 
 ## [Unreleased]
 ## [Unreleased]
 
 
+## [4.0.0] - 2026-05-19
+
 ### Added
 ### Added
 
 
 - **18 new demo pages** dramatically expanding the page catalog:
 - **18 new demo pages** dramatically expanding the page catalog:

+ 43 - 17
README.md

@@ -9,31 +9,57 @@
 **AdminLTE** is a fully responsive administration template. Based on **[Bootstrap 5](https://getbootstrap.com/)** framework and also the JavaScript plugins.
 **AdminLTE** is a fully responsive administration template. Based on **[Bootstrap 5](https://getbootstrap.com/)** framework and also the JavaScript plugins.
 Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.
 Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.
 
 
-## What's New in v4.0.0-rc7
+## What's New in v4.0.0
 
 
-**Bug Fixes, Refactors & Documentation** - Major plugin refactors, complete JS documentation, and new features:
+The first stable release of the v4 line — a ground-up rewrite on Bootstrap 5.3 with no jQuery. Highlights:
 
 
-- **Layout & PushMenu Refactors** - Single-instance architecture, proper responsive logic, configurable via data attributes
-- **Sidebar Without Hover** - New `sidebar-without-hover` class to keep collapsed sidebar from expanding on hover
-- **Complete JS Documentation** - All 7 JavaScript components now fully documented
-- **Astro 6.0.0** - Upgraded to latest Astro with Vite 7 and Shiki 4
-- **Bug Fixes** - Fixed footer with layout-fixed, mobile scroll chaining, print layout, modal escape key, pagination borders
+**18 new demo pages**
 
 
-**Key Improvements:**
+- Apps: Calendar (FullCalendar), Kanban (SortableJS), Chat, File Manager, Projects, Mailbox (Inbox / Read / Compose)
+- Forms: Wizard (4-step with validation)
+- Tables: Data Tables (Tabulator — jQuery-free)
+- Pages: Profile, Settings, Invoice, Pricing, FAQ
+- Errors: 404, 500, Maintenance
 
 
-- Fixed footer now works correctly with `layout-fixed` (#5805)
-- Sidebar no longer causes page scroll chaining on mobile (#5864)
-- Print layout shows both sidebar and content (#5996)
-- Sidebar persistence is now opt-in via `data-enable-persistence="true"` (**breaking change**)
-- All dependencies updated to latest versions
+**Documentation overhaul**
 
 
-**Install the latest:**
+- New pages: Getting Started, Customization & Theming, RTL Support, Migration from v3, Layout Blueprint, Recipes, Deployment & Performance, Recommended Integrations, JavaScript Plugins Overview
+- Rewritten Introduction with four labelled install paths (CDN / npm / source / Composer)
+- FAQ rebuilt as a custom page with hero, live search, section chips, and an accordion of 19 questions across six topics
+- Split sidebar navigation: dashboard demo and docs each have their own nav, no more docs entries cluttering the live preview
+- Reading-friendly typography across all docs pages, with constrained line length, prose-tuned heading rhythm, styled reference tables, info callouts, and pill inline code
+
+**Six issue fixes**
+
+- `bi-circle-half` for the Auto color-mode icon (#6028)
+- `table-head-fixed` respects dark mode (#6026)
+- Fullscreen icon toggles `.d-none` instead of inline `display` so it works with any icon library (#6021)
+- Sidebar (including brand) stays pinned when using `fixed-header` (#6020)
+- Pie chart on `index2.html` no longer flickers on browser zoom (#6019)
+- Color-mode toggle now visible by default in the topbar with localStorage persistence (#6010)
+
+**Major dependency upgrades**
+
+- ESLint 9 → 10, TypeScript 5.9 → 6, Stylelint 16 → 17
+- Astro 6.0 → 6.3, autoprefixer / postcss / rollup / sass / terser refreshed
+- Bootstrap 5.3.8, Node 22 LTS in CI
+- Dropped dead `eslint-plugin-import`, `eslint-config-xo*`, and the legacy `.eslintrc.json`
+- npm `overrides` for `yaml` + `stylelint-config-twbs-bootstrap` so `npm install` runs without `--legacy-peer-deps` and reports **0 vulnerabilities**
+
+**Breaking changes from v3**
+
+- Class renames: `.wrapper` → `.app-wrapper`, `.main-header` → `.app-header`, `.main-sidebar` → `.app-sidebar`, `.content-wrapper` → `.app-main`
+- Data attributes: `data-toggle` → `data-bs-toggle`, `data-widget="pushmenu"` → `data-lte-toggle="sidebar"`, `data-widget="treeview"` → `data-lte-toggle="treeview"`
+- Dark mode: `.dark-mode` body class → `data-bs-theme="dark"` attribute (Bootstrap 5.3 native)
+- jQuery no longer required; plugins are vanilla TypeScript
+
+See the dedicated [Migration from v3](https://adminlte.io/themes/v4/docs/migration.html) guide and the [CHANGELOG.md](CHANGELOG.md) for the full list.
+
+**Install:**
 ```bash
 ```bash
-npm install admin-lte@4.0.0-rc7
+npm install admin-lte@4.0.0
 ```
 ```
 
 
-See the [CHANGELOG.md](CHANGELOG.md) for complete details.
-
 ## Looking for Premium Templates?
 ## Looking for Premium Templates?
 
 
 AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable
 AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 {
   "name": "admin-lte",
   "name": "admin-lte",
-  "version": "4.0.0-rc7",
+  "version": "4.0.0",
   "lockfileVersion": 3,
   "lockfileVersion": 3,
   "requires": true,
   "requires": true,
   "packages": {
   "packages": {
     "": {
     "": {
       "name": "admin-lte",
       "name": "admin-lte",
-      "version": "4.0.0-rc7",
+      "version": "4.0.0",
       "license": "MIT",
       "license": "MIT",
       "devDependencies": {
       "devDependencies": {
         "@astrojs/check": "^0.9.9",
         "@astrojs/check": "^0.9.9",

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
 {
   "name": "admin-lte",
   "name": "admin-lte",
   "description": "Responsive open source admin dashboard and control panel.",
   "description": "Responsive open source admin dashboard and control panel.",
-  "version": "4.0.0-rc7",
+  "version": "4.0.0",
   "type": "module",
   "type": "module",
   "license": "MIT",
   "license": "MIT",
   "author": "Colorlib <https://colorlib.com>",
   "author": "Colorlib <https://colorlib.com>",

+ 3 - 3
src/html/components/docs/deployment.mdx

@@ -71,7 +71,7 @@ If you load AdminLTE from a public CDN (jsDelivr, unpkg), include a Subresource
 ```html
 ```html
 <link
 <link
   rel="stylesheet"
   rel="stylesheet"
-  href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/css/adminlte.min.css"
+  href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/css/adminlte.min.css"
   integrity="sha384-PASTE_THE_HASH_HERE"
   integrity="sha384-PASTE_THE_HASH_HERE"
   crossorigin="anonymous"
   crossorigin="anonymous"
 />
 />
@@ -98,7 +98,7 @@ Get the script order right or things break silently:
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
 
 
   <!-- 3. AdminLTE — includes Bootstrap CSS via its imports -->
   <!-- 3. AdminLTE — includes Bootstrap CSS via its imports -->
-  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/css/adminlte.min.css" />
+  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/css/adminlte.min.css" />
 </head>
 </head>
 
 
 <body>
 <body>
@@ -115,7 +115,7 @@ Get the script order right or things break silently:
   <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
   <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
 
 
   <!-- 7. AdminLTE — must load AFTER Bootstrap -->
   <!-- 7. AdminLTE — must load AFTER Bootstrap -->
-  <script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/js/adminlte.min.js"></script>
+  <script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/js/adminlte.min.js"></script>
 </body>
 </body>
 ```
 ```
 
 

+ 2 - 2
src/html/components/docs/getting-started.mdx

@@ -10,7 +10,7 @@ Copy these tags into the `<head>` of a new HTML file. They pull AdminLTE, Bootst
 <!-- AdminLTE 4 + Bootstrap 5.3 (CSS) -->
 <!-- AdminLTE 4 + Bootstrap 5.3 (CSS) -->
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/css/adminlte.min.css" />
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/css/adminlte.min.css" />
 ```
 ```
 
 
 And these just before `</body>`:
 And these just before `</body>`:
@@ -20,7 +20,7 @@ And these just before `</body>`:
 <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
-<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/js/adminlte.min.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/js/adminlte.min.js"></script>
 ```
 ```
 
 
 ##### 2. The minimum viable layout
 ##### 2. The minimum viable layout

+ 4 - 4
src/html/components/docs/introduction.mdx

@@ -25,13 +25,13 @@ Drop these four CSS tags into `<head>` and four script tags before `</body>`. No
 <!-- In <head> -->
 <!-- In <head> -->
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css" />
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/css/adminlte.min.css" />
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/css/adminlte.min.css" />
 
 
 <!-- Before </body> -->
 <!-- Before </body> -->
 <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"></script>
-<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc7/dist/js/adminlte.min.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0/dist/js/adminlte.min.js"></script>
 ```
 ```
 
 
 Then copy any [demo page](https://github.com/ColorlibHQ/AdminLTE/tree/master/dist) HTML into your own file. See [Getting Started](getting-started.html) for the minimum-viable layout.
 Then copy any [demo page](https://github.com/ColorlibHQ/AdminLTE/tree/master/dist) HTML into your own file. See [Getting Started](getting-started.html) for the minimum-viable layout.
@@ -41,7 +41,7 @@ Then copy any [demo page](https://github.com/ColorlibHQ/AdminLTE/tree/master/dis
 Requires Node.js 18+ and a bundler (Vite, Webpack, Rollup, esbuild, etc.).
 Requires Node.js 18+ and a bundler (Vite, Webpack, Rollup, esbuild, etc.).
 
 
 ```bash
 ```bash
-npm install admin-lte@4.0.0-rc7
+npm install admin-lte@4.0.0
 ```
 ```
 
 
 Then import the CSS and JS in your app entry point:
 Then import the CSS and JS in your app entry point:
@@ -79,7 +79,7 @@ The compiled output lands in `dist/`. Edit `src/scss/_variables.scss` or `src/sc
 For PHP projects:
 For PHP projects:
 
 
 ```bash
 ```bash
-composer require "almasaeed2010/adminlte=4.0.0-rc7"
+composer require "almasaeed2010/adminlte=4.0.0"
 ```
 ```
 
 
 The package is published from the same source tree — you get the `dist/` folder ready to serve.
 The package is published from the same source tree — you get the `dist/` folder ready to serve.

+ 1 - 1
src/scss/adminlte.scss

@@ -1,5 +1,5 @@
 /*!
 /*!
- *   AdminLTE v4.0.0-rc7
+ *   AdminLTE v4.0.0
  *   Author: Colorlib
  *   Author: Colorlib
  *   Website: AdminLTE.io <https://adminlte.io>
  *   Website: AdminLTE.io <https://adminlte.io>
  *   License: Open source - MIT <https://opensource.org/licenses/MIT>
  *   License: Open source - MIT <https://opensource.org/licenses/MIT>

+ 1 - 1
src/ts/adminlte.ts

@@ -8,7 +8,7 @@ import PushMenu from './push-menu.js'
 import { initAccessibility } from './accessibility.js'
 import { initAccessibility } from './accessibility.js'
 
 
 /**
 /**
- * AdminLTE v4.0.0-rc7
+ * AdminLTE v4.0.0
  * Author: Colorlib
  * Author: Colorlib
  * Website: AdminLTE.io <https://adminlte.io>
  * Website: AdminLTE.io <https://adminlte.io>
  * License: Open source - MIT <https://opensource.org/licenses/MIT>
  * License: Open source - MIT <https://opensource.org/licenses/MIT>