admin-lte 4.0.0-rc6 → 4.0.0

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 (107) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +44 -18
  3. package/dist/UI/general.html +311 -92
  4. package/dist/UI/icons.html +311 -92
  5. package/dist/UI/timeline.html +311 -92
  6. package/dist/css/adminlte.css +2814 -1138
  7. package/dist/css/adminlte.css.map +1 -1
  8. package/dist/css/adminlte.min.css +2 -2
  9. package/dist/css/adminlte.min.css.map +1 -1
  10. package/dist/css/adminlte.rtl.css +2814 -1138
  11. package/dist/css/adminlte.rtl.css.map +1 -1
  12. package/dist/css/adminlte.rtl.min.css +2 -2
  13. package/dist/css/adminlte.rtl.min.css.map +1 -1
  14. package/dist/docs/browser-support.html +291 -385
  15. package/dist/docs/color-mode.html +283 -381
  16. package/dist/docs/components/main-header.html +269 -363
  17. package/dist/docs/components/main-sidebar.html +284 -378
  18. package/dist/docs/customization.html +1056 -0
  19. package/dist/docs/deployment.html +1121 -0
  20. package/dist/docs/faq.html +887 -397
  21. package/dist/docs/getting-started.html +967 -0
  22. package/dist/docs/how-to-contribute.html +365 -450
  23. package/dist/docs/index.html +16 -0
  24. package/dist/docs/integrations.html +1207 -0
  25. package/dist/docs/introduction.html +483 -434
  26. package/dist/docs/javascript/accessibility.html +925 -0
  27. package/dist/docs/javascript/card-widget.html +995 -0
  28. package/dist/docs/javascript/direct-chat.html +872 -0
  29. package/dist/docs/javascript/fullscreen.html +881 -0
  30. package/dist/docs/javascript/layout.html +884 -0
  31. package/dist/docs/javascript/plugins-overview.html +1120 -0
  32. package/dist/docs/javascript/pushmenu.html +522 -377
  33. package/dist/docs/javascript/treeview.html +498 -390
  34. package/dist/docs/layout-blueprint.html +1063 -0
  35. package/dist/docs/layout.html +316 -402
  36. package/dist/docs/license.html +282 -375
  37. package/dist/docs/migration.html +1125 -0
  38. package/dist/docs/recipes.html +1161 -0
  39. package/dist/docs/rtl.html +933 -0
  40. package/dist/examples/lockscreen.html +66 -2
  41. package/dist/examples/login-v2.html +65 -1
  42. package/dist/examples/login.html +65 -1
  43. package/dist/examples/register-v2.html +65 -1
  44. package/dist/examples/register.html +65 -1
  45. package/dist/forms/elements.html +1381 -0
  46. package/dist/forms/{general.html → layout.html} +382 -452
  47. package/dist/forms/validation.html +1251 -0
  48. package/dist/forms/wizard.html +1386 -0
  49. package/dist/generate/theme.html +135 -5
  50. package/dist/index.html +311 -92
  51. package/dist/index2.html +314 -92
  52. package/dist/index3.html +311 -92
  53. package/dist/js/adminlte.js +135 -314
  54. package/dist/js/adminlte.js.map +1 -1
  55. package/dist/js/adminlte.min.js +3 -3
  56. package/dist/js/adminlte.min.js.map +1 -1
  57. package/dist/layout/collapsed-sidebar-without-hover.html +1120 -0
  58. package/dist/layout/collapsed-sidebar.html +311 -92
  59. package/dist/layout/fixed-complete.html +311 -92
  60. package/dist/layout/fixed-footer.html +311 -92
  61. package/dist/layout/fixed-header.html +311 -92
  62. package/dist/layout/fixed-sidebar.html +311 -92
  63. package/dist/layout/layout-custom-area.html +311 -92
  64. package/dist/layout/layout-rtl.html +311 -92
  65. package/dist/layout/logo-switch.html +135 -5
  66. package/dist/layout/sidebar-mini.html +311 -92
  67. package/dist/layout/unfixed-sidebar.html +311 -92
  68. package/dist/mailbox/compose.html +1127 -0
  69. package/dist/mailbox/inbox.html +1477 -0
  70. package/dist/mailbox/read.html +1178 -0
  71. package/dist/pages/404.html +213 -0
  72. package/dist/pages/500.html +201 -0
  73. package/dist/pages/calendar.html +1242 -0
  74. package/dist/pages/chat.html +1403 -0
  75. package/dist/pages/faq.html +1359 -0
  76. package/dist/pages/file-manager.html +1811 -0
  77. package/dist/pages/invoice.html +1175 -0
  78. package/dist/pages/kanban.html +1415 -0
  79. package/dist/pages/maintenance.html +204 -0
  80. package/dist/pages/pricing.html +1255 -0
  81. package/dist/pages/profile.html +1358 -0
  82. package/dist/pages/projects.html +1620 -0
  83. package/dist/pages/settings.html +1363 -0
  84. package/dist/tables/data.html +1295 -0
  85. package/dist/tables/simple.html +311 -92
  86. package/dist/widgets/cards.html +311 -92
  87. package/dist/widgets/info-box.html +311 -92
  88. package/dist/widgets/small-box.html +311 -92
  89. package/netlify.toml +16 -0
  90. package/package.json +32 -26
  91. package/src/scss/_accessibility.scss +44 -0
  92. package/src/scss/_app-footer.scss +9 -0
  93. package/src/scss/_app-header.scss +27 -0
  94. package/src/scss/_app-sidebar.scss +73 -74
  95. package/src/scss/_bootstrap-variables.scss +12 -5
  96. package/src/scss/_docs.scss +816 -0
  97. package/src/scss/_table.scss +4 -4
  98. package/src/scss/adminlte.scss +4 -1
  99. package/src/scss/pages/_login_and_register.scss +1 -1
  100. package/src/ts/accessibility.ts +9 -7
  101. package/src/ts/adminlte.ts +2 -14
  102. package/src/ts/fullscreen.ts +8 -4
  103. package/src/ts/layout.ts +34 -16
  104. package/src/ts/push-menu.ts +257 -104
  105. package/src/ts/util/index.ts +10 -0
  106. package/.claude/settings.local.json +0 -33
  107. package/CLAUDE.md +0 -79
