admin-lte 4.0.0-rc7 → 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 (104) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +202 -102
  3. package/dist/UI/general.html +330 -129
  4. package/dist/UI/icons.html +330 -129
  5. package/dist/UI/timeline.html +330 -129
  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 +287 -399
  15. package/dist/docs/color-mode.html +268 -384
  16. package/dist/docs/components/main-header.html +264 -376
  17. package/dist/docs/components/main-sidebar.html +279 -391
  18. package/dist/docs/customization.html +1080 -0
  19. package/dist/docs/deployment.html +1145 -0
  20. package/dist/docs/faq.html +883 -411
  21. package/dist/docs/getting-started.html +991 -0
  22. package/dist/docs/how-to-contribute.html +361 -464
  23. package/dist/docs/index.html +16 -0
  24. package/dist/docs/integrations.html +1231 -0
  25. package/dist/docs/introduction.html +479 -448
  26. package/dist/docs/javascript/accessibility.html +387 -493
  27. package/dist/docs/javascript/card-widget.html +472 -452
  28. package/dist/docs/javascript/direct-chat.html +350 -423
  29. package/dist/docs/javascript/fullscreen.html +374 -418
  30. package/dist/docs/javascript/layout.html +371 -438
  31. package/dist/docs/javascript/plugins-overview.html +1144 -0
  32. package/dist/docs/javascript/pushmenu.html +511 -494
  33. package/dist/docs/javascript/treeview.html +492 -402
  34. package/dist/docs/layout-blueprint.html +1087 -0
  35. package/dist/docs/layout.html +313 -417
  36. package/dist/docs/license.html +278 -389
  37. package/dist/docs/migration.html +1149 -0
  38. package/dist/docs/recipes.html +1185 -0
  39. package/dist/docs/rtl.html +957 -0
  40. package/dist/examples/lockscreen.html +91 -1
  41. package/dist/examples/login-v2.html +91 -1
  42. package/dist/examples/login.html +91 -1
  43. package/dist/examples/register-v2.html +91 -1
  44. package/dist/examples/register.html +91 -1
  45. package/dist/forms/elements.html +1405 -0
  46. package/dist/forms/{general.html → layout.html} +401 -489
  47. package/dist/forms/validation.html +1275 -0
  48. package/dist/forms/wizard.html +1410 -0
  49. package/dist/generate/theme.html +160 -4
  50. package/dist/index.html +330 -129
  51. package/dist/index2.html +333 -129
  52. package/dist/index3.html +330 -129
  53. package/dist/js/adminlte.js +8 -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 +330 -129
  58. package/dist/layout/collapsed-sidebar.html +330 -129
  59. package/dist/layout/fixed-complete.html +330 -129
  60. package/dist/layout/fixed-footer.html +330 -129
  61. package/dist/layout/fixed-header.html +330 -129
  62. package/dist/layout/fixed-sidebar.html +330 -129
  63. package/dist/layout/layout-custom-area.html +330 -129
  64. package/dist/layout/layout-rtl.html +330 -129
  65. package/dist/layout/logo-switch.html +160 -4
  66. package/dist/layout/sidebar-mini.html +330 -129
  67. package/dist/layout/unfixed-sidebar.html +330 -129
  68. package/dist/mailbox/compose.html +1151 -0
  69. package/dist/mailbox/inbox.html +1509 -0
  70. package/dist/mailbox/read.html +1202 -0
  71. package/dist/pages/404.html +239 -0
  72. package/dist/pages/500.html +227 -0
  73. package/dist/pages/calendar.html +1266 -0
  74. package/dist/pages/chat.html +1427 -0
  75. package/dist/pages/faq.html +1383 -0
  76. package/dist/pages/file-manager.html +1835 -0
  77. package/dist/pages/invoice.html +1199 -0
  78. package/dist/pages/kanban.html +1439 -0
  79. package/dist/pages/maintenance.html +230 -0
  80. package/dist/pages/pricing.html +1279 -0
  81. package/dist/pages/profile.html +1382 -0
  82. package/dist/pages/projects.html +1644 -0
  83. package/dist/pages/settings.html +1387 -0
  84. package/dist/tables/data.html +1319 -0
  85. package/dist/tables/simple.html +330 -129
  86. package/dist/widgets/cards.html +330 -129
  87. package/dist/widgets/info-box.html +330 -129
  88. package/dist/widgets/small-box.html +330 -129
  89. package/github-issue-response.md +40 -0
  90. package/netlify.toml +16 -0
  91. package/package.json +31 -24
  92. package/src/scss/_app-header.scss +27 -0
  93. package/src/scss/_app-sidebar.scss +24 -30
  94. package/src/scss/_bootstrap-variables.scss +11 -4
  95. package/src/scss/_docs.scss +816 -0
  96. package/src/scss/_table.scss +4 -4
  97. package/src/scss/adminlte.scss +4 -1
  98. package/src/ts/accessibility.ts +9 -1
  99. package/src/ts/adminlte.ts +1 -1
  100. package/src/ts/fullscreen.ts +8 -4
  101. package/src/ts/push-menu.ts +66 -5
  102. package/.claude/settings.local.json +0 -37
  103. package/CLAUDE.md +0 -79
  104. package/release.md +0 -75
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>AdminLTE 4 | Collapsed Sidebar Without Hover</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" />
@@ -80,11 +106,18 @@
80
106
  <i class="bi bi-list"></i>
