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">
@@ -484,6 +550,36 @@
484
550
  </li>
485
551
  </ul>
486
552
  </li>
553
+ <li class="nav-item">
554
+ <a href="#" class="nav-link">
555
+ <i class="nav-icon bi bi-envelope"></i>
556
+ <p>
557
+ Mailbox
558
+ <i class="nav-arrow bi bi-chevron-right"></i>
559
+ </p>
560
+ </a>
561
+ <ul class="nav nav-treeview">
562
+ <li class="nav-item">
563
+ <a href="../mailbox/inbox.html" class="nav-link">
564
+ <i class="nav-icon bi bi-circle"></i>
565
+ <p>Inbox</p>
566
+ </a>
567
+ </li>
568
+ <li class="nav-item">
569
+ <a href="../mailbox/read.html" class="nav-link">
570
+ <i class="nav-icon bi bi-circle"></i>
571
+ <p>Read Message</p>
572
+ </a>
573
+ </li>
574
+ <li class="nav-item">
575
+ <a href="../mailbox/compose.html" class="nav-link">
576
+ <i class="nav-icon bi bi-circle"></i>
577
+ <p>Compose</p>
578
+ </a>
579
+ </li>
580
+ </ul>
581
+ </li>
582
+
487
583
  <li class="nav-item">
488
584
  <a href="#" class="nav-link">
489
585
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -494,9 +590,27 @@
494
590
  </a>
495
591
  <ul class="nav nav-treeview">
496
592
  <li class="nav-item">
497
- <a href="../forms/general.html" class="nav-link">
593
+ <a href="../forms/elements.html" class="nav-link">
594
+ <i class="nav-icon bi bi-circle"></i>
595
+ <p>Elements</p>
596
+ </a>
597
+ </li>
598
+ <li class="nav-item">
599
+ <a href="../forms/layout.html" class="nav-link">
498
600
  <i class="nav-icon bi bi-circle"></i>
499
- <p>General Elements</p>
601
+ <p>Layout</p>
602
+ </a>
603
+ </li>
604
+ <li class="nav-item">
605
+ <a href="../forms/validation.html" class="nav-link">
606
+ <i class="nav-icon bi bi-circle"></i>
607
+ <p>Validation</p>
608
+ </a>
609
+ </li>
610
+ <li class="nav-item">
611
+ <a href="../forms/wizard.html" class="nav-link">
612
+ <i class="nav-icon bi bi-circle"></i>
613
+ <p>Wizard</p>
500
614
  </a>
501
615
  </li>
502
616
  </ul>
@@ -516,6 +630,114 @@
516
630
  <p>Simple Tables</p>
517
631
  </a>
518
632
  </li>