@@ -78,11 +78,18 @@
78
78
  <i class="bi bi-list"></i>
79
79
  </a>
80
80
  </li>
81
+
81
82
  <li class="nav-item d-none d-md-block">
82
- <a href="#" class="nav-link">Home</a>
83
+ <a href="../index.html" class="nav-link">
84
+ <i class="bi bi-grid-1x2 me-1" aria-hidden="true"></i>
85
+ Live preview
86
+ </a>
83
87
  </li>
84
88
  <li class="nav-item d-none d-md-block">
85
- <a href="#" class="nav-link">Contact</a>
89
+ <a href="../docs/introduction.html" class="nav-link">
90
+ <i class="bi bi-book me-1" aria-hidden="true"></i>
91
+ Documentation
92
+ </a>
86
93
  </li>
87
94
  </ul>
88
95
  <!--end::Start Navbar Links-->
@@ -220,11 +227,70 @@
220
227
  <li class="nav-item">
221
228
  <a class="nav-link" href="#" data-lte-toggle="fullscreen">
222
229
  <i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
223
- <i data-lte-icon="minimize" class="bi bi-fullscreen-exit" style="display: none"></i>
230
+ <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
224
231
  </a>
225
232
  </li>
226
233
  <!--end::Fullscreen Toggle-->
227
234
 
