admin-lte 4.0.0-rc6 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +44 -18
  3. package/dist/UI/general.html +311 -92
  4. package/dist/UI/icons.html +311 -92
  5. package/dist/UI/timeline.html +311 -92
  6. package/dist/css/adminlte.css +2814 -1138
  7. package/dist/css/adminlte.css.map +1 -1
  8. package/dist/css/adminlte.min.css +2 -2
  9. package/dist/css/adminlte.min.css.map +1 -1
  10. package/dist/css/adminlte.rtl.css +2814 -1138
  11. package/dist/css/adminlte.rtl.css.map +1 -1
  12. package/dist/css/adminlte.rtl.min.css +2 -2
  13. package/dist/css/adminlte.rtl.min.css.map +1 -1
  14. package/dist/docs/browser-support.html +291 -385
  15. package/dist/docs/color-mode.html +283 -381
  16. package/dist/docs/components/main-header.html +269 -363
  17. package/dist/docs/components/main-sidebar.html +284 -378
  18. package/dist/docs/customization.html +1056 -0
  19. package/dist/docs/deployment.html +1121 -0
  20. package/dist/docs/faq.html +887 -397
  21. package/dist/docs/getting-started.html +967 -0
  22. package/dist/docs/how-to-contribute.html +365 -450
  23. package/dist/docs/index.html +16 -0
  24. package/dist/docs/integrations.html +1207 -0
  25. package/dist/docs/introduction.html +483 -434
  26. package/dist/docs/javascript/accessibility.html +925 -0
  27. package/dist/docs/javascript/card-widget.html +995 -0
  28. package/dist/docs/javascript/direct-chat.html +872 -0
  29. package/dist/docs/javascript/fullscreen.html +881 -0
  30. package/dist/docs/javascript/layout.html +884 -0
  31. package/dist/docs/javascript/plugins-overview.html +1120 -0
  32. package/dist/docs/javascript/pushmenu.html +522 -377
  33. package/dist/docs/javascript/treeview.html +498 -390
  34. package/dist/docs/layout-blueprint.html +1063 -0
  35. package/dist/docs/layout.html +316 -402
  36. package/dist/docs/license.html +282 -375
  37. package/dist/docs/migration.html +1125 -0
  38. package/dist/docs/recipes.html +1161 -0
  39. package/dist/docs/rtl.html +933 -0
  40. package/dist/examples/lockscreen.html +66 -2
  41. package/dist/examples/login-v2.html +65 -1
  42. package/dist/examples/login.html +65 -1
  43. package/dist/examples/register-v2.html +65 -1
  44. package/dist/examples/register.html +65 -1
  45. package/dist/forms/elements.html +1381 -0
  46. package/dist/forms/{general.html → layout.html} +382 -452
  47. package/dist/forms/validation.html +1251 -0
  48. package/dist/forms/wizard.html +1386 -0
  49. package/dist/generate/theme.html +135 -5
  50. package/dist/index.html +311 -92
  51. package/dist/index2.html +314 -92
  52. package/dist/index3.html +311 -92
  53. package/dist/js/adminlte.js +135 -314
  54. package/dist/js/adminlte.js.map +1 -1
  55. package/dist/js/adminlte.min.js +3 -3
  56. package/dist/js/adminlte.min.js.map +1 -1
  57. package/dist/layout/collapsed-sidebar-without-hover.html +1120 -0
  58. package/dist/layout/collapsed-sidebar.html +311 -92
  59. package/dist/layout/fixed-complete.html +311 -92
  60. package/dist/layout/fixed-footer.html +311 -92
  61. package/dist/layout/fixed-header.html +311 -92
  62. package/dist/layout/fixed-sidebar.html +311 -92
  63. package/dist/layout/layout-custom-area.html +311 -92
  64. package/dist/layout/layout-rtl.html +311 -92
  65. package/dist/layout/logo-switch.html +135 -5
  66. package/dist/layout/sidebar-mini.html +311 -92
  67. package/dist/layout/unfixed-sidebar.html +311 -92
  68. package/dist/mailbox/compose.html +1127 -0
  69. package/dist/mailbox/inbox.html +1477 -0
  70. package/dist/mailbox/read.html +1178 -0
  71. package/dist/pages/404.html +213 -0
  72. package/dist/pages/500.html +201 -0
  73. package/dist/pages/calendar.html +1242 -0
  74. package/dist/pages/chat.html +1403 -0
  75. package/dist/pages/faq.html +1359 -0
  76. package/dist/pages/file-manager.html +1811 -0
  77. package/dist/pages/invoice.html +1175 -0
  78. package/dist/pages/kanban.html +1415 -0
  79. package/dist/pages/maintenance.html +204 -0
  80. package/dist/pages/pricing.html +1255 -0
  81. package/dist/pages/profile.html +1358 -0
  82. package/dist/pages/projects.html +1620 -0
  83. package/dist/pages/settings.html +1363 -0
  84. package/dist/tables/data.html +1295 -0
  85. package/dist/tables/simple.html +311 -92
  86. package/dist/widgets/cards.html +311 -92
  87. package/dist/widgets/info-box.html +311 -92
  88. package/dist/widgets/small-box.html +311 -92
  89. package/netlify.toml +16 -0
  90. package/package.json +32 -26
  91. package/src/scss/_accessibility.scss +44 -0
  92. package/src/scss/_app-footer.scss +9 -0
  93. package/src/scss/_app-header.scss +27 -0
  94. package/src/scss/_app-sidebar.scss +73 -74
  95. package/src/scss/_bootstrap-variables.scss +12 -5
  96. package/src/scss/_docs.scss +816 -0
  97. package/src/scss/_table.scss +4 -4
  98. package/src/scss/adminlte.scss +4 -1
  99. package/src/scss/pages/_login_and_register.scss +1 -1
  100. package/src/ts/accessibility.ts +9 -7
  101. package/src/ts/adminlte.ts +2 -14
  102. package/src/ts/fullscreen.ts +8 -4
  103. package/src/ts/layout.ts +34 -16
  104. package/src/ts/push-menu.ts +257 -104
  105. package/src/ts/util/index.ts +10 -0
  106. package/.claude/settings.local.json +0 -33
  107. package/CLAUDE.md +0 -79