633
+ <li class="nav-item">
634
+ <a href="../tables/data.html" class="nav-link">
635
+ <i class="nav-icon bi bi-circle"></i>
636
+ <p>Data Tables</p>
637
+ </a>
638
+ </li>
639
+ </ul>
640
+ </li>
641
+
642
+ <li class="nav-header">PAGES</li>
643
+ <li class="nav-item">
644
+ <a href="#" class="nav-link">
645
+ <i class="nav-icon bi bi-file-earmark-text"></i>
646
+ <p>
647
+ Pages
648
+ <i class="nav-arrow bi bi-chevron-right"></i>
649
+ </p>
650
+ </a>
651
+ <ul class="nav nav-treeview">
652
+ <li class="nav-item">
653
+ <a href="../pages/profile.html" class="nav-link">
654
+ <i class="nav-icon bi bi-circle"></i>
655
+ <p>Profile</p>
656
+ </a>
657
+ </li>
658
+ <li class="nav-item">
659
+ <a href="../pages/settings.html" class="nav-link">
660
+ <i class="nav-icon bi bi-circle"></i>
661
+ <p>Settings</p>
662
+ </a>
663
+ </li>
664
+ <li class="nav-item">
665
+ <a href="../pages/invoice.html" class="nav-link">
666
+ <i class="nav-icon bi bi-circle"></i>
667
+ <p>Invoice</p>
668
+ </a>
669
+ </li>
670
+ <li class="nav-item">
671
+ <a href="../pages/calendar.html" class="nav-link">
672
+ <i class="nav-icon bi bi-circle"></i>
673
+ <p>Calendar</p>
674
+ </a>
675
+ </li>
676
+ <li class="nav-item">
677
+ <a href="../pages/kanban.html" class="nav-link">
678
+ <i class="nav-icon bi bi-circle"></i>
679
+ <p>Kanban</p>
680
+ </a>
681
+ </li>
682
+ <li class="nav-item">
683
+ <a href="../pages/chat.html" class="nav-link">
684
+ <i class="nav-icon bi bi-circle"></i>
685
+ <p>Chat</p>
686
+ </a>
687
+ </li>
688
+ <li class="nav-item">
689
+ <a href="../pages/file-manager.html" class="nav-link">
690
+ <i class="nav-icon bi bi-circle"></i>
691
+ <p>File Manager</p>
692
+ </a>
693
+ </li>
694
+ <li class="nav-item">
695
+ <a href="../pages/projects.html" class="nav-link">
696
+ <i class="nav-icon bi bi-circle"></i>
697
+ <p>Projects</p>
698
+ </a>
699
+ </li>
700
+ <li class="nav-item">
701
+ <a href="../pages/pricing.html" class="nav-link">
702
+ <i class="nav-icon bi bi-circle"></i>
703
+ <p>Pricing</p>
704
+ </a>
705
+ </li>
706
+ <li class="nav-item">
707
+ <a href="../pages/faq.html" class="nav-link">
708
+ <i class="nav-icon bi bi-circle"></i>
709
+ <p>FAQ</p>
710
+ </a>
711
+ </li>
712
+ <li class="nav-item">
713
+ <a href="#" class="nav-link">
714
+ <i class="nav-icon bi bi-circle"></i>
715
+ <p>
716
+ Error
717
+ <i class="nav-arrow bi bi-chevron-right"></i>
718
+ </p>
719
+ </a>
720
+ <ul class="nav nav-treeview">
721
+ <li class="nav-item">
722
+ <a href="../pages/404.html" class="nav-link">
723
+ <i class="nav-icon bi bi-circle"></i>
724
+ <p>404</p>
725
+ </a>
726
+ </li>
727
+ <li class="nav-item">
728
+ <a href="../pages/500.html" class="nav-link">
729
+ <i class="nav-icon bi bi-circle"></i>
730
+ <p>500</p>
731
+ </a>
732
+ </li>
733
+ <li class="nav-item">
734
+ <a href="../pages/maintenance.html" class="nav-link">
735
+ <i class="nav-icon bi bi-circle"></i>
736
+ <p>Maintenance</p>
737
+ </a>
738
+ </li>
739
+ </ul>
740
+ </li>
519
741
  </ul>
520
742
  </li>
521
743
 
@@ -584,126 +806,6 @@
584
806
  </ul>
585
807
  </li>
586
808
 