235
+ <!--begin::Color Mode Toggle (#6010)-->
236
+ <li class="nav-item dropdown">
237
+ <a
238
+ class="nav-link"
239
+ href="#"
240
+ id="bd-theme"
241
+ aria-label="Toggle color scheme"
242
+ data-bs-toggle="dropdown"
243
+ aria-expanded="false"
244
+ >
245
+ <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
246
+ <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
247
+ <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
248
+ </a>
249
+ <ul
250
+ class="dropdown-menu dropdown-menu-end"
251
+ aria-labelledby="bd-theme"
252
+ style="--bs-dropdown-min-width: 8rem"
253
+ >
254
+ <li>
255
+ <button
256
+ type="button"
257
+ class="dropdown-item d-flex align-items-center"
258
+ data-bs-theme-value="light"
259
+ aria-pressed="false"
260
+ >
261
+ <i class="bi bi-sun-fill me-2"></i>
262
+ Light
263
+ <i class="bi bi-check-lg ms-auto d-none"></i>
264
+ </button>
265
+ </li>
266
+ <li>
267
+ <button
268
+ type="button"
269
+ class="dropdown-item d-flex align-items-center"
270
+ data-bs-theme-value="dark"
271
+ aria-pressed="false"
272
+ >
273
+ <i class="bi bi-moon-fill me-2"></i>
274
+ Dark
275
+ <i class="bi bi-check-lg ms-auto d-none"></i>
276
+ </button>
277
+ </li>
278
+ <li>
279
+ <button
280
+ type="button"
281
+ class="dropdown-item d-flex align-items-center active"
282
+ data-bs-theme-value="auto"
283
+ aria-pressed="true"
284
+ >
285
+ <i class="bi bi-circle-half me-2"></i>
286
+ Auto
287
+ <i class="bi bi-check-lg ms-auto d-none"></i>
288
+ </button>
289
+ </li>
290
+ </ul>
291
+ </li>
292
+ <!--end::Color Mode Toggle-->
293
+
228
294
  <!--begin::User Menu Dropdown-->
229
295
  <li class="nav-item dropdown user-menu">
230
296
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
@@ -666,7 +732,7 @@
666
732
  <!--end::To the end-->
667
733
  <!--begin::Copyright-->
668
734
  <strong>
669
- Copyright &copy; 2014-2025&nbsp;
735
+ Copyright &copy; 2014-2026&nbsp;
670
736
  <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
671
737
  </strong>
672
738
  All rights reserved.
@@ -722,7 +788,71 @@
722
788
  }
723
789
  });
724
790
  </script>
725
- <!--end::OverlayScrollbars Configure-->
791
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
792
+ <script>
793
+ (() => {
794
+ 'use strict';
795
+
796
+ const STORAGE_KEY = 'lte-theme';
797
+
798
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
799
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
800
+
801
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
802
+
803
+ const getPreferredTheme = () => {
804
+ const stored = getStoredTheme();
805
+ if (stored) return stored;
806
+ return prefersDark() ? 'dark' : 'light';
807
+ };
808
+
809
+ const setTheme = (theme) => {
810
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
811
+ document.documentElement.setAttribute('data-bs-theme', resolved);
812
+ };
813
+
814
+ setTheme(getPreferredTheme());
815
+
816
+ const showActiveTheme = (theme) => {
817
+ // Highlight the active dropdown option
818
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
819
+ el.classList.remove('active');
820
+ el.setAttribute('aria-pressed', 'false');
821
+ const check = el.querySelector('.bi-check-lg');
822
+ if (check) check.classList.add('d-none');
823
+ });
824
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
825
+ if (active) {
826
+ active.classList.add('active');
827
+ active.setAttribute('aria-pressed', 'true');
828
+ const check = active.querySelector('.bi-check-lg');
829
+ if (check) check.classList.remove('d-none');
830
+ }
831
+ // Sync the topbar trigger icon
832
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
833
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
834
+ });
835
+ };
836
+
837
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
838
+ const stored = getStoredTheme();
839
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
840
+ });
841
+
842
+ document.addEventListener('DOMContentLoaded', () => {
843
+ showActiveTheme(getPreferredTheme());
844
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
845
+ toggle.addEventListener('click', () => {
846
+ const theme = toggle.getAttribute('data-bs-theme-value');
847
+ setStoredTheme(theme);
848
+ setTheme(theme);
849
+ showActiveTheme(theme);
850
+ });
851
+ });
852
+ });
853
+ })();
854
+ </script>
855
+ <!--end::Color Mode Toggle-->
726
856
  <script>