package/dist/index2.html CHANGED
@@ -85,11 +85,18 @@
85
85
  <i class="bi bi-list"></i>
86
86
  </a>
87
87
  </li>
88
+
88
89
  <li class="nav-item d-none d-md-block">
89
- <a href="#" class="nav-link">Home</a>
90
+ <a href="./index.html" class="nav-link">
91
+ <i class="bi bi-grid-1x2 me-1" aria-hidden="true"></i>
92
+ Live preview
93
+ </a>
90
94
  </li>
91
95
  <li class="nav-item d-none d-md-block">
92
- <a href="#" class="nav-link">Contact</a>
96
+ <a href="./docs/introduction.html" class="nav-link">
97
+ <i class="bi bi-book me-1" aria-hidden="true"></i>
98
+ Documentation
99
+ </a>
93
100
  </li>
94
101
  </ul>
95
102
  <!--end::Start Navbar Links-->
@@ -227,11 +234,70 @@
227
234
  <li class="nav-item">
228
235
  <a class="nav-link" href="#" data-lte-toggle="fullscreen">
229
236
  <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>
237
+ <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
231
238
  </a>
232
239
  </li>
233
240
  <!--end::Fullscreen Toggle-->
234
241
 
242
+ <!--begin::Color Mode Toggle (#6010)-->
243
+ <li class="nav-item dropdown">
244
+ <a
245
+ class="nav-link"
246
+ href="#"
247
+ id="bd-theme"
248
+ aria-label="Toggle color scheme"
249
+ data-bs-toggle="dropdown"
250
+ aria-expanded="false"
251
+ >
252
+ <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
253
+ <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
254
+ <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
255
+ </a>
256
+ <ul
257
+ class="dropdown-menu dropdown-menu-end"
258
+ aria-labelledby="bd-theme"
259
+ style="--bs-dropdown-min-width: 8rem"
260
+ >
261
+ <li>
262
+ <button
263
+ type="button"
264
+ class="dropdown-item d-flex align-items-center"
265
+ data-bs-theme-value="light"
266
+ aria-pressed="false"
267
+ >
268
+ <i class="bi bi-sun-fill me-2"></i>
269
+ Light
270
+ <i class="bi bi-check-lg ms-auto d-none"></i>
271
+ </button>
272
+ </li>
273
+ <li>
274
+ <button
275
+ type="button"
276
+ class="dropdown-item d-flex align-items-center"
277
+ data-bs-theme-value="dark"
278
+ aria-pressed="false"
279
+ >
280
+ <i class="bi bi-moon-fill me-2"></i>
281
+ Dark
282
+ <i class="bi bi-check-lg ms-auto d-none"></i>
283
+ </button>
284
+ </li>
285
+ <li>
286
+ <button
287
+ type="button"
288
+ class="dropdown-item d-flex align-items-center active"
289
+ data-bs-theme-value="auto"
290
+ aria-pressed="true"
291
+ >
292
+ <i class="bi bi-circle-half me-2"></i>
293
+ Auto
294
+ <i class="bi bi-check-lg ms-auto d-none"></i>
295
+ </button>
296
+ </li>
297
+ </ul>
298
+ </li>
299
+ <!--end::Color Mode Toggle-->
300
+
235
301
  <!--begin::User Menu Dropdown-->
236
302
  <li class="nav-item dropdown user-menu">
237
303
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
@@ -389,7 +455,7 @@
389
455
  <i class="nav-icon bi bi-clipboard-fill"></i>
390
456
  <p>
391
457
  Layout Options
392
- <span class="nav-badge badge text-bg-secondary me-3">6</span>
458
+ <span class="nav-badge badge text-bg-secondary me-3">7</span>
393
459
  <i class="nav-arrow bi bi-chevron-right"></i>
394
460
  </p>
395
461
  </a>
@@ -442,6 +508,12 @@
442
508
  <p>Sidebar Mini <small>+ Collapsed</small></p>
443
509
  </a>
444
510
  </li>
511
+ <li class="nav-item">
512
+ <a href="./layout/collapsed-sidebar-without-hover.html" class="nav-link">
513
+ <i class="nav-icon bi bi-circle"></i>
514
+ <p>Sidebar Mini <small>+ Collapsed + No Hover</small></p>
515
+ </a>
516
+ </li>
445
517
  <li class="nav-item">
446
518
  <a href="./layout/logo-switch.html" class="nav-link">
447
519
  <i class="nav-icon bi bi-circle"></i>
@@ -485,6 +557,36 @@
485
557
  </li>
486
558
  </ul>
487
559
  </li>
560
+ <li class="nav-item">
561
+ <a href="#" class="nav-link">
562
+ <i class="nav-icon bi bi-envelope"></i>
563
+ <p>
564
+ Mailbox
565
+ <i class="nav-arrow bi bi-chevron-right"></i>
566
+ </p>
567
+ </a>
568
+ <ul class="nav nav-treeview">
569
+ <li class="nav-item">
570
+ <a href="./mailbox/inbox.html" class="nav-link">
571
+ <i class="nav-icon bi bi-circle"></i>
572
+ <p>Inbox</p>
573
+ </a>
574
+ </li>
575
+ <li class="nav-item">
576
+ <a href="./mailbox/read.html" class="nav-link">
577
+ <i class="nav-icon bi bi-circle"></i>
578
+ <p>Read Message</p>
579
+ </a>
580
+ </li>
581
+ <li class="nav-item">
582
+ <a href="./mailbox/compose.html" class="nav-link">
583
+ <i class="nav-icon bi bi-circle"></i>
584
+ <p>Compose</p>
585
+ </a>
586
+ </li>
587
+ </ul>
588
+ </li>
589
+
488
590
  <li class="nav-item">
489
591
  <a href="#" class="nav-link">
490
592
  <i class="nav-icon bi bi-pencil-square"></i>
@@ -495,9 +597,27 @@
495
597
  </a>
496
598
  <ul class="nav nav-treeview">
497
599
  <li class="nav-item">
498
- <a href="./forms/general.html" class="nav-link">
600
+ <a href="./forms/elements.html" class="nav-link">
601
+ <i class="nav-icon bi bi-circle"></i>
602
+ <p>Elements</p>
603
+ </a>
604
+ </li>
605
+ <li class="nav-item">
606
+ <a href="./forms/layout.html" class="nav-link">
607
+ <i class="nav-icon bi bi-circle"></i>
608
+ <p>Layout</p>
609
+ </a>
610
+ </li>
611
+ <li class="nav-item">
612
+ <a href="./forms/validation.html" class="nav-link">
613
+ <i class="nav-icon bi bi-circle"></i>
614
+ <p>Validation</p>
615
+ </a>
616
+ </li>
617
+ <li class="nav-item">
618
+ <a href="./forms/wizard.html" class="nav-link">
499
619
  <i class="nav-icon bi bi-circle"></i>
500
- <p>General Elements</p>
620
+ <p>Wizard</p>
501
621
  </a>
502
622
  </li>
503
623
  </ul>
@@ -517,6 +637,114 @@
517
637
  <p>Simple Tables</p>
518
638
  </a>
519
639
  </li>
640
+ <li class="nav-item">
641
+ <a href="./tables/data.html" class="nav-link">
642
+ <i class="nav-icon bi bi-circle"></i>
643
+ <p>Data Tables</p>
644
+ </a>
645
+ </li>
646
+ </ul>
647
+ </li>
648
+
649
+ <li class="nav-header">PAGES</li>
650
+ <li class="nav-item">
651
+ <a href="#" class="nav-link">
652
+ <i class="nav-icon bi bi-file-earmark-text"></i>
653
+ <p>
654
+ Pages
655
+ <i class="nav-arrow bi bi-chevron-right"></i>
656
+ </p>
657
+ </a>
658
+ <ul class="nav nav-treeview">
659
+ <li class="nav-item">
660
+ <a href="./pages/profile.html" class="nav-link">
661
+ <i class="nav-icon bi bi-circle"></i>
662
+ <p>Profile</p>
663
+ </a>
664
+ </li>
665
+ <li class="nav-item">
666
+ <a href="./pages/settings.html" class="nav-link">
667
+ <i class="nav-icon bi bi-circle"></i>
668
+ <p>Settings</p>
669
+ </a>
670
+ </li>
671
+ <li class="nav-item">
672
+ <a href="./pages/invoice.html" class="nav-link">
673
+ <i class="nav-icon bi bi-circle"></i>
674
+ <p>Invoice</p>
675
+ </a>
676
+ </li>
677
+ <li class="nav-item">
678
+ <a href="./pages/calendar.html" class="nav-link">
679
+ <i class="nav-icon bi bi-circle"></i>
680
+ <p>Calendar</p>
681
+ </a>
682
+ </li>
683
+ <li class="nav-item">
684
+ <a href="./pages/kanban.html" class="nav-link">
685
+ <i class="nav-icon bi bi-circle"></i>
686
+ <p>Kanban</p>
687
+ </a>
688
+ </li>
689
+ <li class="nav-item">
690
+ <a href="./pages/chat.html" class="nav-link">
691
+ <i class="nav-icon bi bi-circle"></i>
692
+ <p>Chat</p>
693
+ </a>
694
+ </li>
695
+ <li class="nav-item">
696
+ <a href="./pages/file-manager.html" class="nav-link">
697
+ <i class="nav-icon bi bi-circle"></i>
698
+ <p>File Manager</p>
699
+ </a>
700
+ </li>
701
+ <li class="nav-item">
702
+ <a href="./pages/projects.html" class="nav-link">
703
+ <i class="nav-icon bi bi-circle"></i>
704
+ <p>Projects</p>
705
+ </a>
706
+ </li>
707
+ <li class="nav-item">
708
+ <a href="./pages/pricing.html" class="nav-link">
709
+ <i class="nav-icon bi bi-circle"></i>
710
+ <p>Pricing</p>
711
+ </a>
712
+ </li>
713
+ <li class="nav-item">
714
+ <a href="./pages/faq.html" class="nav-link">
715
+ <i class="nav-icon bi bi-circle"></i>
716
+ <p>FAQ</p>
717
+ </a>
718
+ </li>
719
+ <li class="nav-item">
720
+ <a href="#" class="nav-link">
721
+ <i class="nav-icon bi bi-circle"></i>
722
+ <p>
723
+ Error
724
+ <i class="nav-arrow bi bi-chevron-right"></i>
725
+ </p>
726
+ </a>
727
+ <ul class="nav nav-treeview">
728
+ <li class="nav-item">
729
+ <a href="./pages/404.html" class="nav-link">
730
+ <i class="nav-icon bi bi-circle"></i>
731
+ <p>404</p>
732
+ </a>
733
+ </li>
734
+ <li class="nav-item">
735
+ <a href="./pages/500.html" class="nav-link">
736
+ <i class="nav-icon bi bi-circle"></i>
737
+ <p>500</p>
738
+ </a>
739
+ </li>
740
+ <li class="nav-item">
741
+ <a href="./pages/maintenance.html" class="nav-link">
742
+ <i class="nav-icon bi bi-circle"></i>
743
+ <p>Maintenance</p>
744
+ </a>
745
+ </li>
746
+ </ul>
747
+ </li>
520
748
  </ul>
521
749
  </li>
522
750
 
@@ -585,90 +813,6 @@
585
813
  </ul>
586
814
  </li>
587
815
 
588
- <li class="nav-header">DOCUMENTATIONS</li>
589
- <li class="nav-item">
590
- <a href="./docs/introduction.html" class="nav-link">
591
- <i class="nav-icon bi bi-download"></i>
592
- <p>Installation</p>
593
- </a>
594
- </li>
595
- <li class="nav-item">
596
- <a href="./docs/layout.html" class="nav-link">
597
- <i class="nav-icon bi bi-grip-horizontal"></i>
598
- <p>Layout</p>
599
- </a>
600
- </li>
601
- <li class="nav-item">
602
- <a href="./docs/color-mode.html" class="nav-link">
603
- <i class="nav-icon bi bi-star-half"></i>
604
- <p>Color Mode</p>
605
- </a>
606
- </li>
607
- <li class="nav-item">
608
- <a href="#" class="nav-link">
609
- <i class="nav-icon bi bi-ui-checks-grid"></i>
610
- <p>
611
- Components
612
- <i class="nav-arrow bi bi-chevron-right"></i>
613
- </p>
614
- </a>
615
- <ul class="nav nav-treeview">
616
- <li class="nav-item">
617
- <a href="./docs/components/main-header.html" class="nav-link">
618
- <i class="nav-icon bi bi-circle"></i>
619
- <p>Main Header</p>
620
- </a>
621
- </li>
622
- <li class="nav-item">
623
- <a href="./docs/components/main-sidebar.html" class="nav-link">
624
- <i class="nav-icon bi bi-circle"></i>
625
- <p>Main Sidebar</p>
626
- </a>
627
- </li>
628
- </ul>
629
- </li>
630
- <li class="nav-item">
631
- <a href="#" class="nav-link">
632
- <i class="nav-icon bi bi-filetype-js"></i>
633
- <p>
634
- Javascript
635
- <i class="nav-arrow bi bi-chevron-right"></i>
636
- </p>
637
- </a>
638
- <ul class="nav nav-treeview">
639
- <li class="nav-item">
640
- <a href="./docs/javascript/treeview.html" class="nav-link">
641
- <i class="nav-icon bi bi-circle"></i>
642
- <p>Treeview</p>
643
- </a>
644
- </li>
645
- </ul>
646
- </li>
647
- <li class="nav-item">
648
- <a href="./docs/browser-support.html" class="nav-link">
649
- <i class="nav-icon bi bi-browser-edge"></i>
650
- <p>Browser Support</p>
651
- </a>
652
- </li>
653
- <li class="nav-item">
654
- <a href="./docs/how-to-contribute.html" class="nav-link">
655
- <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
656
- <p>How To Contribute</p>
657
- </a>
658
- </li>
659
- <li class="nav-item">
660
- <a href="./docs/faq.html" class="nav-link">
661
- <i class="nav-icon bi bi-question-circle-fill"></i>
662
- <p>FAQ</p>
663
- </a>
664
- </li>
665
- <li class="nav-item">
666
- <a href="./docs/license.html" class="nav-link">
667
- <i class="nav-icon bi bi-patch-check-fill"></i>
668
- <p>License</p>
669
- </a>
670
- </li>
671
-
672
816
  <li class="nav-header">MULTI LEVEL EXAMPLE</li>
673
817
  <li class="nav-item">
674
818
  <a href="#" class="nav-link">
@@ -756,6 +900,17 @@
756
900
  </li>
757
901
  </ul>
758
902
  <!--end::Sidebar Menu-->
903
+
904
+ <!-- Docs CTA (bottom of sidebar) -->
905
+ <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
906
+ <a
907
+ href="./docs/introduction.html"
908
+ class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
909
+ >
910
+ <i class="bi bi-book" aria-hidden="true"></i>
911
+ View documentation
912
+ </a>
913
+ </div>
759
914
  </nav>
760
915
  </div>
761
916
  <!--end::Sidebar Wrapper-->
@@ -1809,7 +1964,7 @@
1809
1964
  <!--end::To the end-->
1810
1965
  <!--begin::Copyright-->
1811
1966
  <strong>
1812
- Copyright &copy; 2014-2025&nbsp;
1967
+ Copyright &copy; 2014-2026&nbsp;
1813
1968
  <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
1814
1969
  </strong>
1815
1970
  All rights reserved.
@@ -1865,7 +2020,71 @@
1865
2020
  }
