admin-lte 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +185 -111
  3. package/dist/UI/general.html +27 -3
  4. package/dist/UI/icons.html +27 -3
  5. package/dist/UI/timeline.html +27 -3
  6. package/dist/docs/browser-support.html +27 -3
  7. package/dist/docs/color-mode.html +27 -3
  8. package/dist/docs/components/main-header.html +27 -3
  9. package/dist/docs/components/main-sidebar.html +27 -3
  10. package/dist/docs/customization.html +27 -3
  11. package/dist/docs/deployment.html +27 -3
  12. package/dist/docs/faq.html +27 -3
  13. package/dist/docs/getting-started.html +27 -3
  14. package/dist/docs/how-to-contribute.html +27 -3
  15. package/dist/docs/integrations.html +27 -3
  16. package/dist/docs/introduction.html +27 -3
  17. package/dist/docs/javascript/accessibility.html +27 -3
  18. package/dist/docs/javascript/card-widget.html +27 -3
  19. package/dist/docs/javascript/direct-chat.html +27 -3
  20. package/dist/docs/javascript/fullscreen.html +27 -3
  21. package/dist/docs/javascript/layout.html +27 -3
  22. package/dist/docs/javascript/plugins-overview.html +27 -3
  23. package/dist/docs/javascript/pushmenu.html +27 -3
  24. package/dist/docs/javascript/treeview.html +27 -3
  25. package/dist/docs/layout-blueprint.html +27 -3
  26. package/dist/docs/layout.html +27 -3
  27. package/dist/docs/license.html +27 -3
  28. package/dist/docs/migration.html +27 -3
  29. package/dist/docs/recipes.html +27 -3
  30. package/dist/docs/rtl.html +27 -3
  31. package/dist/examples/lockscreen.html +26 -0
  32. package/dist/examples/login-v2.html +26 -0
  33. package/dist/examples/login.html +26 -0
  34. package/dist/examples/register-v2.html +26 -0
  35. package/dist/examples/register.html +26 -0
  36. package/dist/forms/elements.html +27 -3
  37. package/dist/forms/layout.html +27 -3
  38. package/dist/forms/validation.html +27 -3
  39. package/dist/forms/wizard.html +27 -3
  40. package/dist/generate/theme.html +26 -0
  41. package/dist/index.html +27 -3
  42. package/dist/index2.html +27 -3
  43. package/dist/index3.html +27 -3
  44. package/dist/js/adminlte.js +4 -1
  45. package/dist/js/adminlte.js.map +1 -1
  46. package/dist/js/adminlte.min.js +2 -2
  47. package/dist/js/adminlte.min.js.map +1 -1
  48. package/dist/layout/collapsed-sidebar-without-hover.html +27 -3
  49. package/dist/layout/collapsed-sidebar.html +27 -3
  50. package/dist/layout/fixed-complete.html +27 -3
  51. package/dist/layout/fixed-footer.html +27 -3
  52. package/dist/layout/fixed-header.html +27 -3
  53. package/dist/layout/fixed-sidebar.html +27 -3
  54. package/dist/layout/layout-custom-area.html +27 -3
  55. package/dist/layout/layout-rtl.html +27 -3
  56. package/dist/layout/logo-switch.html +26 -0
  57. package/dist/layout/sidebar-mini.html +27 -3
  58. package/dist/layout/unfixed-sidebar.html +27 -3
  59. package/dist/mailbox/compose.html +27 -3
  60. package/dist/mailbox/inbox.html +43 -11
  61. package/dist/mailbox/read.html +27 -3
  62. package/dist/pages/404.html +26 -0
  63. package/dist/pages/500.html +26 -0
  64. package/dist/pages/calendar.html +27 -3
  65. package/dist/pages/chat.html +27 -3
  66. package/dist/pages/faq.html +27 -3
  67. package/dist/pages/file-manager.html +27 -3
  68. package/dist/pages/invoice.html +27 -3
  69. package/dist/pages/kanban.html +27 -3
  70. package/dist/pages/maintenance.html +26 -0
  71. package/dist/pages/pricing.html +27 -3
  72. package/dist/pages/profile.html +27 -3
  73. package/dist/pages/projects.html +27 -3
  74. package/dist/pages/settings.html +27 -3
  75. package/dist/tables/data.html +27 -3
  76. package/dist/tables/simple.html +27 -3
  77. package/dist/widgets/cards.html +27 -3
  78. package/dist/widgets/info-box.html +27 -3
  79. package/dist/widgets/small-box.html +27 -3
  80. package/github-issue-response.md +40 -0
  81. package/package.json +14 -13
  82. package/src/ts/accessibility.ts +9 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [4.0.1] - 2026-06-11