81
107
  </a>
82
108
  </li>
109
+
83
110
  <li class="nav-item d-none d-md-block">
84
- <a href="#" class="nav-link">Home</a>
111
+ <a href="../index.html" class="nav-link">
112
+ <i class="bi bi-grid-1x2 me-1" aria-hidden="true"></i>
113
+ Live preview
114
+ </a>
85
115
  </li>
86
116
  <li class="nav-item d-none d-md-block">
87
- <a href="#" class="nav-link">Contact</a>
117
+ <a href="../docs/introduction.html" class="nav-link">
118
+ <i class="bi bi-book me-1" aria-hidden="true"></i>
119
+ Documentation
120
+ </a>
88
121
  </li>
89
122
  </ul>
90
123
  <!--end::Start Navbar Links-->
@@ -222,11 +255,70 @@
222
255
  <li class="nav-item">
223
256
  <a class="nav-link" href="#" data-lte-toggle="fullscreen">
224
257
  <i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
225
- <i data-lte-icon="minimize" class="bi bi-fullscreen-exit" style="display: none"></i>
258
+ <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
226
259
  </a>
227
260
  </li>
228
261
  <!--end::Fullscreen Toggle-->
229
262
 
263
+ <!--begin::Color Mode Toggle (#6010)-->
264
+ <li class="nav-item dropdown">
265
+ <a
266
+ class="nav-link"
267
+ href="#"
268
+ id="bd-theme"
269
+ aria-label="Toggle color scheme"
270
+ data-bs-toggle="dropdown"
271
+ aria-expanded="false"
272
+ >
273
+ <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
274
+ <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
275
+ <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
276
+ </a>
277
+ <ul
278
+ class="dropdown-menu dropdown-menu-end"
279
+ aria-labelledby="bd-theme"
280
+ style="--bs-dropdown-min-width: 8rem"
281
+ >
282
+ <li>
283
+ <button
284
+ type="button"
285
+ class="dropdown-item d-flex align-items-center"
286
+ data-bs-theme-value="light"
287
+ aria-pressed="false"
288
+ >
289
+ <i class="bi bi-sun-fill me-2"></i>
290
+ Light
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"
298
+ data-bs-theme-value="dark"
299
+ aria-pressed="false"
300
+ >
301
+ <i class="bi bi-moon-fill me-2"></i>
302
+ Dark
303
+ <i class="bi bi-check-lg ms-auto d-none"></i>
304
+ </button>
305
+ </li>
306
+ <li>
307
+ <button
308
+ type="button"
309
+ class="dropdown-item d-flex align-items-center active"
310
+ data-bs-theme-value="auto"
311
+ aria-pressed="true"
312
+ >
313
+ <i class="bi bi-circle-half me-2"></i>
314
+ Auto
315
+ <i class="bi bi-check-lg ms-auto d-none"></i>
316
+ </button>
317
+ </li>
318
+ </ul>
319
+ </li>
320
+ <!--end::Color Mode Toggle-->
321
+
230
322
  <!--begin::User Menu Dropdown-->
231
323
  <li class="nav-item dropdown user-menu">
232
324
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
@@ -305,13 +397,11 @@
305
397
  <!--end::Sidebar Brand-->
306
398
  <!--begin::Sidebar Wrapper-->
307
399
  <div class="sidebar-wrapper">
308
- <nav class="mt-2">
400
+ <nav class="mt-2" aria-label="Main navigation">
309
401
  <!--begin::Sidebar Menu-->
310
402
  <ul
311
403
  class="nav sidebar-menu flex-column"
312
404
  data-lte-toggle="treeview"
313
- role="navigation"
314
- aria-label="Main navigation"
315
405
  data-accordion="false"
316
406
  id="navigation"
317
407
  >
@@ -489,6 +579,36 @@
489
579
  </li>
490
580
  </ul>
491
581
  </li>
582
+ <li class="nav-item">
583
+ <a href="#" class="nav-link">
584
+ <i class="nav-icon bi bi-envelope"></i>
585
+ <p>
586
+ Mailbox
587
+ <i class="nav-arrow bi bi-chevron-right"></i>
588
+ </p>
589
+ </a>
590
+ <ul class="nav nav-treeview">
591
+ <li class="nav-item">
592
+ <a href="../mailbox/inbox.html" class="nav-link">
593
+ <i class="nav-icon bi bi-circle"></i>
594
+ <p>Inbox</p>
595
+ </a>
596
+ </li>
597
+ <li class="nav-item">
598
+ <a href="../mailbox/read.html" class="nav-link">
599
+ <i class="nav-icon bi bi-circle"></i>
600
+ <p>Read Message</p>
601
+ </a>
602
+ </li>
603
+ <li class="nav-item">
604
+ <a href="../mailbox/compose.html" class="nav-link">
605
+ <i class="nav-icon bi bi-circle"></i>
606
+ <p>Compose</p>
607
+ </a>
608
+ </li>
609
+ </ul>
610
+ </li>
611
+
492
612
  <li class="nav-item">
493
613
  <a href="#" class="nav-link">
494
614
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -499,9 +619,27 @@
499
619
  </a>
500
620
  <ul class="nav nav-treeview">
501
621
  <li class="nav-item">
502
- <a href="../forms/general.html" class="nav-link">
622
+ <a href="../forms/elements.html" class="nav-link">
623
+ <i class="nav-icon bi bi-circle"></i>
624
+ <p>Elements</p>
625
+ </a>
626
+ </li>
627
+ <li class="nav-item">
628
+ <a href="../forms/layout.html" class="nav-link">
503
629
  <i class="nav-icon bi bi-circle"></i>
504
- <p>General Elements</p>
630
+ <p>Layout</p>
631
+ </a>
632
+ </li>
633
+ <li class="nav-item">
634
+ <a href="../forms/validation.html" class="nav-link">
635
+ <i class="nav-icon bi bi-circle"></i>
636
+ <p>Validation</p>
637
+ </a>
638
+ </li>
639
+ <li class="nav-item">
640
+ <a href="../forms/wizard.html" class="nav-link">
641
+ <i class="nav-icon bi bi-circle"></i>
642
+ <p>Wizard</p>
505
643
  </a>
506
644
  </li>
507
645
  </ul>
@@ -521,6 +659,114 @@
521
659
  <p>Simple Tables</p>
522
660
  </a>
523
661
  </li>
662
+ <li class="nav-item">
663
+ <a href="../tables/data.html" class="nav-link">
664
+ <i class="nav-icon bi bi-circle"></i>
665
+ <p>Data Tables</p>
666
+ </a>
667
+ </li>
668
+ </ul>
669
+ </li>
670
+
671
+ <li class="nav-header">PAGES</li>
672
+ <li class="nav-item">
673
+ <a href="#" class="nav-link">
674
+ <i class="nav-icon bi bi-file-earmark-text"></i>
675
+ <p>
676
+ Pages
677
+ <i class="nav-arrow bi bi-chevron-right"></i>
678
+ </p>
679
+ </a>
680
+ <ul class="nav nav-treeview">
681
+ <li class="nav-item">
682
+ <a href="../pages/profile.html" class="nav-link">
683
+ <i class="nav-icon bi bi-circle"></i>
684
+ <p>Profile</p>
685
+ </a>
686
+ </li>
687
+ <li class="nav-item">
688
+ <a href="../pages/settings.html" class="nav-link">
689
+ <i class="nav-icon bi bi-circle"></i>
690
+ <p>Settings</p>
691
+ </a>
692
+ </li>
693
+ <li class="nav-item">
694
+ <a href="../pages/invoice.html" class="nav-link">
695
+ <i class="nav-icon bi bi-circle"></i>
696
+ <p>Invoice</p>
697
+ </a>
698
+ </li>
699
+ <li class="nav-item">
700
+ <a href="../pages/calendar.html" class="nav-link">
701
+ <i class="nav-icon bi bi-circle"></i>
702
+ <p>Calendar</p>
703
+ </a>
704
+ </li>
705
+ <li class="nav-item">
706
+ <a href="../pages/kanban.html" class="nav-link">
707
+ <i class="nav-icon bi bi-circle"></i>
708
+ <p>Kanban</p>
709
+ </a>
710
+ </li>
711
+ <li class="nav-item">
712
+ <a href="../pages/chat.html" class="nav-link">
713
+ <i class="nav-icon bi bi-circle"></i>
714
+ <p>Chat</p>
715
+ </a>
716
+ </li>
717
+ <li class="nav-item">
718
+ <a href="../pages/file-manager.html" class="nav-link">
719
+ <i class="nav-icon bi bi-circle"></i>
720
+ <p>File Manager</p>
721
+ </a>
722
+ </li>
723
+ <li class="nav-item">
724
+ <a href="../pages/projects.html" class="nav-link">
725
+ <i class="nav-icon bi bi-circle"></i>
726
+ <p>Projects</p>
727
+ </a>
728
+ </li>
729
+ <li class="nav-item">
730
+ <a href="../pages/pricing.html" class="nav-link">
731
+ <i class="nav-icon bi bi-circle"></i>
732
+ <p>Pricing</p>
733
+ </a>
734
+ </li>
735
+ <li class="nav-item">
736
+ <a href="../pages/faq.html" class="nav-link">
737
+ <i class="nav-icon bi bi-circle"></i>
738
+ <p>FAQ</p>
739
+ </a>
740
+ </li>
741
+ <li class="nav-item">
742
+ <a href="#" class="nav-link">
743
+ <i class="nav-icon bi bi-circle"></i>
744
+ <p>
745
+ Error
746
+ <i class="nav-arrow bi bi-chevron-right"></i>
747
+ </p>
748
+ </a>
749
+ <ul class="nav nav-treeview">
750
+ <li class="nav-item">
751
+ <a href="../pages/404.html" class="nav-link">
752
+ <i class="nav-icon bi bi-circle"></i>
753
+ <p>404</p>
754
+ </a>
755
+ </li>
756
+ <li class="nav-item">
757
+ <a href="../pages/500.html" class="nav-link">
758
+ <i class="nav-icon bi bi-circle"></i>
759
+ <p>500</p>
760
+ </a>
761
+ </li>
762
+ <li class="nav-item">
763
+ <a href="../pages/maintenance.html" class="nav-link">
764
+ <i class="nav-icon bi bi-circle"></i>
765
+ <p>Maintenance</p>
766
+ </a>
767
+ </li>
768
+ </ul>
769
+ </li>
524
770
  </ul>
525
771
  </li>
526
772
 
@@ -589,126 +835,6 @@
589
835
  </ul>
590
836
  </li>
591
837
 
592
- <li class="nav-header">DOCUMENTATIONS</li>
593
- <li class="nav-item">
594
- <a href="../docs/introduction.html" class="nav-link">
595
- <i class="nav-icon bi bi-download"></i>
596
- <p>Installation</p>
597
- </a>
598
- </li>
599
- <li class="nav-item">
600
- <a href="../docs/layout.html" class="nav-link">
601
- <i class="nav-icon bi bi-grip-horizontal"></i>
602
- <p>Layout</p>
603
- </a>
604
- </li>
605
- <li class="nav-item">
606
- <a href="../docs/color-mode.html" class="nav-link">
607
- <i class="nav-icon bi bi-star-half"></i>
608
- <p>Color Mode</p>
609
- </a>
610
- </li>
611
- <li class="nav-item">
612
- <a href="#" class="nav-link">
613
- <i class="nav-icon bi bi-ui-checks-grid"></i>
614
- <p>
615
- Components
616
- <i class="nav-arrow bi bi-chevron-right"></i>
617
- </p>
618
- </a>
619
- <ul class="nav nav-treeview">
620
- <li class="nav-item">
621
- <a href="../docs/components/main-header.html" class="nav-link">
622
- <i class="nav-icon bi bi-circle"></i>
623
- <p>Main Header</p>
624
- </a>
625
- </li>
626
- <li class="nav-item">
627
- <a href="../docs/components/main-sidebar.html" class="nav-link">
628
- <i class="nav-icon bi bi-circle"></i>
629
- <p>Main Sidebar</p>
630
- </a>
631
- </li>
632
- </ul>
633
- </li>
634
- <li class="nav-item">
635
- <a href="#" class="nav-link">
636
- <i class="nav-icon bi bi-filetype-js"></i>
637
- <p>
638
- Javascript
639
- <i class="nav-arrow bi bi-chevron-right"></i>
640
- </p>
641
- </a>
642
- <ul class="nav nav-treeview">
643
- <li class="nav-item">
644
- <a href="../docs/javascript/layout.html" class="nav-link">
645
- <i class="nav-icon bi bi-circle"></i>
646
- <p>Layout</p>
647
- </a>
648
- </li>
649
- <li class="nav-item">
650
- <a href="../docs/javascript/pushmenu.html" class="nav-link">
651
- <i class="nav-icon bi bi-circle"></i>
652
- <p>PushMenu</p>
653
- </a>
654
- </li>
655
- <li class="nav-item">
656
- <a href="../docs/javascript/treeview.html" class="nav-link">
657
- <i class="nav-icon bi bi-circle"></i>
658
- <p>Treeview</p>
659
- </a>
660
- </li>
661
- <li class="nav-item">
662
- <a href="../docs/javascript/card-widget.html" class="nav-link">
663
- <i class="nav-icon bi bi-circle"></i>
664
- <p>Card Widget</p>
665
- </a>
666
- </li>
667
- <li class="nav-item">
668
- <a href="../docs/javascript/direct-chat.html" class="nav-link">
669
- <i class="nav-icon bi bi-circle"></i>
670
- <p>Direct Chat</p>
671
- </a>
672
- </li>
673
- <li class="nav-item">
674
- <a href="../docs/javascript/fullscreen.html" class="nav-link">
675
- <i class="nav-icon bi bi-circle"></i>
676
- <p>Fullscreen</p>
677
- </a>
678
- </li>
679
- <li class="nav-item">
680
- <a href="../docs/javascript/accessibility.html" class="nav-link">
681
- <i class="nav-icon bi bi-circle"></i>
682
- <p>Accessibility</p>
683
- </a>
684
- </li>
685
- </ul>
686
- </li>
687
- <li class="nav-item">
688
- <a href="../docs/browser-support.html" class="nav-link">
689
- <i class="nav-icon bi bi-browser-edge"></i>
690
- <p>Browser Support</p>
691
- </a>
692
- </li>
693
- <li class="nav-item">
694
- <a href="../docs/how-to-contribute.html" class="nav-link">
695
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
696
- <p>How To Contribute</p>
697
- </a>
698
- </li>
699
- <li class="nav-item">
700
- <a href="../docs/faq.html" class="nav-link">
701
- <i class="nav-icon bi bi-question-circle-fill"></i>
702
- <p>FAQ</p>
703
- </a>
704
- </li>
705
- <li class="nav-item">
706
- <a href="../docs/license.html" class="nav-link">
707
- <i class="nav-icon bi bi-patch-check-fill"></i>
708
- <p>License</p>
709
- </a>
710
- </li>
711
-
712
838
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
713
839
  <li class="nav-item">
714
840
  <a href="#" class="nav-link">
@@ -796,6 +922,17 @@
796
922
  </li>
797
923
  </ul>
798
924
  <!--end::Sidebar Menu-->
925
+
926
+ <!-- Docs CTA (bottom of sidebar) -->
927
+ <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
928
+ <a
929
+ href="../docs/introduction.html"
930
+ class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
931
+ >
932
+ <i class="bi bi-book" aria-hidden="true"></i>
933
+ View documentation
934
+ </a>
935
+ </div>
799
936
  </nav>
800
937
  </div>
801
938
  <!--end::Sidebar Wrapper-->
@@ -936,7 +1073,71 @@
936
1073
  }