587
- <li class="nav-header">DOCUMENTATIONS</li>
588
- <li class="nav-item">
589
- <a href="../docs/introduction.html" class="nav-link">
590
- <i class="nav-icon bi bi-download"></i>
591
- <p>Installation</p>
592
- </a>
593
- </li>
594
- <li class="nav-item">
595
- <a href="../docs/layout.html" class="nav-link">
596
- <i class="nav-icon bi bi-grip-horizontal"></i>
597
- <p>Layout</p>
598
- </a>
599
- </li>
600
- <li class="nav-item">
601
- <a href="../docs/color-mode.html" class="nav-link">
602
- <i class="nav-icon bi bi-star-half"></i>
603
- <p>Color Mode</p>
604
- </a>
605
- </li>
606
- <li class="nav-item">
607
- <a href="#" class="nav-link">
608
- <i class="nav-icon bi bi-ui-checks-grid"></i>
609
- <p>
610
- Components
611
- <i class="nav-arrow bi bi-chevron-right"></i>
612
- </p>
613
- </a>
614
- <ul class="nav nav-treeview">
615
- <li class="nav-item">
616
- <a href="../docs/components/main-header.html" class="nav-link">
617
- <i class="nav-icon bi bi-circle"></i>
618
- <p>Main Header</p>
619
- </a>
620
- </li>
621
- <li class="nav-item">
622
- <a href="../docs/components/main-sidebar.html" class="nav-link">
623
- <i class="nav-icon bi bi-circle"></i>
624
- <p>Main Sidebar</p>
625
- </a>
626
- </li>
627
- </ul>
628
- </li>
629
- <li class="nav-item">
630
- <a href="#" class="nav-link">
631
- <i class="nav-icon bi bi-filetype-js"></i>
632
- <p>
633
- Javascript
634
- <i class="nav-arrow bi bi-chevron-right"></i>
635
- </p>
636
- </a>
637
- <ul class="nav nav-treeview">
638
- <li class="nav-item">
639
- <a href="../docs/javascript/layout.html" class="nav-link">
640
- <i class="nav-icon bi bi-circle"></i>
641
- <p>Layout</p>
642
- </a>
643
- </li>
644
- <li class="nav-item">
645
- <a href="../docs/javascript/pushmenu.html" class="nav-link">
646
- <i class="nav-icon bi bi-circle"></i>
647
- <p>PushMenu</p>
648
- </a>
649
- </li>
650
- <li class="nav-item">
651
- <a href="../docs/javascript/treeview.html" class="nav-link">
652
- <i class="nav-icon bi bi-circle"></i>
653
- <p>Treeview</p>
654
- </a>
655
- </li>
656
- <li class="nav-item">
657
- <a href="../docs/javascript/card-widget.html" class="nav-link">
658
- <i class="nav-icon bi bi-circle"></i>
659
- <p>Card Widget</p>
660
- </a>
661
- </li>
662
- <li class="nav-item">
663
- <a href="../docs/javascript/direct-chat.html" class="nav-link">
664
- <i class="nav-icon bi bi-circle"></i>
665
- <p>Direct Chat</p>
666
- </a>
667
- </li>
668
- <li class="nav-item">
669
- <a href="../docs/javascript/fullscreen.html" class="nav-link">
670
- <i class="nav-icon bi bi-circle"></i>
671
- <p>Fullscreen</p>
672
- </a>
673
- </li>
674
- <li class="nav-item">
675
- <a href="../docs/javascript/accessibility.html" class="nav-link">
676
- <i class="nav-icon bi bi-circle"></i>
677
- <p>Accessibility</p>
678
- </a>
679
- </li>
680
- </ul>
681
- </li>
682
- <li class="nav-item">
683
- <a href="../docs/browser-support.html" class="nav-link">
684
- <i class="nav-icon bi bi-browser-edge"></i>
685
- <p>Browser Support</p>
686
- </a>
687
- </li>
688
- <li class="nav-item">
689
- <a href="../docs/how-to-contribute.html" class="nav-link">
690
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
691
- <p>How To Contribute</p>
692
- </a>
693
- </li>
694
- <li class="nav-item">
695
- <a href="../docs/faq.html" class="nav-link">
696
- <i class="nav-icon bi bi-question-circle-fill"></i>
697
- <p>FAQ</p>
698
- </a>
699
- </li>
700
- <li class="nav-item">
701
- <a href="../docs/license.html" class="nav-link">
702
- <i class="nav-icon bi bi-patch-check-fill"></i>
703
- <p>License</p>
704
- </a>
705
- </li>
706
-
707
809
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
708
810
  <li class="nav-item">
709
811
  <a href="#" class="nav-link">
@@ -791,6 +893,17 @@
791
893
  </li>
792
894
  </ul>
793
895
  <!--end::Sidebar Menu-->
896
+
897
+ <!-- Docs CTA (bottom of sidebar) -->
898
+ <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
899
+ <a
900
+ href="../docs/introduction.html"
901
+ class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
902
+ >
903
+ <i class="bi bi-book" aria-hidden="true"></i>
904
+ View documentation
905
+ </a>
906
+ </div>
794
907
  </nav>
795
908
  </div>
796
909
  <!--end::Sidebar Wrapper-->
@@ -929,7 +1042,71 @@
929
1042
  }
930
1043
  });
931
1044
  </script>