727
857
  document.addEventListener('DOMContentLoaded', () => {
728
858
  const appSidebar = document.querySelector('.app-sidebar');
package/dist/index.html CHANGED
@@ -94,11 +94,18 @@
94
94
  <i class="bi bi-list"></i>
95
95
  </a>
96
96
  </li>
97
+
97
98
  <li class="nav-item d-none d-md-block">
98
- <a href="#" class="nav-link">Home</a>
99
+ <a href="./index.html" class="nav-link">
100
+ <i class="bi bi-grid-1x2 me-1" aria-hidden="true"></i>
101
+ Live preview
102
+ </a>
99
103
  </li>
100
104
  <li class="nav-item d-none d-md-block">
101
- <a href="#" class="nav-link">Contact</a>
105
+ <a href="./docs/introduction.html" class="nav-link">
106
+ <i class="bi bi-book me-1" aria-hidden="true"></i>
107
+ Documentation
108
+ </a>
102
109
  </li>
103
110
  </ul>
104
111
  <!--end::Start Navbar Links-->
@@ -236,11 +243,70 @@
236
243
  <li class="nav-item">
237
244
  <a class="nav-link" href="#" data-lte-toggle="fullscreen">
238
245
  <i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
239
- <i data-lte-icon="minimize" class="bi bi-fullscreen-exit" style="display: none"></i>
246
+ <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
240
247
  </a>
241
248
  </li>
242
249
  <!--end::Fullscreen Toggle-->
243
250
 
251
+ <!--begin::Color Mode Toggle (#6010)-->
252
+ <li class="nav-item dropdown">
253
+ <a
254
+ class="nav-link"
255
+ href="#"
256
+ id="bd-theme"
257
+ aria-label="Toggle color scheme"
258
+ data-bs-toggle="dropdown"
259
+ aria-expanded="false"
260
+ >
261
+ <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
262
+ <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
263
+ <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
264
+ </a>
265
+ <ul
266
+ class="dropdown-menu dropdown-menu-end"
267
+ aria-labelledby="bd-theme"
268
+ style="--bs-dropdown-min-width: 8rem"
269
+ >
270
+ <li>
271
+ <button
272
+ type="button"
273
+ class="dropdown-item d-flex align-items-center"
274
+ data-bs-theme-value="light"
275
+ aria-pressed="false"
276
+ >
277
+ <i class="bi bi-sun-fill me-2"></i>
278
+ Light
279
+ <i class="bi bi-check-lg ms-auto d-none"></i>
280
+ </button>
281
+ </li>
282
+ <li>
283
+ <button
284
+ type="button"
285
+ class="dropdown-item d-flex align-items-center"
286
+ data-bs-theme-value="dark"
287
+ aria-pressed="false"
288
+ >
289
+ <i class="bi bi-moon-fill me-2"></i>
290
+ Dark
291
+ <i class="bi bi-check-lg ms-auto d-none"></i>
292
+ </button>
293
+ </li>
294
+ <li>
295
+ <button
296
+ type="button"
297
+ class="dropdown-item d-flex align-items-center active"
298
+ data-bs-theme-value="auto"
299
+ aria-pressed="true"
300
+ >
301
+ <i class="bi bi-circle-half me-2"></i>
302
+ Auto
303
+ <i class="bi bi-check-lg ms-auto d-none"></i>
304
+ </button>
305
+ </li>
306
+ </ul>
307
+ </li>
308
+ <!--end::Color Mode Toggle-->
309
+
244
310
  <!--begin::User Menu Dropdown-->
245
311
  <li class="nav-item dropdown user-menu">
246
312
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
@@ -398,7 +464,7 @@
398
464
  <i class="nav-icon bi bi-clipboard-fill"></i>
399
465
  <p>
400
466
  Layout Options
401
- <span class="nav-badge badge text-bg-secondary me-3">6</span>
467
+ <span class="nav-badge badge text-bg-secondary me-3">7</span>
402
468
  <i class="nav-arrow bi bi-chevron-right"></i>
403
469
  </p>
404
470
  </a>
@@ -451,6 +517,12 @@
451
517
  <p>Sidebar Mini <small>+ Collapsed</small></p>
452
518
  </a>
453
519
  </li>
520
+ <li class="nav-item">
521
+ <a href="./layout/collapsed-sidebar-without-hover.html" class="nav-link">
522
+ <i class="nav-icon bi bi-circle"></i>
523
+ <p>Sidebar Mini <small>+ Collapsed + No Hover</small></p>
524
+ </a>
525
+ </li>
454
526
  <li class="nav-item">
455
527
  <a href="./layout/logo-switch.html" class="nav-link">
456
528
  <i class="nav-icon bi bi-circle"></i>
@@ -494,6 +566,36 @@
494
566
  </li>
495
567
  </ul>
496
568
  </li>
569
+ <li class="nav-item">
570
+ <a href="#" class="nav-link">
571
+ <i class="nav-icon bi bi-envelope"></i>
572
+ <p>
573
+ Mailbox
574
+ <i class="nav-arrow bi bi-chevron-right"></i>
575
+ </p>
576
+ </a>
577
+ <ul class="nav nav-treeview">
578
+ <li class="nav-item">
579
+ <a href="./mailbox/inbox.html" class="nav-link">
580
+ <i class="nav-icon bi bi-circle"></i>
581
+ <p>Inbox</p>
582
+ </a>
583
+ </li>
584
+ <li class="nav-item">
585
+ <a href="./mailbox/read.html" class="nav-link">
586
+ <i class="nav-icon bi bi-circle"></i>
587
+ <p>Read Message</p>
588
+ </a>
589
+ </li>
590
+ <li class="nav-item">
591
+ <a href="./mailbox/compose.html" class="nav-link">
592
+ <i class="nav-icon bi bi-circle"></i>
593
+ <p>Compose</p>
594
+ </a>
595
+ </li>
596
+ </ul>
597
+ </li>
598
+
497
599
  <li class="nav-item">
498
600
  <a href="#" class="nav-link">
499
601
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -504,9 +606,27 @@
504
606
  </a>
505
607
  <ul class="nav nav-treeview">
506
608
  <li class="nav-item">
507
- <a href="./forms/general.html" class="nav-link">
609
+ <a href="./forms/elements.html" class="nav-link">
610
+ <i class="nav-icon bi bi-circle"></i>
611
+ <p>Elements</p>
612
+ </a>
613
+ </li>
614
+ <li class="nav-item">
615
+ <a href="./forms/layout.html" class="nav-link">
508
616
  <i class="nav-icon bi bi-circle"></i>
509
- <p>General Elements</p>
617
+ <p>Layout</p>
618
+ </a>
619
+ </li>
620
+ <li class="nav-item">
621
+ <a href="./forms/validation.html" class="nav-link">
622
+ <i class="nav-icon bi bi-circle"></i>
623
+ <p>Validation</p>
624
+ </a>
625
+ </li>
626
+ <li class="nav-item">
627
+ <a href="./forms/wizard.html" class="nav-link">
628
+ <i class="nav-icon bi bi-circle"></i>
629
+ <p>Wizard</p>
510
630
  </a>
511
631
  </li>
512
632
  </ul>
@@ -526,6 +646,114 @@
526
646
  <p>Simple Tables</p>
527
647
  </a>
528
648
  </li>
649
+ <li class="nav-item">
650
+ <a href="./tables/data.html" class="nav-link">
651
+ <i class="nav-icon bi bi-circle"></i>
652
+ <p>Data Tables</p>
653
+ </a>
654
+ </li>
655
+ </ul>
656
+ </li>
657
+
658
+ <li class="nav-header">PAGES</li>
659
+ <li class="nav-item">
660
+ <a href="#" class="nav-link">
661
+ <i class="nav-icon bi bi-file-earmark-text"></i>
662
+ <p>
663
+ Pages
664
+ <i class="nav-arrow bi bi-chevron-right"></i>
665
+ </p>
666
+ </a>
667
+ <ul class="nav nav-treeview">
668
+ <li class="nav-item">
669
+ <a href="./pages/profile.html" class="nav-link">
670
+ <i class="nav-icon bi bi-circle"></i>
671
+ <p>Profile</p>
672
+ </a>
673
+ </li>
674
+ <li class="nav-item">
675
+ <a href="./pages/settings.html" class="nav-link">
676
+ <i class="nav-icon bi bi-circle"></i>
677
+ <p>Settings</p>
678
+ </a>
679
+ </li>
680
+ <li class="nav-item">
681
+ <a href="./pages/invoice.html" class="nav-link">
682
+ <i class="nav-icon bi bi-circle"></i>
683
+ <p>Invoice</p>
684
+ </a>
685
+ </li>
686
+ <li class="nav-item">
687
+ <a href="./pages/calendar.html" class="nav-link">
688
+ <i class="nav-icon bi bi-circle"></i>
689
+ <p>Calendar</p>
690
+ </a>
691
+ </li>
692
+ <li class="nav-item">
693
+ <a href="./pages/kanban.html" class="nav-link">
694
+ <i class="nav-icon bi bi-circle"></i>
695
+ <p>Kanban</p>
696
+ </a>
697
+ </li>
698
+ <li class="nav-item">
699
+ <a href="./pages/chat.html" class="nav-link">
700
+ <i class="nav-icon bi bi-circle"></i>
701
+ <p>Chat</p>
702
+ </a>
703
+ </li>
704
+ <li class="nav-item">
705
+ <a href="./pages/file-manager.html" class="nav-link">
706
+ <i class="nav-icon bi bi-circle"></i>
707
+ <p>File Manager</p>
708
+ </a>
709
+ </li>
710
+ <li class="nav-item">
711
+ <a href="./pages/projects.html" class="nav-link">
712
+ <i class="nav-icon bi bi-circle"></i>
713
+ <p>Projects</p>
714
+ </a>
715
+ </li>
716
+ <li class="nav-item">
717
+ <a href="./pages/pricing.html" class="nav-link">
718
+ <i class="nav-icon bi bi-circle"></i>
719
+ <p>Pricing</p>
720
+ </a>
721
+ </li>
722
+ <li class="nav-item">
723
+ <a href="./pages/faq.html" class="nav-link">
724
+ <i class="nav-icon bi bi-circle"></i>
725
+ <p>FAQ</p>
726
+ </a>
727
+ </li>
728
+ <li class="nav-item">
729
+ <a href="#" class="nav-link">
730
+ <i class="nav-icon bi bi-circle"></i>
731
+ <p>
732
+ Error
733
+ <i class="nav-arrow bi bi-chevron-right"></i>
734
+ </p>
735
+ </a>
736
+ <ul class="nav nav-treeview">
737
+ <li class="nav-item">
738
+ <a href="./pages/404.html" class="nav-link">
739
+ <i class="nav-icon bi bi-circle"></i>
740
+ <p>404</p>
741
+ </a>
742
+ </li>
743
+ <li class="nav-item">
744
+ <a href="./pages/500.html" class="nav-link">
745
+ <i class="nav-icon bi bi-circle"></i>
746
+ <p>500</p>
747
+ </a>
748
+ </li>
749
+ <li class="nav-item">
750
+ <a href="./pages/maintenance.html" class="nav-link">
751
+ <i class="nav-icon bi bi-circle"></i>
752
+ <p>Maintenance</p>
753
+ </a>
754
+ </li>
755
+ </ul>
756
+ </li>
529
757
  </ul>
530
758
  </li>
531
759
 
@@ -594,90 +822,6 @@
594
822
  </ul>
595
823
  </li>
596
824
 
597
- <li class="nav-header">DOCUMENTATIONS</li>
598
- <li class="nav-item">
599
- <a href="./docs/introduction.html" class="nav-link">
600
- <i class="nav-icon bi bi-download"></i>
601
- <p>Installation</p>
602
- </a>
603
- </li>
604
- <li class="nav-item">
605
- <a href="./docs/layout.html" class="nav-link">
606
- <i class="nav-icon bi bi-grip-horizontal"></i>
607
- <p>Layout</p>
608
- </a>
609
- </li>
610
- <li class="nav-item">
611
- <a href="./docs/color-mode.html" class="nav-link">
612
- <i class="nav-icon bi bi-star-half"></i>
613
- <p>Color Mode</p>
614
- </a>
615
- </li>
616
- <li class="nav-item">
617
- <a href="#" class="nav-link">
618
- <i class="nav-icon bi bi-ui-checks-grid"></i>
619
- <p>
620
- Components
621
- <i class="nav-arrow bi bi-chevron-right"></i>
622
- </p>
623
- </a>
624
- <ul class="nav nav-treeview">
625
- <li class="nav-item">
626
- <a href="./docs/components/main-header.html" class="nav-link">
627
- <i class="nav-icon bi bi-circle"></i>
628
- <p>Main Header</p>
629
- </a>
630
- </li>
631
- <li class="nav-item">
632
- <a href="./docs/components/main-sidebar.html" class="nav-link">
633
- <i class="nav-icon bi bi-circle"></i>
634
- <p>Main Sidebar</p>
635
- </a>
636
- </li>
637
- </ul>
638
- </li>
639
- <li class="nav-item">
640
- <a href="#" class="nav-link">
641
- <i class="nav-icon bi bi-filetype-js"></i>
642
- <p>
643
- Javascript
644
- <i class="nav-arrow bi bi-chevron-right"></i>
645
- </p>
646
- </a>
647
- <ul class="nav nav-treeview">
648
- <li class="nav-item">
649
- <a href="./docs/javascript/treeview.html" class="nav-link">
650
- <i class="nav-icon bi bi-circle"></i>
651
- <p>Treeview</p>
652
- </a>
653
- </li>
654
- </ul>
655
- </li>
656
- <li class="nav-item">
657
- <a href="./docs/browser-support.html" class="nav-link">
658
- <i class="nav-icon bi bi-browser-edge"></i>
659
- <p>Browser Support</p>
660
- </a>
661
- </li>
662
- <li class="nav-item">
663
- <a href="./docs/how-to-contribute.html" class="nav-link">
664
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
665
- <p>How To Contribute</p>
666
- </a>
667
- </li>
668
- <li class="nav-item">
669
- <a href="./docs/faq.html" class="nav-link">
670
- <i class="nav-icon bi bi-question-circle-fill"></i>
671
- <p>FAQ</p>
672
- </a>
673
- </li>
674
- <li class="nav-item">
675
- <a href="./docs/license.html" class="nav-link">
676
- <i class="nav-icon bi bi-patch-check-fill"></i>
677
- <p>License</p>
678
- </a>
679
- </li>
680
-
681
825
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
682
826
  <li class="nav-item">
683
827
  <a href="#" class="nav-link">
@@ -765,6 +909,17 @@
765
909
  </li>
766
910
  </ul>
767
911
  <!--end::Sidebar Menu-->
912
+
913
+ <!-- Docs CTA (bottom of sidebar) -->
914
+ <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
915
+ <a
916
+ href="./docs/introduction.html"
917
+ class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
918
+ >
919
+ <i class="bi bi-book" aria-hidden="true"></i>
920
+ View documentation
921
+ </a>
922
+ </div>
768
923
  </nav>
769
924
  </div>
770
925
  <!--end::Sidebar Wrapper-->
@@ -1245,7 +1400,7 @@
1245
1400
  <!--end::To the end-->
1246
1401
  <!--begin::Copyright-->
1247
1402
  <strong>
1248
- Copyright &copy; 2014-2025&nbsp;
1403
+ Copyright &copy; 2014-2026&nbsp;
1249
1404
  <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
1250
1405
  </strong>
1251
1406
  All rights reserved.
@@ -1301,7 +1456,71 @@
1301
1456
  }
1302
1457
  });
