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
package/dist/index2.html CHANGED
@@ -5,6 +5,32 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>AdminLTE | Dashboard v2</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" />
@@ -85,11 +111,18 @@
85
111
  <i class="bi bi-list"></i>
86
112
  </a>
87
113
  </li>
114
+
88
115
  <li class="nav-item d-none d-md-block">
89
- <a href="#" class="nav-link">Home</a>
116
+ <a href="./index.html" class="nav-link">
117
+ <i class="bi bi-grid-1x2 me-1" aria-hidden="true"></i>
118
+ Live preview
119
+ </a>
90
120
  </li>
91
121
  <li class="nav-item d-none d-md-block">
92
- <a href="#" class="nav-link">Contact</a>
122
+ <a href="./docs/introduction.html" class="nav-link">
123
+ <i class="bi bi-book me-1" aria-hidden="true"></i>
124
+ Documentation
125
+ </a>
93
126
  </li>
94
127
  </ul>
95
128
  <!--end::Start Navbar Links-->
@@ -227,11 +260,70 @@
227
260
  <li class="nav-item">
228
261
  <a class="nav-link" href="#" data-lte-toggle="fullscreen">
229
262
  <i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
230
- <i data-lte-icon="minimize" class="bi bi-fullscreen-exit" style="display: none"></i>
263
+ <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
231
264
  </a>
232
265
  </li>
233
266
  <!--end::Fullscreen Toggle-->
234
267
 
