admin-lte 4.0.0-rc7 → 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 (102) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +43 -17
  3. package/dist/UI/general.html +303 -126
  4. package/dist/UI/icons.html +303 -126
  5. package/dist/UI/timeline.html +303 -126
  6. package/dist/css/adminlte.css +2798 -1167
  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 +2798 -1167
  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 +261 -397
  15. package/dist/docs/color-mode.html +242 -382
  16. package/dist/docs/components/main-header.html +238 -374
  17. package/dist/docs/components/main-sidebar.html +253 -389
  18. package/dist/docs/customization.html +1056 -0
  19. package/dist/docs/deployment.html +1121 -0
  20. package/dist/docs/faq.html +857 -409
  21. package/dist/docs/getting-started.html +967 -0
  22. package/dist/docs/how-to-contribute.html +335 -462
  23. package/dist/docs/index.html +16 -0
  24. package/dist/docs/integrations.html +1207 -0
  25. package/dist/docs/introduction.html +453 -446
  26. package/dist/docs/javascript/accessibility.html +361 -491
  27. package/dist/docs/javascript/card-widget.html +446 -450
  28. package/dist/docs/javascript/direct-chat.html +324 -421
  29. package/dist/docs/javascript/fullscreen.html +348 -416
  30. package/dist/docs/javascript/layout.html +345 -436
  31. package/dist/docs/javascript/plugins-overview.html +1120 -0
  32. package/dist/docs/javascript/pushmenu.html +485 -492
  33. package/dist/docs/javascript/treeview.html +466 -400
  34. package/dist/docs/layout-blueprint.html +1063 -0
  35. package/dist/docs/layout.html +287 -415
  36. package/dist/docs/license.html +252 -387
  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 +65 -1
  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/{general.html → elements.html} +489 -463
  46. package/dist/forms/layout.html +1243 -0
  47. package/dist/forms/validation.html +1251 -0
  48. package/dist/forms/wizard.html +1386 -0
  49. package/dist/generate/theme.html +134 -4
  50. package/dist/index.html +303 -126
  51. package/dist/index2.html +306 -126
  52. package/dist/index3.html +303 -126
  53. package/dist/js/adminlte.js +5 -5
  54. package/dist/js/adminlte.js.map +1 -1
  55. package/dist/js/adminlte.min.js +2 -2
  56. package/dist/js/adminlte.min.js.map +1 -1
  57. package/dist/layout/collapsed-sidebar-without-hover.html +303 -126
  58. package/dist/layout/collapsed-sidebar.html +303 -126
  59. package/dist/layout/fixed-complete.html +303 -126
  60. package/dist/layout/fixed-footer.html +303 -126
  61. package/dist/layout/fixed-header.html +303 -126
  62. package/dist/layout/fixed-sidebar.html +303 -126
  63. package/dist/layout/layout-custom-area.html +303 -126
  64. package/dist/layout/layout-rtl.html +303 -126
  65. package/dist/layout/logo-switch.html +134 -4
  66. package/dist/layout/sidebar-mini.html +303 -126
  67. package/dist/layout/unfixed-sidebar.html +303 -126
  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 +303 -126
  86. package/dist/widgets/cards.html +303 -126
  87. package/dist/widgets/info-box.html +303 -126
  88. package/dist/widgets/small-box.html +303 -126
  89. package/netlify.toml +16 -0
  90. package/package.json +29 -23
  91. package/src/scss/_app-header.scss +27 -0
  92. package/src/scss/_app-sidebar.scss +24 -30
  93. package/src/scss/_bootstrap-variables.scss +11 -4
  94. package/src/scss/_docs.scss +816 -0
  95. package/src/scss/_table.scss +4 -4
  96. package/src/scss/adminlte.scss +4 -1
  97. package/src/ts/adminlte.ts +1 -1
  98. package/src/ts/fullscreen.ts +8 -4
  99. package/src/ts/push-menu.ts +66 -5
  100. package/.claude/settings.local.json +0 -37
  101. package/CLAUDE.md +0 -79
  102. package/release.md +0 -75
@@ -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">
@@ -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">
@@ -500,6 +566,36 @@
500
566
  </li>
501
567
  </ul>
502
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
+
503
599
  <li class="nav-item">
504
600
  <a href="#" class="nav-link">
505
601
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -510,9 +606,27 @@
510
606
  </a>
511
607
  <ul class="nav nav-treeview">
512
608
  <li class="nav-item">
513
- <a href="./forms/general.html" class="nav-link">
609
+ <a href="./forms/elements.html" class="nav-link">
514
610
  <i class="nav-icon bi bi-circle"></i>
515
- <p>General Elements</p>
611
+ <p>Elements</p>
612
+ </a>
613
+ </li>
614
+ <li class="nav-item">
615
+ <a href="./forms/layout.html" class="nav-link">
616
+ <i class="nav-icon bi bi-circle"></i>
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>
516
630
  </a>
517
631
  </li>
518
632
  </ul>
@@ -532,6 +646,114 @@
532
646
  <p>Simple Tables</p>
533
647
  </a>
534
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>
535
757
  </ul>
536
758
  </li>
537
759
 
@@ -600,126 +822,6 @@
600
822
  </ul>