1303
1458
  </script>
1304
- <!--end::OverlayScrollbars Configure-->
1459
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
1460
+ <script>
1461
+ (() => {
1462
+ 'use strict';
1463
+
1464
+ const STORAGE_KEY = 'lte-theme';
1465
+
1466
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
1467
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
1468
+
1469
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
1470
+
1471
+ const getPreferredTheme = () => {
1472
+ const stored = getStoredTheme();
1473
+ if (stored) return stored;
1474
+ return prefersDark() ? 'dark' : 'light';
1475
+ };
1476
+
1477
+ const setTheme = (theme) => {
1478
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
1479
+ document.documentElement.setAttribute('data-bs-theme', resolved);
1480
+ };
1481
+
1482
+ setTheme(getPreferredTheme());
1483
+
1484
+ const showActiveTheme = (theme) => {
1485
+ // Highlight the active dropdown option
1486
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
1487
+ el.classList.remove('active');
1488
+ el.setAttribute('aria-pressed', 'false');
1489
+ const check = el.querySelector('.bi-check-lg');
1490
+ if (check) check.classList.add('d-none');
1491
+ });
1492
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
1493
+ if (active) {
1494
+ active.classList.add('active');
1495
+ active.setAttribute('aria-pressed', 'true');
1496
+ const check = active.querySelector('.bi-check-lg');
1497
+ if (check) check.classList.remove('d-none');
1498
+ }
1499
+ // Sync the topbar trigger icon
1500
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
1501
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
1502
+ });
1503
+ };
1504
+
1505
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
1506
+ const stored = getStoredTheme();
1507
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
1508
+ });
1509
+
1510
+ document.addEventListener('DOMContentLoaded', () => {
1511
+ showActiveTheme(getPreferredTheme());
1512
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
1513
+ toggle.addEventListener('click', () => {
1514
+ const theme = toggle.getAttribute('data-bs-theme-value');
1515
+ setStoredTheme(theme);
1516
+ setTheme(theme);
1517
+ showActiveTheme(theme);
1518
+ });
1519
+ });
1520
+ });
1521
+ })();
1522
+ </script>
1523
+ <!--end::Color Mode Toggle-->
1305
1524
 
1306
1525
  <!-- OPTIONAL SCRIPTS -->
1307
1526