1866
2021
  });
1867
2022
  </script>
1868
- <!--end::OverlayScrollbars Configure-->
2023
+ <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
2024
+ <script>
2025
+ (() => {
2026
+ 'use strict';
2027
+
2028
+ const STORAGE_KEY = 'lte-theme';
2029
+
2030
+ const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
2031
+ const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
2032
+
2033
+ const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
2034
+
2035
+ const getPreferredTheme = () => {
2036
+ const stored = getStoredTheme();
2037
+ if (stored) return stored;
2038
+ return prefersDark() ? 'dark' : 'light';
2039
+ };
2040
+
2041
+ const setTheme = (theme) => {
2042
+ const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
2043
+ document.documentElement.setAttribute('data-bs-theme', resolved);
2044
+ };
2045
+
2046
+ setTheme(getPreferredTheme());
2047
+
2048
+ const showActiveTheme = (theme) => {
2049
+ // Highlight the active dropdown option
2050
+ document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
2051
+ el.classList.remove('active');
2052
+ el.setAttribute('aria-pressed', 'false');
2053
+ const check = el.querySelector('.bi-check-lg');
2054
+ if (check) check.classList.add('d-none');
2055
+ });
2056
+ const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
2057
+ if (active) {
2058
+ active.classList.add('active');
2059
+ active.setAttribute('aria-pressed', 'true');
2060
+ const check = active.querySelector('.bi-check-lg');
2061
+ if (check) check.classList.remove('d-none');
2062
+ }
2063
+ // Sync the topbar trigger icon
2064
+ document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
2065
+ icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
2066
+ });
2067
+ };
2068
+
2069
+ globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
2070
+ const stored = getStoredTheme();
2071
+ if (!stored || stored === 'auto') setTheme(getPreferredTheme());
2072
+ });
2073
+
2074
+ document.addEventListener('DOMContentLoaded', () => {
2075
+ showActiveTheme(getPreferredTheme());
2076
+ document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
2077
+ toggle.addEventListener('click', () => {
2078
+ const theme = toggle.getAttribute('data-bs-theme-value');
2079
+ setStoredTheme(theme);
2080
+ setTheme(theme);
2081
+ showActiveTheme(theme);
2082
+ });
2083
+ });
2084
+ });
2085
+ })();
2086
+ </script>
2087
+ <!--end::Color Mode Toggle-->
1869
2088
 
1870
2089
  <!-- OPTIONAL SCRIPTS -->
1871
2090
 
@@ -2010,6 +2229,9 @@
2010
2229
  series: [700, 500, 400, 600, 300, 100],
2011
2230
  chart: {
2012
2231
  type: 'donut',
2232
+ // Pin an explicit height to avoid an ApexCharts ResizeObserver feedback
2233
+ // loop on browser zoom (most visible on Edge). Fixes #6019.
2234
+ height: 350,
2013
2235
  },
2014
2236
  labels: ['Chrome', 'Edge', 'FireFox', 'Safari', 'Opera', 'IE'],
2015
2237
  dataLabels: {