601
823
  </li>
602
824
 
603
- <li class="nav-header">DOCUMENTATIONS</li>
604
- <li class="nav-item">
605
- <a href="./docs/introduction.html" class="nav-link">
606
- <i class="nav-icon bi bi-download"></i>
607
- <p>Installation</p>
608
- </a>
609
- </li>
610
- <li class="nav-item">
611
- <a href="./docs/layout.html" class="nav-link">
612
- <i class="nav-icon bi bi-grip-horizontal"></i>
613
- <p>Layout</p>
614
- </a>
615
- </li>
616
- <li class="nav-item">
617
- <a href="./docs/color-mode.html" class="nav-link">
618
- <i class="nav-icon bi bi-star-half"></i>
619
- <p>Color Mode</p>
620
- </a>
621
- </li>
622
- <li class="nav-item">
623
- <a href="#" class="nav-link">
624
- <i class="nav-icon bi bi-ui-checks-grid"></i>
625
- <p>
626
- Components
627
- <i class="nav-arrow bi bi-chevron-right"></i>
628
- </p>
629
- </a>
630
- <ul class="nav nav-treeview">
631
- <li class="nav-item">
632
- <a href="./docs/components/main-header.html" class="nav-link">
633
- <i class="nav-icon bi bi-circle"></i>
634
- <p>Main Header</p>
635
- </a>
636
- </li>
637
- <li class="nav-item">
638
- <a href="./docs/components/main-sidebar.html" class="nav-link">
639
- <i class="nav-icon bi bi-circle"></i>
640
- <p>Main Sidebar</p>
641
- </a>
642
- </li>
643
- </ul>
644
- </li>
645
- <li class="nav-item">
646
- <a href="#" class="nav-link">
647
- <i class="nav-icon bi bi-filetype-js"></i>
648
- <p>
649
- Javascript
650
- <i class="nav-arrow bi bi-chevron-right"></i>
651
- </p>
652
- </a>
653
- <ul class="nav nav-treeview">
654
- <li class="nav-item">
655
- <a href="./docs/javascript/layout.html" class="nav-link">
656
- <i class="nav-icon bi bi-circle"></i>
657
- <p>Layout</p>
658
- </a>
659
- </li>
660
- <li class="nav-item">
661
- <a href="./docs/javascript/pushmenu.html" class="nav-link">
662
- <i class="nav-icon bi bi-circle"></i>
663
- <p>PushMenu</p>
664
- </a>
665
- </li>
666
- <li class="nav-item">
667
- <a href="./docs/javascript/treeview.html" class="nav-link">
668
- <i class="nav-icon bi bi-circle"></i>
669
- <p>Treeview</p>
670
- </a>
671
- </li>
672
- <li class="nav-item">
673
- <a href="./docs/javascript/card-widget.html" class="nav-link">
674
- <i class="nav-icon bi bi-circle"></i>
675
- <p>Card Widget</p>
676
- </a>
677
- </li>
678
- <li class="nav-item">
679
- <a href="./docs/javascript/direct-chat.html" class="nav-link">
680
- <i class="nav-icon bi bi-circle"></i>
681
- <p>Direct Chat</p>
682
- </a>
683
- </li>
684
- <li class="nav-item">
685
- <a href="./docs/javascript/fullscreen.html" class="nav-link">
686
- <i class="nav-icon bi bi-circle"></i>
687
- <p>Fullscreen</p>
688
- </a>
689
- </li>
690
- <li class="nav-item">
691
- <a href="./docs/javascript/accessibility.html" class="nav-link">
692
- <i class="nav-icon bi bi-circle"></i>
693
- <p>Accessibility</p>
694
- </a>
695
- </li>
696
- </ul>
697
- </li>
698
- <li class="nav-item">
699
- <a href="./docs/browser-support.html" class="nav-link">
700
- <i class="nav-icon bi bi-browser-edge"></i>
701
- <p>Browser Support</p>
702
- </a>
703
- </li>
704
- <li class="nav-item">
705
- <a href="./docs/how-to-contribute.html" class="nav-link">
706
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
707
- <p>How To Contribute</p>
708
- </a>
709
- </li>
710
- <li class="nav-item">
711
- <a href="./docs/faq.html" class="nav-link">
712
- <i class="nav-icon bi bi-question-circle-fill"></i>
713
- <p>FAQ</p>
714
- </a>
715
- </li>
716
- <li class="nav-item">
717
- <a href="./docs/license.html" class="nav-link">
718
- <i class="nav-icon bi bi-patch-check-fill"></i>
719
- <p>License</p>
720
- </a>
721
- </li>
722
-
723
825
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
724
826
  <li class="nav-item">
725
827
  <a href="#" class="nav-link">
@@ -807,6 +909,17 @@
807
909
  </li>
808
910
  </ul>
809
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>
810
923
  </nav>
811
924
  </div>
812
925
  <!--end::Sidebar Wrapper-->
@@ -1343,7 +1456,71 @@
1343
1456
  }
1344
1457
  });
1345
1458
  </script>
1346
- <!--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-->
1347
1524
 
1348
1525
  <!-- OPTIONAL SCRIPTS -->
1349
1526