932
- <!--end::OverlayScrollbars Configure-->
1045
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
1046
+ <script>
1047
+ (() => {
1048
+ 'use strict';
1049
+
1050
+ const STORAGE_KEY = 'lte-theme';
1051
+
1052
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
1053
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
1054
+
1055
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
1056
+
1057
+ const getPreferredTheme = () => {
1058
+ const stored = getStoredTheme();
1059
+ if (stored) return stored;
1060
+ return prefersDark() ? 'dark' : 'light';
1061
+ };
1062
+
1063
+ const setTheme = (theme) => {
1064
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
1065
+ document.documentElement.setAttribute('data-bs-theme', resolved);
1066
+ };
1067
+
1068
+ setTheme(getPreferredTheme());
1069
+
1070
+ const showActiveTheme = (theme) => {
1071
+ // Highlight the active dropdown option
1072
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
1073
+ el.classList.remove('active');
1074
+ el.setAttribute('aria-pressed', 'false');
1075
+ const check = el.querySelector('.bi-check-lg');
1076
+ if (check) check.classList.add('d-none');
1077
+ });
1078
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
1079
+ if (active) {
1080
+ active.classList.add('active');
1081
+ active.setAttribute('aria-pressed', 'true');
1082
+ const check = active.querySelector('.bi-check-lg');
1083
+ if (check) check.classList.remove('d-none');
1084
+ }
1085
+ // Sync the topbar trigger icon
1086
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
1087
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
1088
+ });
1089
+ };
1090
+
1091
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
1092
+ const stored = getStoredTheme();
1093
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
1094
+ });
1095
+
1096
+ document.addEventListener('DOMContentLoaded', () => {
1097
+ showActiveTheme(getPreferredTheme());
1098
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
1099
+ toggle.addEventListener('click', () => {
1100
+ const theme = toggle.getAttribute('data-bs-theme-value');
1101
+ setStoredTheme(theme);
1102
+ setTheme(theme);
1103
+ showActiveTheme(theme);
1104
+ });
1105
+ });
1106
+ });
1107
+ })();
1108
+ </script>
1109
+ <!--end::Color Mode Toggle-->
933
1110
  <!--end::Script-->
934
1111
  </body>
935
1112
  <!--end::Body-->
@@ -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">
@@ -520,7 +586,71 @@
520
586
  }
521
587
  });
522
588
  </script>
523
- <!--end::OverlayScrollbars Configure-->
589
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
590
+ <script>
591
+ (() => {
592
+ 'use strict';
593
+
594
+ const STORAGE_KEY = 'lte-theme';
595
+
596
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
597
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
598
+
599
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
600
+
601
+ const getPreferredTheme = () => {
602
+ const stored = getStoredTheme();
603
+ if (stored) return stored;
604
+ return prefersDark() ? 'dark' : 'light';
605
+ };
606
+
607
+ const setTheme = (theme) => {
608
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
609
+ document.documentElement.setAttribute('data-bs-theme', resolved);
610
+ };
611
+
612
+ setTheme(getPreferredTheme());
613
+
614
+ const showActiveTheme = (theme) => {
615
+ // Highlight the active dropdown option
616
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
617
+ el.classList.remove('active');
618
+ el.setAttribute('aria-pressed', 'false');
619
+ const check = el.querySelector('.bi-check-lg');
620
+ if (check) check.classList.add('d-none');
621
+ });
622
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
623
+ if (active) {
624
+ active.classList.add('active');
625
+ active.setAttribute('aria-pressed', 'true');
626
+ const check = active.querySelector('.bi-check-lg');
627
+ if (check) check.classList.remove('d-none');
628
+ }
629
+ // Sync the topbar trigger icon
630
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
631
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
632
+ });
633
+ };
634
+
635
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
636
+ const stored = getStoredTheme();
637
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
638
+ });
639
+
640
+ document.addEventListener('DOMContentLoaded', () => {
641
+ showActiveTheme(getPreferredTheme());
642
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
643
+ toggle.addEventListener('click', () => {
644
+ const theme = toggle.getAttribute('data-bs-theme-value');
645
+ setStoredTheme(theme);
646
+ setTheme(theme);
647
+ showActiveTheme(theme);
648
+ });
649
+ });
650
+ });
651
+ })();
652
+ </script>
653
+ <!--end::Color Mode Toggle-->
524
654
  <!--end::Script-->
525
655
  </body>
526
656
  <!--end::Body-->