11
+
12
+ ### Added
13
+
14
+ - **Official framework integrations announced** — AdminLTE 4 is now available as first-class packages for four ecosystems, maintained under ColorlibHQ:
15
+ - [adminlte-vue](https://github.com/ColorlibHQ/adminlte-vue) — Vue 3 & Nuxt, 45+ typed components, composables, SSR-safe theming, ⌘K command palette
16
+ - [adminlte-react](https://github.com/ColorlibHQ/adminlte-react) — React & Next.js (App Router / RSC), 30+ typed components, dark mode, ⌘K command palette
17
+ - [adminlte-django](https://github.com/ColorlibHQ/adminlte-django) — config-driven sidebar menu, 33+ components, themed `django.contrib.admin`, `{{ form }}` renderer
18
+ - [adminlte-laravel](https://github.com/ColorlibHQ/adminlte-laravel) — Blade integration, Vite-ready
19
+ - Social preview generator script (`scripts/social-preview.mjs`, dev-only — excluded from the npm package).
20
+
21
+ ### Fixed
22
+
23
+ - **#6043:** Stored color mode is now applied before first paint — no more light-mode flash when reloading a page in dark mode. (reported by @bsshreesha)
24
+ - **#6044:** Long subject/preview text in the mailbox inbox list is truncated instead of overflowing its container. (reported by @Oscurlo)
25
+ - **#6038:** `accessibility.js` no longer assigns `role="navigation"` to `<ul>`/`<ol>` elements, which broke list semantics and failed the Lighthouse accessibility audit. (reported by @lfiorini)
26
+
27
+ ### Updated
28
+
29
+ - All dependencies bumped to latest; `axios` pinned via npm overrides to clear a transitive advisory. `npm audit` remains at **0 vulnerabilities**.
30
+
10
31
  ## [4.0.0] - 2026-05-19
11
32
 
12
33
  ### Added
package/README.md CHANGED
@@ -1,143 +1,222 @@
1
- # [AdminLTE - Bootstrap 5 Admin Dashboard](https://adminlte.io)
1
+ # [AdminLTE — Bootstrap 5 Admin Dashboard](https://adminlte.io)
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/admin-lte/latest.svg)](https://www.npmjs.com/package/admin-lte)
4
4
  [![Packagist](https://img.shields.io/packagist/v/almasaeed2010/adminlte.svg)](https://packagist.org/packages/almasaeed2010/adminlte)
5
5
  [![cdn version](https://data.jsdelivr.com/v1/package/npm/admin-lte/badge)](https://www.jsdelivr.com/package/npm/admin-lte)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
6
7
  [![Discord Invite](https://img.shields.io/badge/discord-join%20now-green)](https://discord.gg/jfdvjwFqfz)
7
8
  [![Netlify Status](https://api.netlify.com/api/v1/badges/1277b36b-08f3-43fa-826a-4b4d24614b3c/deploy-status)](https://app.netlify.com/sites/adminlte-v4/deploys)
8
9
 
9
- **AdminLTE** is a fully responsive administration template. Based on **[Bootstrap 5](https://getbootstrap.com/)** framework and also the JavaScript plugins.
10
- Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.
10
+ **AdminLTE** is the most popular open-source admin dashboard template — fully responsive,
11
+ built on **[Bootstrap 5.3](https://getbootstrap.com/)** with vanilla JavaScript (no jQuery),
12
+ highly customizable, and easy to use. It fits every screen from small mobile devices to
13
+ large desktops, and it's MIT-licensed.
11
14
 
12
- ## What's New in v4.0.0
15
+ **[Live Demo](https://adminlte.io/themes/v4/)** ·
16
+ **[Documentation](https://adminlte.io/themes/v4/docs/introduction.html)** ·
17
+ **[Framework Editions](#framework-editions)** ·
18
+ **[Premium Templates](#premium-templates)**
13
19
 
14
- The first stable release of the v4 line — a ground-up rewrite on Bootstrap 5.3 with no jQuery. Highlights:
20
+ <p align="center">
21
+ <a href="https://adminlte.io/themes/v4/">
22
+ <img alt="AdminLTE 4 dashboard — light mode" src=".github/assets/dashboard-light.png" width="49%">
23
+ </a>
24
+ <a href="https://adminlte.io/themes/v4/">
25
+ <img alt="AdminLTE 4 dashboard — dark mode" src=".github/assets/dashboard-dark.png" width="49%">
26
+ </a>
27
+ </p>
15
28
 
16
- **18 new demo pages**
29
+ ## Framework editions
17
30
 
18
- - Apps: Calendar (FullCalendar), Kanban (SortableJS), Chat, File Manager, Projects, Mailbox (Inbox / Read / Compose)
19
- - Forms: Wizard (4-step with validation)
20
- - Tables: Data Tables (Tabulator — jQuery-free)
21
- - Pages: Profile, Settings, Invoice, Pricing, FAQ
22
- - Errors: 404, 500, Maintenance
31
+ The same AdminLTE 4 dashboard, officially integrated for the framework you know best —
32
+ you're looking at the **HTML / Bootstrap** core:
23
33
 
24
- **Documentation overhaul**
34
+ <p align="center">
35
+ <a href="https://github.com/ColorlibHQ/adminlte-react"><img height="36" alt="React" src="https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB"></a>
36
+ <a href="https://github.com/ColorlibHQ/adminlte-react"><img height="36" alt="Next.js" src="https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white"></a>
37
+ <a href="https://github.com/ColorlibHQ/adminlte-vue"><img height="36" alt="Vue" src="https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D"></a>
38
+ <a href="https://github.com/ColorlibHQ/adminlte-vue"><img height="36" alt="Nuxt" src="https://img.shields.io/badge/Nuxt-00DC82?style=for-the-badge&logo=nuxt&logoColor=white"></a>
39
+ <a href="https://github.com/ColorlibHQ/adminlte-laravel"><img height="36" alt="Laravel" src="https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge&logo=laravel&logoColor=white"></a>
40
+ <a href="https://github.com/ColorlibHQ/adminlte-django"><img height="36" alt="Django" src="https://img.shields.io/badge/Django-092E20?style=for-the-badge&logo=django&logoColor=white"></a>
41
+ </p>
25
42
 
26
- - New pages: Getting Started, Customization & Theming, RTL Support, Migration from v3, Layout Blueprint, Recipes, Deployment & Performance, Recommended Integrations, JavaScript Plugins Overview
27
- - Rewritten Introduction with four labelled install paths (CDN / npm / source / Composer)
28
- - FAQ rebuilt as a custom page with hero, live search, section chips, and an accordion of 19 questions across six topics
29
- - Split sidebar navigation: dashboard demo and docs each have their own nav, no more docs entries cluttering the live preview
30
- - Reading-friendly typography across all docs pages, with constrained line length, prose-tuned heading rhythm, styled reference tables, info callouts, and pill inline code
43
+ | Edition | Repository | Live demo | Install |
44
+ |---|---|---|---|
45
+ | **HTML / Bootstrap** (this repo) | [AdminLTE](https://github.com/ColorlibHQ/AdminLTE) | [themes/v4](https://adminlte.io/themes/v4/) | `npm install admin-lte` |
46
+ | **React & Next.js** — 30+ typed components, RSC-ready, ⌘K palette | [adminlte-react](https://github.com/ColorlibHQ/adminlte-react) | [themes/next-react](https://adminlte.io/themes/next-react/) | see repo |
47
+ | **Vue 3 & Nuxt** — 45+ typed components, composables, SSR-safe theming | [adminlte-vue](https://github.com/ColorlibHQ/adminlte-vue) | [themes/vue-nuxt](https://adminlte.io/themes/vue-nuxt/) | see repo |
48
+ | **Laravel** — Blade components, config-driven menu, auth scaffolding | [adminlte-laravel](https://github.com/ColorlibHQ/adminlte-laravel) | [laravel.adminlte.io](https://laravel.adminlte.io/) | `composer require colorlibhq/adminlte-laravel` |
49
+ | **Django** — reusable app, menu filter pipeline, themed admin | [adminlte-django](https://github.com/ColorlibHQ/adminlte-django) | [django.adminlte.io](https://django.adminlte.io/) | `pip install django-adminlte4` |
31
50
 
32
- **Six issue fixes**
51
+ Every edition ships the full AdminLTE 4 design — Bootstrap 5.3, dark mode, RTL — with
52
+ idiomatic integrations for its stack (components, routing, auth, theming).
33
53
 
34
- - `bi-circle-half` for the Auto color-mode icon (#6028)
35
- - `table-head-fixed` respects dark mode (#6026)
36
- - Fullscreen icon toggles `.d-none` instead of inline `display` so it works with any icon library (#6021)
37
- - Sidebar (including brand) stays pinned when using `fixed-header` (#6020)
38
- - Pie chart on `index2.html` no longer flickers on browser zoom (#6019)
39
- - Color-mode toggle now visible by default in the topbar with localStorage persistence (#6010)
54
+ ## Quick start
40
55
 
41
- **Major dependency upgrades**
56
+ **CDN** — no build step:
42
57
 
43
- - ESLint 9 → 10, TypeScript 5.9 → 6, Stylelint 16 → 17
44
- - Astro 6.0 → 6.3, autoprefixer / postcss / rollup / sass / terser refreshed
45
- - Bootstrap 5.3.8, Node 22 LTS in CI
46
- - Dropped dead `eslint-plugin-import`, `eslint-config-xo*`, and the legacy `.eslintrc.json`
47
- - npm `overrides` for `yaml` + `stylelint-config-twbs-bootstrap` so `npm install` runs without `--legacy-peer-deps` and reports **0 vulnerabilities**
58
+ ```html
59
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4/dist/css/adminlte.min.css">
60
+ <script src="https://cdn.jsdelivr.net/npm/admin-lte@4/dist/js/adminlte.min.js"></script>
61
+ ```
48
62
 
49
- **Breaking changes from v3**
63
+ **npm:**
50
64
 
51
- - Class renames: `.wrapper` → `.app-wrapper`, `.main-header` → `.app-header`, `.main-sidebar` → `.app-sidebar`, `.content-wrapper` → `.app-main`
52
- - Data attributes: `data-toggle` → `data-bs-toggle`, `data-widget="pushmenu"` → `data-lte-toggle="sidebar"`, `data-widget="treeview"` → `data-lte-toggle="treeview"`
53
- - Dark mode: `.dark-mode` body class → `data-bs-theme="dark"` attribute (Bootstrap 5.3 native)
54
- - jQuery no longer required; plugins are vanilla TypeScript
65
+ ```bash
66
+ npm install admin-lte@4
67
+ ```
55
68
 
56
- 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.
69
+ **Composer:**
57
70
 
58
- **Install:**
59
71
  ```bash
60
- npm install admin-lte@4.0.0
72
+ composer require almasaeed2010/adminlte
61
73
  ```
62
74
 
63
- ## Looking for Premium Templates?
75
+ Then start from the [Getting Started guide](https://adminlte.io/themes/v4/docs/introduction.html)
76
+ or copy one of the demo pages.
64
77
 
65
- AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable
66
- prices. Visit <https://adminlte.io/premium> for more information.
78
+ ### Developing AdminLTE itself
67
79
 
68
- !["AdminLTE Presentation"](https://adminlte.io/AdminLTE3.png "AdminLTE Presentation")
80
+ 1. **Install dependencies:** `npm install`
81
+ 2. **Start the dev server:** `npm start` *(opens http://localhost:3000 with live reload)*
82
+ 3. **Build:** `npm run build` — or `npm run production` for the full lint + optimize + bundlewatch pipeline
69
83
 
70
- **AdminLTE** has been carefully coded with clear comments in all of its JS, SCSS and HTML files.
71
- SCSS has been used to increase code customizability.
84
+ <details>
85
+ <summary>All npm scripts</summary>
72
86
 
73
- ## Quick start
87
+ - `npm start` — development server with file watching
88
+ - `npm run build` — build all assets for development
89
+ - `npm run production` — full production build with linting and bundlewatch
90
+ - `npm run lint` — run all linters (JS, CSS, docs, lockfile)
91
+ - `npm run css` — build CSS only
92
+ - `npm run js` — build JavaScript only
74
93
 
75
- ### Development
94
+ </details>
76
95
 
77
- To start developing with AdminLTE:
96
+ ## What's new in v4
78
97
 
79
- 1. **Install dependencies:** `npm install`
80
- 2. **Start development server:** `npm start` *(opens browser at http://localhost:3000)*
81
- 3. **Start coding!** Files auto-compile and refresh on changes
98
+ The v4 line is a ground-up rewrite on Bootstrap 5.3 with **no jQuery**: 18 new demo pages
99
+ (Calendar, Kanban, Chat, File Manager, Mailbox, Wizard, Tabulator data tables, and more),
100
+ a documentation overhaul, and major dependency upgrades. See the
101
+ [CHANGELOG](CHANGELOG.md) for full details.
82
102
 
83
- ### Production Build
103
+ <details>
104
+ <summary>Highlights</summary>
84
105
 
85
- To build for production:
106
+ **18 new demo pages**
86
107
 
87
- 1. **Full production build:** `npm run production` *(includes linting and optimization)*
88
- 2. **Quick build:** `npm run build` *(faster for development/testing)*
108
+ - Apps: Calendar (FullCalendar), Kanban (SortableJS), Chat, File Manager, Projects, Mailbox (Inbox / Read / Compose)
109
+ - Forms: Wizard (4-step with validation)
110
+ - Tables: Data Tables (Tabulator — jQuery-free)
111
+ - Pages: Profile, Settings, Invoice, Pricing, FAQ
112
+ - Errors: 404, 500, Maintenance
89
113
 
90
- ### Available Scripts
114
+ **Documentation overhaul**
91
115
 
92
- - `npm start` - Start development server with file watching
93
- - `npm run build` - Build all assets for development
94
- - `npm run production` - Full production build with linting and bundlewatch
95
- - `npm run lint` - Run all linters (JS, CSS, docs, lockfile)
96
- - `npm run css` - Build CSS only
97
- - `npm run js` - Build JavaScript only
116
+ - New pages: Getting Started, Customization & Theming, RTL Support, Migration from v3, Layout Blueprint, Recipes, Deployment & Performance, Recommended Integrations, JavaScript Plugins Overview
117
+ - Rewritten Introduction with four labelled install paths (CDN / npm / source / Composer)
118
+ - FAQ rebuilt with hero, live search, section chips, and an accordion of 19 questions
119
+ - Split sidebar navigation: dashboard demo and docs each have their own nav
98
120
 
99
- ## Browser Support
121
+ **Major dependency upgrades**
100
122
 
101
- AdminLTE supports all modern browsers with the latest Bootstrap 5.3.8:
102
- - Chrome (latest)
103
- - Firefox (latest)
104
- - Safari (latest)
105
- - Edge (latest)
123
+ - ESLint 10, TypeScript 6, Stylelint 17, Astro 6.3, Bootstrap 5.3.8, Node 22 LTS in CI
124
+ - `npm install` runs clean with **0 vulnerabilities**
106
125
 
107
- ## Platform Support
126
+ </details>
108
127
 
109
- AdminLTE v4 build scripts work cross-platform:
110
- - **Windows** - Command Prompt, PowerShell, Git Bash
111
- - **macOS** - Terminal, iTerm2
112
- - **Linux** - Bash, Zsh, and other Unix shells
128
+ <details>
129
+ <summary>Breaking changes from v3</summary>
113
130
 
114
- All npm scripts use cross-platform utilities to ensure consistent behavior across different operating systems.
131
+ - Class renames: `.wrapper` → `.app-wrapper`, `.main-header` → `.app-header`, `.main-sidebar` → `.app-sidebar`, `.content-wrapper` → `.app-main`
132
+ - Data attributes: `data-toggle` → `data-bs-toggle`, `data-widget="pushmenu"` → `data-lte-toggle="sidebar"`, `data-widget="treeview"` → `data-lte-toggle="treeview"`
133
+ - Dark mode: `.dark-mode` body class → `data-bs-theme="dark"` attribute (Bootstrap 5.3 native)
134
+ - jQuery no longer required; plugins are vanilla TypeScript
115
135
 
116
- ## Security & Production Deployment
136
+ See the dedicated [Migration from v3](https://adminlte.io/themes/v4/docs/migration.html) guide.
137
+
138
+ </details>
139
+
140
+ ## Premium templates
141
+
142
+ AdminLTE will always be free and open source. When a project needs more —
143
+ app-ready pages, framework-native codebases, dedicated support — our team
144
+ hand-picks premium dashboards at **[adminlte.io/premium](https://adminlte.io/premium)**,
145
+ including editions built for the same stacks AdminLTE integrates with:
146
+
147
+ <table>
148
+ <tr>
149
+ <td align="center" width="50%">
150
+ <a href="https://dashboardpack.com/theme-details/admindek-html/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
151
+ <img src=".github/assets/premium/admindek.png" alt="Admindek — feature-rich Bootstrap 5 dashboard with dark mode" width="100%">
152
+ </a>
153
+ <br>
154
+ <a href="https://dashboardpack.com/theme-details/admindek-html/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Admindek</strong></a>
155
+ <br>
156
+ <sub>The natural next step from AdminLTE: Bootstrap 5 + vanilla JS, 100+ components, dark/light modes, RTL, 10 color presets.<br>
157
+ Also for <a href="https://dashboardpack.com/theme-details/admindek-dashboard-laravel/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Laravel</a> ·
158
+ <a href="https://dashboardpack.com/theme-details/admindek-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Next.js</a> ·
159
+ <a href="https://dashboardpack.com/theme-details/admindek-dashboard-angular/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Angular</a></sub>
160
+ </td>
161
+ <td align="center" width="50%">
162
+ <a href="https://dashboardpack.com/theme-details/apex-dashboard-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
163
+ <img src=".github/assets/premium/apex.png" alt="Apex Dashboard — admin template available for Next.js, Laravel, Django and Angular" width="100%">
164
+ </a>
165
+ <br>
166
+ <a href="https://dashboardpack.com/theme-details/apex-dashboard-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Apex Dashboard</strong></a>
167
+ <br>
168
+ <sub>5 dashboard variants, 20+ app pages, 125+ routes, full CRUD — in your backend's native stack.<br>
169
+ For <a href="https://dashboardpack.com/theme-details/apex-dashboard-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Next.js</a> ·
170
+ <a href="https://dashboardpack.com/theme-details/apex-dashboard-laravel/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Laravel</a> ·
171
+ <a href="https://dashboardpack.com/theme-details/apex-dashboard-django/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Django</a> ·
172
+ <a href="https://dashboardpack.com/theme-details/apex-dashboard-angular/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">Angular</a></sub>
173
+ </td>
174
+ </tr>
175
+ <tr>
176
+ <td align="center" width="50%">
177
+ <a href="https://dashboardpack.com/theme-details/zenith-dashboard-django/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
178
+ <img src=".github/assets/premium/zenith.png" alt="Zenith — ultra-minimal admin dashboard, Django edition" width="100%">
179
+ </a>
180
+ <br>
181
+ <a href="https://dashboardpack.com/theme-details/zenith-dashboard-django/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Zenith Dashboard — Django</strong></a>
182
+ <br>
183
+ <sub>Achromatic, ultra-minimal design as a ready-to-run Django project: 50+ pages, 6 dashboards, live theme customizer.</sub>
184
+ </td>
185
+ <td align="center" width="50%">
186
+ <a href="https://dashboardpack.com/theme-details/haze-dashboard-nuxt/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
187
+ <img src=".github/assets/premium/haze.png" alt="Haze — Nuxt 4 admin dashboard with 92+ pages and 5 dashboards" width="100%">
188
+ </a>
189
+ <br>
190
+ <a href="https://dashboardpack.com/theme-details/haze-dashboard-nuxt/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Haze — Nuxt</strong></a>
191
+ <br>
192
+ <sub>Nuxt 4 + Nuxt UI v4 + Tailwind CSS v4. 92+ pages, 7 layouts, 5 dashboards, RTL, i18n, mock API layer.</sub>
193
+ </td>
194
+ </tr>
195
+ </table>
117
196
 
118
- ### Important Security Notice
197
+ <p align="center">
198
+ <a href="https://adminlte.io/premium"><strong>View all premium templates →</strong></a>
199
+ </p>
119
200
 
120
- AdminLTE is a **UI template** - when deploying to production, follow these critical guidelines:
201
+ ## Browser & platform support
121
202
 
122
- **What to Deploy:**
123
- - Only compiled production assets: `dist/js/adminlte.min.js` and `dist/css/adminlte.min.css`
124
- - Your application-specific files
203
+ AdminLTE supports the latest versions of all modern browsers (Chrome, Firefox, Safari,
204
+ Edge) via Bootstrap 5.3.8. The build scripts run cross-platform — Windows (CMD,
205
+ PowerShell, Git Bash), macOS and Linux — using cross-platform npm utilities throughout.
125
206
 
126
- **What NOT to Deploy:**
127
- - `node_modules/` directory
128
- - Demo/example HTML files (index.html, index2.html, index3.html, etc.)
129
- - Source files (`src/` directory)
130
- - Development configuration files
207
+ ## Security & production deployment
131
208
 
132
- **CVE-2021-36471 Notice:**
133
- This CVE is **disputed** and does not represent a vulnerability in AdminLTE. It refers to demo pages being accessible when developers incorrectly deploy example files to production. AdminLTE v4 has a clear separation between development demos and production assets. See [SECURITY.md](SECURITY.md) for complete details.
209
+ AdminLTE is a **UI template**. Deploy only the compiled production assets
210
+ (`dist/js/adminlte.min.js`, `dist/css/adminlte.min.css`) and your own application files —
211
+ never `node_modules/`, the demo HTML pages, or the `src/` directory.
134
212
 
135
- **Production Build:**
136
- ```bash
137
- npm run production # Builds optimized assets in dist/
138
- ```
213
+ > **About CVE-2021-36471:** this CVE is **disputed** and does not represent a
214
+ > vulnerability in AdminLTE — it refers to demo pages being accessible when example
215
+ > files are incorrectly deployed to production. AdminLTE v4 cleanly separates
216
+ > development demos from production assets.
139
217
 
140
- For detailed security guidelines, authentication requirements, and best practices, see [SECURITY.md](SECURITY.md).
218
+ For detailed guidelines, authentication requirements, and best practices, see
219
+ [SECURITY.md](SECURITY.md).
141
220
 
142
221
  ## Sponsorship
143
222
 
@@ -153,7 +232,7 @@ Support AdminLTE development by becoming a sponsor or donor.
153
232
  </a>
154
233
  </p>
155
234
 
156
- ## Our Sponsors
235
+ ### Our sponsors
157
236
 
158
237
  <p align="center">
159
238
  <a href="https://github.com/spizzo14"><img src="https://unavatar.io/github/spizzo14?fallback=https%3A%2F%2Fraw.githubusercontent.com%2FJamesIves%2Fgithub-sponsors-readme-action%2Fdev%2F.github%2Fassets%2Fplaceholder.png" width="50" height="50" alt="User avatar: spizzo14" loading="lazy" /></a>&nbsp;&nbsp;
@@ -171,28 +250,23 @@ Support AdminLTE development by becoming a sponsor or donor.
171
250
 
172
251
  ## Contributing
173
252
 
174
- - Highly welcome.
175
- - For your extra reference check [AdminLTE v4 Contribution Guide](https://github.com/ColorlibHQ/AdminLTE#contributing)
176
- - First thing first, you should have bit knowledge about NodeJS.
177
- - Github Knowledge.
178
- - Install NodeJS LTS version.
179
- - Clone this Repository to your machine and change to `master` branch.
180
- - Go to Cloned Folder.
181
- - In cli/bash run `npm install` it will install dependency from `package.json`.
182
- - After installation completes, run `npm start`
183
- - Cool, Send your changes in PR to `master` branch.
253
+ Contributions are highly welcome:
184
254
 
255
+ 1. Install [Node.js](https://nodejs.org/) (LTS) and clone this repository (`master` branch).
256
+ 2. `npm install`, then `npm start` to run the dev server.
257
+ 3. Make your changes (run `npm run lint` before committing) and open a PR against `master`.
185
258
 
186
259
  ## License
187
260
 
188
- AdminLTE is an open source project by [AdminLTE.io](https://adminlte.io) that is licensed under [MIT](https://opensource.org/licenses/MIT).
189
- AdminLTE.io reserves the right to change the license of future releases.
261
+ AdminLTE is an open source project by [AdminLTE.io](https://adminlte.io) licensed under
262
+ [MIT](https://opensource.org/licenses/MIT). AdminLTE.io reserves the right to change
263
+ the license of future releases.
190
264
 
191
- ## Image Credits
265
+ ## Image credits
192
266
 
193
- - [Pixeden](http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd)
194
- - [Graphicsfuel](https://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/)
195
- - [Pickaface](https://pickaface.net/)
196
- - [Unsplash](https://unsplash.com/)
197
- - [Uifaces](http://uifaces.com/)
198
- - [Unavatar](https://unavatar.io/)
267
+ [Pixeden](http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd),
268
+ [Graphicsfuel](https://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/),
269
+ [Pickaface](https://pickaface.net/),
270
+ [Unsplash](https://unsplash.com/),
271
+ [Uifaces](http://uifaces.com/),
272
+ [Unavatar](https://unavatar.io/)
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>AdminLTE 4 | General UI Elements</title>
7
7
 
8
+ <!--begin::Theme Init (prevents flash of incorrect theme on load, #6043)-->
9
+ <script>
10
+ (() => {
11
+ 'use strict';
12
+ const STORAGE_KEY = 'lte-theme';
13
+ let stored = null;
14
+ try {
15
+ stored = localStorage.getItem(STORAGE_KEY);
16
+ } catch {
17
+ // localStorage may be unavailable (private mode, sandboxed iframe).
18
+ }
19
+ const prefersDark = globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
20
+ // Mirror the resolution in _scripts.astro: explicit "dark"/"light" win,
21
+ // otherwise ("auto" or unset) fall back to the OS preference.
22
+ let resolved = 'light';
23
+ if (stored === 'dark' || stored === 'light') {
24
+ resolved = stored;
25
+ } else if (prefersDark) {
26
+ resolved = 'dark';
27
+ }
28
+ document.documentElement.setAttribute('data-bs-theme', resolved);
29
+ document.documentElement.style.colorScheme = resolved;
30
+ })();
31
+ </script>
32
+ <!--end::Theme Init-->
33
+
8
34
  <!--begin::Accessibility Meta Tags-->
9
35
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
10
36
  <meta name="color-scheme" content="light dark" />
@@ -369,13 +395,11 @@
369
395
  <!--end::Sidebar Brand-->
370
396
  <!--begin::Sidebar Wrapper-->
371
397
  <div class="sidebar-wrapper">
372
- <nav class="mt-2">
398
+ <nav class="mt-2" aria-label="Main navigation">
373
399
  <!--begin::Sidebar Menu-->
374
400
  <ul
375
401
  class="nav sidebar-menu flex-column"
376
402
  data-lte-toggle="treeview"
377
- role="navigation"
378
- aria-label="Main navigation"
379
403
  data-accordion="false"
380
404
  id="navigation"
381
405
  >
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>AdminLTE 4 | Icons</title>
7
7
 
8
+ <!--begin::Theme Init (prevents flash of incorrect theme on load, #6043)-->
9
+ <script>
10
+ (() => {
11
+ 'use strict';
12
+ const STORAGE_KEY = 'lte-theme';
13
+ let stored = null;
14
+ try {
15
+ stored = localStorage.getItem(STORAGE_KEY);
16
+ } catch {
17
+ // localStorage may be unavailable (private mode, sandboxed iframe).
18
+ }
19
+ const prefersDark = globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
20
+ // Mirror the resolution in _scripts.astro: explicit "dark"/"light" win,
21
+ // otherwise ("auto" or unset) fall back to the OS preference.
22
+ let resolved = 'light';
23
+ if (stored === 'dark' || stored === 'light') {
24
+ resolved = stored;
25
+ } else if (prefersDark) {
26
+ resolved = 'dark';
27
+ }
28
+ document.documentElement.setAttribute('data-bs-theme', resolved);
29
+ document.documentElement.style.colorScheme = resolved;
30
+ })();
31
+ </script>
32
+ <!--end::Theme Init-->
33
+
8
34
  <!--begin::Accessibility Meta Tags-->
9
35
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
10
36
  <meta name="color-scheme" content="light dark" />
@@ -369,13 +395,11 @@
369
395
  <!--end::Sidebar Brand-->
370
396
  <!--begin::Sidebar Wrapper-->
371
397
  <div class="sidebar-wrapper">
372
- <nav class="mt-2">
398
+ <nav class="mt-2" aria-label="Main navigation">
373
399
  <!--begin::Sidebar Menu-->
374
400
  <ul
375
401
  class="nav sidebar-menu flex-column"
376
402
  data-lte-toggle="treeview"
377
- role="navigation"
378
- aria-label="Main navigation"
379
403
  data-accordion="false"
380
404
  id="navigation"
381
405
  >
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>AdminLTE 4 | Timeline Elements</title>
7
7
 
8
+ <!--begin::Theme Init (prevents flash of incorrect theme on load, #6043)-->
9
+ <script>
10
+ (() => {
11
+ 'use strict';
12
+ const STORAGE_KEY = 'lte-theme';
13
+ let stored = null;
14
+ try {
15
+ stored = localStorage.getItem(STORAGE_KEY);
16
+ } catch {
17
+ // localStorage may be unavailable (private mode, sandboxed iframe).
18
+ }
19
+ const prefersDark = globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
20
+ // Mirror the resolution in _scripts.astro: explicit "dark"/"light" win,
21
+ // otherwise ("auto" or unset) fall back to the OS preference.
22
+ let resolved = 'light';
23
+ if (stored === 'dark' || stored === 'light') {
24
+ resolved = stored;
25
+ } else if (prefersDark) {
26
+ resolved = 'dark';
27
+ }
28
+ document.documentElement.setAttribute('data-bs-theme', resolved);
29
+ document.documentElement.style.colorScheme = resolved;
30
+ })();
31
+ </script>
32
+ <!--end::Theme Init-->
33
+
8
34
  <!--begin::Accessibility Meta Tags-->
9
35
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
10
36
  <meta name="color-scheme" content="light dark" />
@@ -369,13 +395,11 @@
369
395
  <!--end::Sidebar Brand-->
370
396
  <!--begin::Sidebar Wrapper-->
371
397
  <div class="sidebar-wrapper">
372
- <nav class="mt-2">
398
+ <nav class="mt-2" aria-label="Main navigation">
373
399
  <!--begin::Sidebar Menu-->
374
400
  <ul
375
401
  class="nav sidebar-menu flex-column"
376
402
  data-lte-toggle="treeview"
377
- role="navigation"
378
- aria-label="Main navigation"
379
403
  data-accordion="false"
380
404
  id="navigation"
381
405
  >
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>Browser Support | AdminLTE 4</title>
7
7
 
8
+ <!--begin::Theme Init (prevents flash of incorrect theme on load, #6043)-->
9
+ <script>
10
+ (() => {
11
+ 'use strict';
12
+ const STORAGE_KEY = 'lte-theme';
13
+ let stored = null;
14
+ try {
15
+ stored = localStorage.getItem(STORAGE_KEY);
16
+ } catch {
17
+ // localStorage may be unavailable (private mode, sandboxed iframe).
18
+ }
19
+ const prefersDark = globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
20
+ // Mirror the resolution in _scripts.astro: explicit "dark"/"light" win,
21
+ // otherwise ("auto" or unset) fall back to the OS preference.
22
+ let resolved = 'light';
23
+ if (stored === 'dark' || stored === 'light') {
24
+ resolved = stored;
25
+ } else if (prefersDark) {
26
+ resolved = 'dark';
27
+ }
28
+ document.documentElement.setAttribute('data-bs-theme', resolved);
29
+ document.documentElement.style.colorScheme = resolved;
30
+ })();
31
+ </script>
32
+ <!--end::Theme Init-->
33
+
8
34
  <!--begin::Accessibility Meta Tags-->
9
35
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
10
36
  <meta name="color-scheme" content="light dark" />
@@ -365,13 +391,11 @@
365
391
  <!--end::Sidebar Brand-->
366
392
  <!--begin::Sidebar Wrapper-->
367
393
  <div class="sidebar-wrapper">
368
- <nav class="mt-2">
394
+ <nav class="mt-2" aria-label="Documentation navigation">
369
395
  <!--begin::Sidebar Menu-->
370
396
  <ul
371
397
  class="nav sidebar-menu flex-column"
372
398
  data-lte-toggle="treeview"
373
- role="navigation"
374
- aria-label="Documentation navigation"
375
399
  data-accordion="false"
376
400
  id="docs-navigation"
377
401
  >