937
1074
  });
938
1075
  </script>
939
- <!--end::OverlayScrollbars Configure-->
1076
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
1077
+ <script>
1078
+ (() => {
1079
+ 'use strict';
1080
+
1081
+ const STORAGE_KEY = 'lte-theme';
1082
+
1083
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
1084
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
1085
+
1086
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
1087
+
1088
+ const getPreferredTheme = () => {
1089
+ const stored = getStoredTheme();
1090
+ if (stored) return stored;
1091
+ return prefersDark() ? 'dark' : 'light';
1092
+ };
1093
+
1094
+ const setTheme = (theme) => {
1095
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
1096
+ document.documentElement.setAttribute('data-bs-theme', resolved);
1097
+ };
1098
+
1099
+ setTheme(getPreferredTheme());
1100
+
1101
+ const showActiveTheme = (theme) => {
1102
+ // Highlight the active dropdown option
1103
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
1104
+ el.classList.remove('active');
1105
+ el.setAttribute('aria-pressed', 'false');
1106
+ const check = el.querySelector('.bi-check-lg');
1107
+ if (check) check.classList.add('d-none');
1108
+ });
1109
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
1110
+ if (active) {
1111
+ active.classList.add('active');
1112
+ active.setAttribute('aria-pressed', 'true');
1113
+ const check = active.querySelector('.bi-check-lg');
1114
+ if (check) check.classList.remove('d-none');
1115
+ }
1116
+ // Sync the topbar trigger icon
1117
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
1118
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
1119
+ });
1120
+ };
1121
+
1122
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
1123
+ const stored = getStoredTheme();
1124
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
1125
+ });
1126
+
1127
+ document.addEventListener('DOMContentLoaded', () => {
1128
+ showActiveTheme(getPreferredTheme());
1129
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
1130
+ toggle.addEventListener('click', () => {
1131
+ const theme = toggle.getAttribute('data-bs-theme-value');
1132
+ setStoredTheme(theme);
1133
+ setTheme(theme);
1134
+ showActiveTheme(theme);
1135
+ });
1136
+ });
1137
+ });
1138
+ })();
1139
+ </script>
1140
+ <!--end::Color Mode Toggle-->
940
1141
  <!--end::Script-->
941
1142
  </body>
942
1143
  <!--end::Body-->