فهرست منبع

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 روز پیش
والد
کامیت
8e139d7ea9

+ 2 - 0
CHANGELOG.md

@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+## [4.0.0] - 2026-05-19
+
 ### Added
 
 - **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.
 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
-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?
 
 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",
-  "version": "4.0.0-rc7",
+  "version": "4.0.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "admin-lte",
-      "version": "4.0.0-rc7",
+      "version": "4.0.0",
       "license": "MIT",
       "devDependencies": {
         "@astrojs/check": "^0.9.9",

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "admin-lte",
   "description": "Responsive open source admin dashboard and control panel.",
-  "version": "4.0.0-rc7",
+  "version": "4.0.0",
   "type": "module",
   "license": "MIT",
   "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
 <link
   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"
   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" />
 
   <!-- 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>
 
 <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>
 
   <!-- 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>
 ```
 

+ 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) -->
 <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/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>`:
@@ -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/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/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

+ 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> -->
 <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/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> -->
 <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/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.
@@ -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.).
 
 ```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:
@@ -79,7 +79,7 @@ The compiled output lands in `dist/`. Edit `src/scss/_variables.scss` or `src/sc
 For PHP projects:
 
 ```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.

+ 1 - 1
src/scss/adminlte.scss

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