268
+ <!--begin::Color Mode Toggle (#6010)-->
269
+ <li class="nav-item dropdown">
270
+ <a
271
+ class="nav-link"
272
+ href="#"
273
+ id="bd-theme"
274
+ aria-label="Toggle color scheme"
275
+ data-bs-toggle="dropdown"
276
+ aria-expanded="false"
277
+ >
278
+ <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
279
+ <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
280
+ <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
281
+ </a>
282
+ <ul
283
+ class="dropdown-menu dropdown-menu-end"
284
+ aria-labelledby="bd-theme"
285
+ style="--bs-dropdown-min-width: 8rem"
286
+ >
287
+ <li>
288
+ <button
289
+ type="button"
290
+ class="dropdown-item d-flex align-items-center"
291
+ data-bs-theme-value="light"
292
+ aria-pressed="false"
293
+ >
294
+ <i class="bi bi-sun-fill me-2"></i>
295
+ Light
296
+ <i class="bi bi-check-lg ms-auto d-none"></i>
297
+ </button>
298
+ </li>
299
+ <li>
300
+ <button
301
+ type="button"
302
+ class="dropdown-item d-flex align-items-center"
303
+ data-bs-theme-value="dark"
304
+ aria-pressed="false"
305
+ >
306
+ <i class="bi bi-moon-fill me-2"></i>
307
+ Dark
308
+ <i class="bi bi-check-lg ms-auto d-none"></i>
309
+ </button>
310
+ </li>
311
+ <li>
312
+ <button
313
+ type="button"
314
+ class="dropdown-item d-flex align-items-center active"
315
+ data-bs-theme-value="auto"
316
+ aria-pressed="true"
317
+ >
318
+ <i class="bi bi-circle-half me-2"></i>
319
+ Auto
320
+ <i class="bi bi-check-lg ms-auto d-none"></i>
321
+ </button>
322
+ </li>
323
+ </ul>
324
+ </li>
325
+ <!--end::Color Mode Toggle-->
326
+
235
327
  <!--begin::User Menu Dropdown-->
236
328
  <li class="nav-item dropdown user-menu">
237
329
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
@@ -310,13 +402,11 @@
310
402
  <!--end::Sidebar Brand-->
311
403
  <!--begin::Sidebar Wrapper-->
312
404
  <div class="sidebar-wrapper">
313
- <nav class="mt-2">
405
+ <nav class="mt-2" aria-label="Main navigation">
314
406
  <!--begin::Sidebar Menu-->
315
407
  <ul
316
408
  class="nav sidebar-menu flex-column"
317
409
  data-lte-toggle="treeview"
318
- role="navigation"
319
- aria-label="Main navigation"
320
410
  data-accordion="false"
321
411
  id="navigation"
322
412
  >
@@ -491,6 +581,36 @@
491
581
  </li>
492
582
  </ul>
493
583
  </li>
584
+ <li class="nav-item">
585
+ <a href="#" class="nav-link">
586
+ <i class="nav-icon bi bi-envelope"></i>
587
+ <p>
588
+ Mailbox
589
+ <i class="nav-arrow bi bi-chevron-right"></i>
590
+ </p>
591
+ </a>
592
+ <ul class="nav nav-treeview">
593
+ <li class="nav-item">
594
+ <a href="./mailbox/inbox.html" class="nav-link">
595
+ <i class="nav-icon bi bi-circle"></i>
596
+ <p>Inbox</p>
597
+ </a>
598
+ </li>
599
+ <li class="nav-item">
600
+ <a href="./mailbox/read.html" class="nav-link">
601
+ <i class="nav-icon bi bi-circle"></i>
602
+ <p>Read Message</p>
603
+ </a>
604
+ </li>
605
+ <li class="nav-item">
606
+ <a href="./mailbox/compose.html" class="nav-link">
607
+ <i class="nav-icon bi bi-circle"></i>
608
+ <p>Compose</p>
609
+ </a>
610
+ </li>
611
+ </ul>
612
+ </li>
613
+
494
614
  <li class="nav-item">
495
615
  <a href="#" class="nav-link">
496
616
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -501,9 +621,27 @@
501
621
  </a>
502
622
  <ul class="nav nav-treeview">
503
623
  <li class="nav-item">
504
- <a href="./forms/general.html" class="nav-link">
624
+ <a href="./forms/elements.html" class="nav-link">
625
+ <i class="nav-icon bi bi-circle"></i>
626
+ <p>Elements</p>
627
+ </a>
628
+ </li>
629
+ <li class="nav-item">
630
+ <a href="./forms/layout.html" class="nav-link">
505
631
  <i class="nav-icon bi bi-circle"></i>
506
- <p>General Elements</p>
632
+ <p>Layout</p>
633
+ </a>
634
+ </li>
635
+ <li class="nav-item">
636
+ <a href="./forms/validation.html" class="nav-link">
637
+ <i class="nav-icon bi bi-circle"></i>
638
+ <p>Validation</p>
639
+ </a>
640
+ </li>
641
+ <li class="nav-item">
642
+ <a href="./forms/wizard.html" class="nav-link">
643
+ <i class="nav-icon bi bi-circle"></i>
644
+ <p>Wizard</p>
507
645
  </a>
508
646
  </li>
509
647
  </ul>
@@ -523,6 +661,114 @@
523
661
  <p>Simple Tables</p>
524
662
  </a>
525
663
  </li>
664
+ <li class="nav-item">
665
+ <a href="./tables/data.html" class="nav-link">
666
+ <i class="nav-icon bi bi-circle"></i>
667
+ <p>Data Tables</p>
668
+ </a>
669
+ </li>
670
+ </ul>
671
+ </li>
672
+
673
+ <li class="nav-header">PAGES</li>
674
+ <li class="nav-item">
675
+ <a href="#" class="nav-link">
676
+ <i class="nav-icon bi bi-file-earmark-text"></i>
677
+ <p>
678
+ Pages
679
+ <i class="nav-arrow bi bi-chevron-right"></i>
680
+ </p>
681
+ </a>
682
+ <ul class="nav nav-treeview">
683
+ <li class="nav-item">
684
+ <a href="./pages/profile.html" class="nav-link">
685
+ <i class="nav-icon bi bi-circle"></i>
686
+ <p>Profile</p>
687
+ </a>
688
+ </li>
689
+ <li class="nav-item">
690
+ <a href="./pages/settings.html" class="nav-link">
691
+ <i class="nav-icon bi bi-circle"></i>
692
+ <p>Settings</p>
693
+ </a>
694
+ </li>
695
+ <li class="nav-item">
696
+ <a href="./pages/invoice.html" class="nav-link">
697
+ <i class="nav-icon bi bi-circle"></i>
698
+ <p>Invoice</p>
699
+ </a>
700
+ </li>
701
+ <li class="nav-item">
702
+ <a href="./pages/calendar.html" class="nav-link">
703
+ <i class="nav-icon bi bi-circle"></i>
704
+ <p>Calendar</p>
705
+ </a>
706
+ </li>
707
+ <li class="nav-item">
708
+ <a href="./pages/kanban.html" class="nav-link">
709
+ <i class="nav-icon bi bi-circle"></i>
710
+ <p>Kanban</p>
711
+ </a>
712
+ </li>
713
+ <li class="nav-item">
714
+ <a href="./pages/chat.html" class="nav-link">
715
+ <i class="nav-icon bi bi-circle"></i>
716
+ <p>Chat</p>
717
+ </a>
718
+ </li>
719
+ <li class="nav-item">
720
+ <a href="./pages/file-manager.html" class="nav-link">
721
+ <i class="nav-icon bi bi-circle"></i>
722
+ <p>File Manager</p>
723
+ </a>
724
+ </li>
725
+ <li class="nav-item">
726
+ <a href="./pages/projects.html" class="nav-link">
727
+ <i class="nav-icon bi bi-circle"></i>
728
+ <p>Projects</p>
729
+ </a>
730
+ </li>
731
+ <li class="nav-item">
732
+ <a href="./pages/pricing.html" class="nav-link">
733
+ <i class="nav-icon bi bi-circle"></i>
734
+ <p>Pricing</p>
735
+ </a>
736
+ </li>
737
+ <li class="nav-item">
738
+ <a href="./pages/faq.html" class="nav-link">
739
+ <i class="nav-icon bi bi-circle"></i>
740
+ <p>FAQ</p>
741
+ </a>
742
+ </li>
743
+ <li class="nav-item">
744
+ <a href="#" class="nav-link">
745
+ <i class="nav-icon bi bi-circle"></i>
746
+ <p>
747
+ Error
748
+ <i class="nav-arrow bi bi-chevron-right"></i>
749
+ </p>
750
+ </a>
751
+ <ul class="nav nav-treeview">
752
+ <li class="nav-item">
753
+ <a href="./pages/404.html" class="nav-link">
754
+ <i class="nav-icon bi bi-circle"></i>
755
+ <p>404</p>
756
+ </a>
757
+ </li>
758
+ <li class="nav-item">
759
+ <a href="./pages/500.html" class="nav-link">
760
+ <i class="nav-icon bi bi-circle"></i>
761
+ <p>500</p>
762
+ </a>
763
+ </li>
764
+ <li class="nav-item">
765
+ <a href="./pages/maintenance.html" class="nav-link">
766
+ <i class="nav-icon bi bi-circle"></i>
767
+ <p>Maintenance</p>
768
+ </a>
769
+ </li>
770
+ </ul>
771
+ </li>
526
772
  </ul>
527
773
  </li>
528
774
 
@@ -591,126 +837,6 @@
591
837
  </ul>
592
838
  </li>
593
839
 
594
- <li class="nav-header">DOCUMENTATIONS</li>
595
- <li class="nav-item">
596
- <a href="./docs/introduction.html" class="nav-link">
597
- <i class="nav-icon bi bi-download"></i>
598
- <p>Installation</p>
599
- </a>
600
- </li>
601
- <li class="nav-item">
602
- <a href="./docs/layout.html" class="nav-link">
603
- <i class="nav-icon bi bi-grip-horizontal"></i>
604
- <p>Layout</p>
605
- </a>
606
- </li>
607
- <li class="nav-item">
608
- <a href="./docs/color-mode.html" class="nav-link">
609
- <i class="nav-icon bi bi-star-half"></i>
610
- <p>Color Mode</p>
611
- </a>
612
- </li>
613
- <li class="nav-item">
614
- <a href="#" class="nav-link">
615
- <i class="nav-icon bi bi-ui-checks-grid"></i>
616
- <p>
617
- Components
618
- <i class="nav-arrow bi bi-chevron-right"></i>
619
- </p>
620
- </a>
621
- <ul class="nav nav-treeview">
622
- <li class="nav-item">
623
- <a href="./docs/components/main-header.html" class="nav-link">
624
- <i class="nav-icon bi bi-circle"></i>
625
- <p>Main Header</p>
626
- </a>
627
- </li>
628
- <li class="nav-item">
629
- <a href="./docs/components/main-sidebar.html" class="nav-link">
630
- <i class="nav-icon bi bi-circle"></i>
631
- <p>Main Sidebar</p>
632
- </a>
633
- </li>
634
- </ul>
635
- </li>
636
- <li class="nav-item">
637
- <a href="#" class="nav-link">
638
- <i class="nav-icon bi bi-filetype-js"></i>
639
- <p>
640
- Javascript
641
- <i class="nav-arrow bi bi-chevron-right"></i>
642
- </p>
643
- </a>
644
- <ul class="nav nav-treeview">
645
- <li class="nav-item">
646
- <a href="./docs/javascript/layout.html" class="nav-link">
647
- <i class="nav-icon bi bi-circle"></i>
648
- <p>Layout</p>
649
- </a>
650
- </li>
651
- <li class="nav-item">
652
- <a href="./docs/javascript/pushmenu.html" class="nav-link">
653
- <i class="nav-icon bi bi-circle"></i>
654
- <p>PushMenu</p>
655
- </a>
656
- </li>
657
- <li class="nav-item">
658
- <a href="./docs/javascript/treeview.html" class="nav-link">
659
- <i class="nav-icon bi bi-circle"></i>
660
- <p>Treeview</p>
661
- </a>
662
- </li>
663
- <li class="nav-item">
664
- <a href="./docs/javascript/card-widget.html" class="nav-link">
665
- <i class="nav-icon bi bi-circle"></i>
666
- <p>Card Widget</p>
667
- </a>
668
- </li>
669
- <li class="nav-item">
670
- <a href="./docs/javascript/direct-chat.html" class="nav-link">
671
- <i class="nav-icon bi bi-circle"></i>
672
- <p>Direct Chat</p>
673
- </a>
674
- </li>
675
- <li class="nav-item">
676
- <a href="./docs/javascript/fullscreen.html" class="nav-link">
677
- <i class="nav-icon bi bi-circle"></i>
678
- <p>Fullscreen</p>
679
- </a>
680
- </li>
681
- <li class="nav-item">
682
- <a href="./docs/javascript/accessibility.html" class="nav-link">
683
- <i class="nav-icon bi bi-circle"></i>
684
- <p>Accessibility</p>
685
- </a>
686
- </li>
687
- </ul>
688
- </li>
689
- <li class="nav-item">
690
- <a href="./docs/browser-support.html" class="nav-link">
691
- <i class="nav-icon bi bi-browser-edge"></i>
692
- <p>Browser Support</p>
693
- </a>
694
- </li>
695
- <li class="nav-item">
696
- <a href="./docs/how-to-contribute.html" class="nav-link">
697
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
698
- <p>How To Contribute</p>
699
- </a>
700
- </li>
701
- <li class="nav-item">
702
- <a href="./docs/faq.html" class="nav-link">
703
- <i class="nav-icon bi bi-question-circle-fill"></i>
704
- <p>FAQ</p>
705
- </a>
706
- </li>
707
- <li class="nav-item">
708
- <a href="./docs/license.html" class="nav-link">
709
- <i class="nav-icon bi bi-patch-check-fill"></i>
710
- <p>License</p>
711
- </a>
712
- </li>
713
-
714
840
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
715
841
  <li class="nav-item">
716
842
  <a href="#" class="nav-link">
@@ -798,6 +924,17 @@
798
924
  </li>
799
925
  </ul>
800
926
  <!--end::Sidebar Menu-->
927
+
928
+ <!-- Docs CTA (bottom of sidebar) -->
929
+ <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
930
+ <a
931
+ href="./docs/introduction.html"
932
+ class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
933
+ >
934
+ <i class="bi bi-book" aria-hidden="true"></i>
935
+ View documentation
936
+ </a>
937
+ </div>
801
938
  </nav>
802
939
  </div>
803
940
  <!--end::Sidebar Wrapper-->
@@ -1907,7 +2044,71 @@
1907
2044
  }
1908
2045
  });
1909
2046
  </script>
1910
- <!--end::OverlayScrollbars Configure-->
2047
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
2048
+ <script>
2049
+ (() => {
2050
+ 'use strict';
2051
+
2052
+ const STORAGE_KEY = 'lte-theme';
2053
+
2054
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
2055
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
2056
+
2057
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
2058
+
2059
+ const getPreferredTheme = () => {
2060
+ const stored = getStoredTheme();
2061
+ if (stored) return stored;
2062
+ return prefersDark() ? 'dark' : 'light';
2063
+ };
2064
+
2065
+ const setTheme = (theme) => {
2066
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
2067
+ document.documentElement.setAttribute('data-bs-theme', resolved);
2068
+ };
2069
+
2070
+ setTheme(getPreferredTheme());
2071
+
2072
+ const showActiveTheme = (theme) => {
2073
+ // Highlight the active dropdown option
2074
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
2075
+ el.classList.remove('active');
2076
+ el.setAttribute('aria-pressed', 'false');
2077
+ const check = el.querySelector('.bi-check-lg');
2078
+ if (check) check.classList.add('d-none');
2079
+ });
2080
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
2081
+ if (active) {
2082
+ active.classList.add('active');
2083
+ active.setAttribute('aria-pressed', 'true');
2084
+ const check = active.querySelector('.bi-check-lg');
2085
+ if (check) check.classList.remove('d-none');
2086
+ }
2087
+ // Sync the topbar trigger icon
2088
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
2089
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
2090
+ });
2091
+ };
2092
+
2093
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
2094
+ const stored = getStoredTheme();
2095
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
2096
+ });
2097
+
2098
+ document.addEventListener('DOMContentLoaded', () => {
2099
+ showActiveTheme(getPreferredTheme());
2100
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
2101
+ toggle.addEventListener('click', () => {
2102
+ const theme = toggle.getAttribute('data-bs-theme-value');
2103
+ setStoredTheme(theme);
2104
+ setTheme(theme);
2105
+ showActiveTheme(theme);
2106
+ });
2107
+ });
2108
+ });
2109
+ })();
2110
+ </script>
2111
+ <!--end::Color Mode Toggle-->
1911
2112
 
1912
2113
  <!-- OPTIONAL SCRIPTS -->
1913
2114
 
@@ -2052,6 +2253,9 @@
2052
2253
  series: [700, 500, 400, 600, 300, 100],
2053
2254
  chart: {
2054
2255
  type: 'donut',
2256
+ // Pin an explicit height to avoid an ApexCharts ResizeObserver feedback
2257
+ // loop on browser zoom (most visible on Edge). Fixes #6019.
2258
+ height: 350,
2055
2259
  },
2056
2260
  labels: ['Chrome', 'Edge', 'FireFox', 'Safari', 'Opera', 'IE'],
2057
2261
  dataLabels: {