admin-lte 4.0.0-beta3 → 4.0.0-rc3

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 (76) hide show
  1. package/.browserslistrc +9 -4
  2. package/ACCESSIBILITY-COMPLIANCE.md +369 -0
  3. package/CHANGELOG.md +460 -0
  4. package/README.md +50 -7
  5. package/dist/{pages/UI → UI}/general.html +79 -28
  6. package/dist/{pages/UI → UI}/icons.html +76 -25
  7. package/dist/{pages/UI → UI}/timeline.html +80 -29
  8. package/dist/css/adminlte.css +516 -332
  9. package/dist/css/adminlte.css.map +1 -1
  10. package/dist/css/adminlte.min.css +1 -1
  11. package/dist/css/adminlte.min.css.map +1 -1
  12. package/dist/css/adminlte.rtl.css +516 -332
  13. package/dist/css/adminlte.rtl.css.map +1 -1
  14. package/dist/css/adminlte.rtl.min.css +1 -1
  15. package/dist/css/adminlte.rtl.min.css.map +1 -1
  16. package/dist/{pages/docs → docs}/browser-support.html +77 -44
  17. package/dist/{pages/docs → docs}/color-mode.html +82 -50
  18. package/dist/{pages/docs → docs}/components/main-header.html +82 -49
  19. package/dist/{pages/docs → docs}/components/main-sidebar.html +78 -46
  20. package/dist/{pages/docs → docs}/faq.html +76 -42
  21. package/dist/{pages/docs → docs}/how-to-contribute.html +77 -44
  22. package/dist/{pages/docs → docs}/introduction.html +82 -54
  23. package/dist/{pages/docs → docs}/javascript/treeview.html +77 -44
  24. package/dist/{pages/docs → docs}/layout.html +76 -25
  25. package/dist/{pages/docs → docs}/license.html +76 -42
  26. package/dist/{pages/examples → examples}/lockscreen.html +49 -18
  27. package/dist/{pages/examples → examples}/login-v2.html +47 -16
  28. package/dist/{pages/examples → examples}/login.html +47 -16
  29. package/dist/{pages/examples → examples}/register-v2.html +47 -16
  30. package/dist/{pages/examples → examples}/register.html +47 -16
  31. package/dist/{pages/forms → forms}/general.html +76 -25
  32. package/dist/{pages/generate → generate}/theme.html +193 -24
  33. package/dist/{pages/index.html → index.html} +90 -57
  34. package/dist/{pages/index2.html → index2.html} +99 -48
  35. package/dist/{pages/index3.html → index3.html} +80 -29
  36. package/dist/js/adminlte.js +795 -345
  37. package/dist/js/adminlte.js.map +1 -1
  38. package/dist/js/adminlte.min.js +3 -3
  39. package/dist/js/adminlte.min.js.map +1 -1
  40. package/dist/{pages/layout → layout}/collapsed-sidebar.html +75 -24
  41. package/dist/layout/fixed-complete.html +883 -0
  42. package/dist/layout/fixed-footer.html +880 -0
  43. package/dist/layout/fixed-header.html +880 -0
  44. package/dist/{pages/layout → layout}/fixed-sidebar.html +76 -25
  45. package/dist/{pages/layout → layout}/layout-custom-area.html +76 -25
  46. package/dist/{pages/layout → layout}/layout-rtl.html +76 -25
  47. package/dist/{pages/layout → layout}/logo-switch.html +55 -24
  48. package/dist/{pages/layout → layout}/sidebar-mini.html +75 -24
  49. package/dist/{pages/layout → layout}/unfixed-sidebar.html +76 -25
  50. package/dist/{pages/tables → tables}/simple.html +76 -25
  51. package/dist/{pages/widgets → widgets}/cards.html +76 -25
  52. package/dist/{pages/widgets → widgets}/info-box.html +76 -25
  53. package/dist/{pages/widgets → widgets}/small-box.html +76 -25
  54. package/eslint.config.js +82 -0
  55. package/package.json +42 -37
  56. package/src/scss/_accessibility.scss +292 -0
  57. package/src/scss/_app-footer.scss +8 -0
  58. package/src/scss/_app-header.scss +8 -0
  59. package/src/scss/_app-sidebar.scss +12 -0
  60. package/src/scss/_table.scss +1 -9
  61. package/src/scss/_variables.scss +2 -1
  62. package/src/scss/adminlte.scss +3 -0
  63. package/src/ts/accessibility.ts +533 -0
  64. package/src/ts/adminlte.ts +48 -9
  65. package/src/ts/card-widget.ts +1 -2
  66. package/src/ts/push-menu.ts +1 -2
  67. package/src/ts/treeview.ts +13 -2
  68. package/src/ts/util/index.ts +39 -7
  69. package/.astro/content-assets.mjs +0 -1
  70. package/.astro/content-modules.mjs +0 -1
  71. package/.astro/content.d.ts +0 -166
  72. package/.astro/data-store.json +0 -1
  73. package/.astro/settings.json +0 -5
  74. package/.astro/types.d.ts +0 -2
  75. package/adminlte-v4.0.0-beta1-with-dist.zip +0 -0
  76. package/adminlte-v4.0.0-beta3.zip +0 -0
@@ -4,67 +4,60 @@
4
4
  <head>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>Introduction | AdminLTE 4</title>
7
+ <!--begin::Accessibility Meta Tags-->
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
9
+ <meta name="color-scheme" content="light dark" />
10
+ <meta name="theme-color" content="#007bff" media="(prefers-color-scheme: light)" />
11
+ <meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)" />
12
+ <!--end::Accessibility Meta Tags-->
7
13
  <!--begin::Primary Meta Tags-->
8
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
14
  <meta name="title" content="Introduction | AdminLTE 4" />
10
15
  <meta name="author" content="ColorlibHQ" />
11
16
  <meta
12
17
  name="description"
13
- content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS."
18
+ content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS. Fully accessible with WCAG 2.1 AA compliance."
14
19
  />
15
20
  <meta
16
21
  name="keywords"
17
- content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard"
22
+ content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard, accessible admin panel, WCAG compliant"
18
23
  />
19
24
  <!--end::Primary Meta Tags-->
25
+ <!--begin::Accessibility Features-->
26
+ <!-- Skip links will be dynamically added by accessibility.js -->
27
+ <meta name="supported-color-schemes" content="light dark" />
28
+ <link rel="preload" href="../css/adminlte.css" as="style" />
29
+ <!--end::Accessibility Features-->
20
30
  <!--begin::Fonts-->
21
31
  <link
22
32
  rel="stylesheet"
23
33
  href="https://cdn.jsdelivr.net/npm/@fontsource/source-sans-3@5.0.12/index.css"
24
34
  integrity="sha256-tXJfXfp6Ewt1ilPzLDtQnJV4hclT9XuaZUKyUvmyr+Q="
25
35
  crossorigin="anonymous"
36
+ media="print"
37
+ onload="this.media='all'"
26
38
  />
27
39
  <!--end::Fonts-->
28
40
  <!--begin::Third Party Plugin(OverlayScrollbars)-->
29
41
  <link
30
42
  rel="stylesheet"
31
- href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.10.1/styles/overlayscrollbars.min.css"
32
- integrity="sha256-tZHrRjVqNSRyWg2wbppGnT833E/Ys0DHWGwT04GiqQg="
43
+ href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css"
33
44
  crossorigin="anonymous"
34
45
  />
35
46
  <!--end::Third Party Plugin(OverlayScrollbars)-->
36
47
  <!--begin::Third Party Plugin(Bootstrap Icons)-->
37
48
  <link
38
49
  rel="stylesheet"
39
- href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
40
- integrity="sha256-9kPW/n5nn53j4WMRYAxe9c1rCY96Oogo/MKSVdKzPmI="
50
+ href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css"
41
51
  crossorigin="anonymous"
42
52
  />
43
53
  <!--end::Third Party Plugin(Bootstrap Icons)-->
44
54
  <!--begin::Required Plugin(AdminLTE)-->
45
- <link rel="stylesheet" href="../../../dist/css/adminlte.css" />
55
+ <link rel="stylesheet" href="../css/adminlte.css" />
46
56
  <!--end::Required Plugin(AdminLTE)-->
47
- <style>
48
- [data-astro-image] {
49
- width: 100%;
50
- height: auto;
51
- object-fit: var(--fit);
52
- object-position: var(--pos);
53
- aspect-ratio: var(--w) / var(--h);
54
- }
55
- [data-astro-image='responsive'] {
56
- max-width: calc(var(--w) * 1px);
57
- max-height: calc(var(--h) * 1px);
58
- }
59
- [data-astro-image='fixed'] {
60
- width: calc(var(--w) * 1px);
61
- height: calc(var(--h) * 1px);
62
- }
63
- </style>
64
57
  </head>
65
58
  <!--end::Head-->
66
59
  <!--begin::Body-->
67
- <body class="layout-fixed sidebar-expand-lg bg-body-tertiary">
60
+ <body class="layout-fixed sidebar-expand-lg sidebar-open bg-body-tertiary">
68
61
  <!--begin::App Wrapper-->
69
62
  <div class="app-wrapper">
70
63
  <!--begin::Header-->
@@ -103,7 +96,7 @@
103
96
  <div class="d-flex">
104
97
  <div class="flex-shrink-0">
105
98
  <img
106
- src="../../../dist/assets/img/user1-128x128.jpg"
99
+ src="/assets/img/user1-128x128.jpg"
107
100
  alt="User Avatar"
108
101
  class="img-size-50 rounded-circle me-3"
109
102
  />
@@ -129,7 +122,7 @@
129
122
  <div class="d-flex">
130
123
  <div class="flex-shrink-0">
131
124
  <img
132
- src="../../../dist/assets/img/user8-128x128.jpg"
125
+ src="/assets/img/user8-128x128.jpg"
133
126
  alt="User Avatar"
134
127
  class="img-size-50 rounded-circle me-3"
135
128
  />
@@ -155,7 +148,7 @@
155
148
  <div class="d-flex">
156
149
  <div class="flex-shrink-0">
157
150
  <img
158
- src="../../../dist/assets/img/user3-128x128.jpg"
151
+ src="/assets/img/user3-128x128.jpg"
159
152
  alt="User Avatar"
160
153
  class="img-size-50 rounded-circle me-3"
161
154
  />
@@ -220,7 +213,7 @@
220
213
  <li class="nav-item dropdown user-menu">
221
214
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
222
215
  <img
223
- src="../../../dist/assets/img/user2-160x160.jpg"
216
+ src="/assets/img/user2-160x160.jpg"
224
217
  class="user-image rounded-circle shadow"
225
218
  alt="User Image"
226
219
  />
@@ -230,7 +223,7 @@
230
223
  <!--begin::User Image-->
231
224
  <li class="user-header text-bg-primary">
232
225
  <img
233
- src="../../../dist/assets/img/user2-160x160.jpg"
226
+ src="/assets/img/user2-160x160.jpg"
234
227
  class="rounded-circle shadow"
235
228
  alt="User Image"
236
229
  />
@@ -274,7 +267,7 @@
274
267
  <a href="../index.html" class="brand-link">
275
268
  <!--begin::Brand Image-->
276
269
  <img
277
- src="../../../dist/assets/img/AdminLTELogo.png"
270
+ src="/assets/img/AdminLTELogo.png"
278
271
  alt="AdminLTE Logo"
279
272
  class="brand-image opacity-75 shadow"
280
273
  />
@@ -293,8 +286,10 @@
293
286
  <ul
294
287
  class="nav sidebar-menu flex-column"
295
288
  data-lte-toggle="treeview"
296
- role="menu"
289
+ role="navigation"
290
+ aria-label="Main navigation"
297
291
  data-accordion="false"
292
+ id="navigation"
298
293
  >
299
294
  <li class="nav-item">
300
295
  <a href="#" class="nav-link">
@@ -382,6 +377,24 @@
382
377
  <p>Fixed Sidebar</p>
383
378
  </a>
384
379
  </li>
380
+ <li class="nav-item">
381
+ <a href="../layout/fixed-header.html" class="nav-link">
382
+ <i class="nav-icon bi bi-circle"></i>
383
+ <p>Fixed Header</p>
384
+ </a>
385
+ </li>
386
+ <li class="nav-item">
387
+ <a href="../layout/fixed-footer.html" class="nav-link">
388
+ <i class="nav-icon bi bi-circle"></i>
389
+ <p>Fixed Footer</p>
390
+ </a>
391
+ </li>
392
+ <li class="nav-item">
393
+ <a href="../layout/fixed-complete.html" class="nav-link">
394
+ <i class="nav-icon bi bi-circle"></i>
395
+ <p>Fixed Complete</p>
396
+ </a>
397
+ </li>
385
398
  <li class="nav-item">
386
399
  <a href="../layout/layout-custom-area.html" class="nav-link">
387
400
  <i class="nav-icon bi bi-circle"></i>
@@ -772,8 +785,7 @@
772
785
  ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">script</span></span>
773
786
  <span class="line"><span style="color:#9CDCFE"> src</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/js/adminlte.min.js&quot;</span></span>
774
787
  <span class="line"><span style="color:#9CDCFE"> crossorigin</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;anonymous&quot;</span></span>
775
- <span class="line"><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">script</span><span style="color:#808080">&gt;</span></span>
776
- <span class="line"></span></code></pre>
788
+ <span class="line"><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">script</span><span style="color:#808080">&gt;</span></span></code></pre>
777
789
  <pre
778
790
  class="astro-code dark-plus"
779
791
  style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
@@ -783,8 +795,7 @@
783
795
  <span class="line"><span style="color:#9CDCFE"> rel</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;stylesheet&quot;</span></span>
784
796
  <span class="line"><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/css/adminlte.min.css&quot;</span></span>
785
797
  <span class="line"><span style="color:#9CDCFE"> crossorigin</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;anonymous&quot;</span></span>
786
- <span class="line"><span style="color:#808080">/&gt;</span></span>
787
- <span class="line"></span></code></pre>
798
+ <span class="line"><span style="color:#808080">/&gt;</span></span></code></pre>
788
799
  <h3 id="using-the-command-line">Using The Command Line:</h3>
789
800
  <p>
790
801
  <em
@@ -798,32 +809,28 @@
798
809
  style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
799
810
  tabindex="0"
800
811
  data-language="bash"
801
- ><code><span class="line"><span style="color:#DCDCAA">npm</span><span style="color:#CE9178"> install</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span><span style="color:#569CD6"> --save</span></span>
802
- <span class="line"></span></code></pre>
812
+ ><code><span class="line"><span style="color:#DCDCAA">npm</span><span style="color:#CE9178"> install</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span><span style="color:#569CD6"> --save</span></span></code></pre>
803
813
  <h4 id="via-yarn">Via Yarn</h4>
804
814
  <pre
805
815
  class="astro-code dark-plus"
806
816
  style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
807
817
  tabindex="0"
808
818
  data-language="bash"
809
- ><code><span class="line"><span style="color:#DCDCAA">yarn</span><span style="color:#CE9178"> add</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span></span>
810
- <span class="line"></span></code></pre>
819
+ ><code><span class="line"><span style="color:#DCDCAA">yarn</span><span style="color:#CE9178"> add</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span></span></code></pre>
811
820
  <h4 id="via-composer">Via Composer</h4>
812
821
  <pre
813
822
  class="astro-code dark-plus"
814
823
  style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
815
824
  tabindex="0"
816
825
  data-language="bash"
817
- ><code><span class="line"><span style="color:#DCDCAA">composer</span><span style="color:#CE9178"> require</span><span style="color:#CE9178"> &quot;almasaeed2010/adminlte=4.0.0-beta3&quot;</span></span>
818
- <span class="line"></span></code></pre>
826
+ ><code><span class="line"><span style="color:#DCDCAA">composer</span><span style="color:#CE9178"> require</span><span style="color:#CE9178"> &quot;almasaeed2010/adminlte=4.0.0-beta3&quot;</span></span></code></pre>
819
827
  <h4 id="via-git">Via Git</h4>
820
828
  <pre
821
829
  class="astro-code dark-plus"
822
830
  style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
823
831
  tabindex="0"
824
832
  data-language="bash"
825
- ><code><span class="line"><span style="color:#DCDCAA">git</span><span style="color:#CE9178"> clone</span><span style="color:#CE9178"> https://github.com/ColorlibHQ/AdminLTE.git</span></span>
826
- <span class="line"></span></code></pre>
833
+ ><code><span class="line"><span style="color:#DCDCAA">git</span><span style="color:#CE9178"> clone</span><span style="color:#CE9178"> https://github.com/ColorlibHQ/AdminLTE.git</span></span></code></pre>
827
834
  </div>
828
835
  <!--end::Container-->
829
836
  </div>
@@ -837,7 +844,7 @@
837
844
  <!--end::To the end-->
838
845
  <!--begin::Copyright-->
839
846
  <strong>
840
- Copyright &copy; 2014-2024&nbsp;
847
+ Copyright &copy; 2014-2025&nbsp;
841
848
  <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
842
849
  </strong>
843
850
  All rights reserved.
@@ -849,24 +856,21 @@
849
856
  <!--begin::Script-->
850
857
  <!--begin::Third Party Plugin(OverlayScrollbars)-->
851
858
  <script
852
- src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.10.1/browser/overlayscrollbars.browser.es6.min.js"
853
- integrity="sha256-dghWARbRe2eLlIJ56wNB+b760ywulqK3DzZYEpsg2fQ="
859
+ src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
854
860
  crossorigin="anonymous"
855
861
  ></script>
856
862
  <!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
857
863
  <script
858
864
  src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
859
- integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
860
865
  crossorigin="anonymous"
861
866
  ></script>
862
867
  <!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
863
868
  <script
864
- src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js"
865
- integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
869
+ src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
866
870
  crossorigin="anonymous"
867
871
  ></script>
868
872
  <!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
869
- <script src="../../../dist/js/adminlte.js"></script>
873
+ <script src="../js/adminlte.js"></script>
870
874
  <!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
871
875
  <script>
872
876
  const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
@@ -877,7 +881,7 @@
877
881
  };
878
882
  document.addEventListener('DOMContentLoaded', function () {
879
883
  const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
880
- if (sidebarWrapper && typeof OverlayScrollbarsGlobal?.OverlayScrollbars !== 'undefined') {
884
+ if (sidebarWrapper && OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined) {
881
885
  OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
882
886
  scrollbars: {
883
887
  theme: Default.scrollbarTheme,
@@ -888,7 +892,31 @@
888
892
  }
889
893
  });
890
894
  </script>
891
- <!--end::OverlayScrollbars Configure-->
895
+ <!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
896
+ <script>
897
+ document.addEventListener('DOMContentLoaded', () => {
898
+ // Find the link tag for the main AdminLTE CSS file.
899
+ const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
900
+ if (!cssLink) {
901
+ return; // Exit if the link isn't found
902
+ }
903
+
904
+ // Extract the base path from the CSS href.
905
+ // e.g., from "../css/adminlte.css", we get "../"
906
+ // e.g., from "./css/adminlte.css", we get "./"
907
+ const cssHref = cssLink.getAttribute('href');
908
+ const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
909
+
910
+ // Find all images with absolute paths and fix them.
911
+ document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
912
+ const originalSrc = img.getAttribute('src');
913
+ if (originalSrc) {
914
+ const relativeSrc = originalSrc.slice(1); // Remove leading '/'
915
+ img.src = deploymentPath + relativeSrc;
916
+ }
917
+ });
918
+ });
919
+ </script>
892
920
  <!--end::Script-->
893
921
  </body>
894
922
  <!--end::Body-->
@@ -4,67 +4,60 @@
4
4
  <head>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <title>Treeview Plugin | AdminLTE 4</title>
7
+ <!--begin::Accessibility Meta Tags-->
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
9
+ <meta name="color-scheme" content="light dark" />
10
+ <meta name="theme-color" content="#007bff" media="(prefers-color-scheme: light)" />
11
+ <meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)" />
12
+ <!--end::Accessibility Meta Tags-->
7
13
  <!--begin::Primary Meta Tags-->
8
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
14
  <meta name="title" content="Treeview Plugin | AdminLTE 4" />
10
15
  <meta name="author" content="ColorlibHQ" />
11
16
  <meta
12
17
  name="description"
13
- content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS."
18
+ content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS. Fully accessible with WCAG 2.1 AA compliance."
14
19
  />
15
20
  <meta
16
21
  name="keywords"
17
- content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard"
22
+ content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard, accessible admin panel, WCAG compliant"
18
23
  />
19
24
  <!--end::Primary Meta Tags-->
25
+ <!--begin::Accessibility Features-->
26
+ <!-- Skip links will be dynamically added by accessibility.js -->
27
+ <meta name="supported-color-schemes" content="light dark" />
28
+ <link rel="preload" href="../../css/adminlte.css" as="style" />
29
+ <!--end::Accessibility Features-->
20
30
  <!--begin::Fonts-->
21
31
  <link
22
32
  rel="stylesheet"
23
33
  href="https://cdn.jsdelivr.net/npm/@fontsource/source-sans-3@5.0.12/index.css"
24
34
  integrity="sha256-tXJfXfp6Ewt1ilPzLDtQnJV4hclT9XuaZUKyUvmyr+Q="
25
35
  crossorigin="anonymous"
36
+ media="print"
37
+ onload="this.media='all'"
26
38
  />
27
39
  <!--end::Fonts-->
28
40
  <!--begin::Third Party Plugin(OverlayScrollbars)-->
29
41
  <link
30
42
  rel="stylesheet"
31
- href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.10.1/styles/overlayscrollbars.min.css"
32
- integrity="sha256-tZHrRjVqNSRyWg2wbppGnT833E/Ys0DHWGwT04GiqQg="
43
+ href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css"
33
44
  crossorigin="anonymous"
34
45
  />
35
46
  <!--end::Third Party Plugin(OverlayScrollbars)-->
36
47
  <!--begin::Third Party Plugin(Bootstrap Icons)-->
37
48
  <link
38
49
  rel="stylesheet"
39
- href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
40
- integrity="sha256-9kPW/n5nn53j4WMRYAxe9c1rCY96Oogo/MKSVdKzPmI="
50
+ href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css"
41
51
  crossorigin="anonymous"
42
52
  />
43
53
  <!--end::Third Party Plugin(Bootstrap Icons)-->
44
54
  <!--begin::Required Plugin(AdminLTE)-->
45
- <link rel="stylesheet" href="../../../../dist/css/adminlte.css" />
55
+ <link rel="stylesheet" href="../../css/adminlte.css" />
46
56
  <!--end::Required Plugin(AdminLTE)-->
47
- <style>
48
- [data-astro-image] {
49
- width: 100%;
50
- height: auto;
51
- object-fit: var(--fit);
52
- object-position: var(--pos);
53
- aspect-ratio: var(--w) / var(--h);
54
- }
55
- [data-astro-image='responsive'] {
56
- max-width: calc(var(--w) * 1px);
57
- max-height: calc(var(--h) * 1px);
58
- }
59
- [data-astro-image='fixed'] {
60
- width: calc(var(--w) * 1px);
61
- height: calc(var(--h) * 1px);
62
- }
63
- </style>
64
57
  </head>
65
58
  <!--end::Head-->
66
59
  <!--begin::Body-->
67
- <body class="layout-fixed sidebar-expand-lg bg-body-tertiary">
60
+ <body class="layout-fixed sidebar-expand-lg sidebar-open bg-body-tertiary">
68
61
  <!--begin::App Wrapper-->
69
62
  <div class="app-wrapper">
70
63
  <!--begin::Header-->
@@ -103,7 +96,7 @@
103
96
  <div class="d-flex">
104
97
  <div class="flex-shrink-0">
105
98
  <img
106
- src="../../../../dist/assets/img/user1-128x128.jpg"
99
+ src="/assets/img/user1-128x128.jpg"
107
100
  alt="User Avatar"
108
101
  class="img-size-50 rounded-circle me-3"
109
102
  />
@@ -129,7 +122,7 @@
129
122
  <div class="d-flex">
130
123
  <div class="flex-shrink-0">
131
124
  <img
132
- src="../../../../dist/assets/img/user8-128x128.jpg"
125
+ src="/assets/img/user8-128x128.jpg"
133
126
  alt="User Avatar"
134
127
  class="img-size-50 rounded-circle me-3"
135
128
  />
@@ -155,7 +148,7 @@
155
148
  <div class="d-flex">
156
149
  <div class="flex-shrink-0">
157
150
  <img
158
- src="../../../../dist/assets/img/user3-128x128.jpg"
151
+ src="/assets/img/user3-128x128.jpg"
159
152
  alt="User Avatar"
160
153
  class="img-size-50 rounded-circle me-3"
161
154
  />
@@ -220,7 +213,7 @@
220
213
  <li class="nav-item dropdown user-menu">
221
214
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
222
215
  <img
223
- src="../../../../dist/assets/img/user2-160x160.jpg"
216
+ src="/assets/img/user2-160x160.jpg"
224
217
  class="user-image rounded-circle shadow"
225
218
  alt="User Image"
226
219
  />
@@ -230,7 +223,7 @@
230
223
  <!--begin::User Image-->
231
224
  <li class="user-header text-bg-primary">
232
225
  <img
233
- src="../../../../dist/assets/img/user2-160x160.jpg"
226
+ src="/assets/img/user2-160x160.jpg"
234
227
  class="rounded-circle shadow"
235
228
  alt="User Image"
236
229
  />
@@ -274,7 +267,7 @@
274
267
  <a href="../../index.html" class="brand-link">
275
268
  <!--begin::Brand Image-->
276
269
  <img
277
- src="../../../../dist/assets/img/AdminLTELogo.png"
270
+ src="/assets/img/AdminLTELogo.png"
278
271
  alt="AdminLTE Logo"
279
272
  class="brand-image opacity-75 shadow"
280
273
  />
@@ -293,8 +286,10 @@
293
286
  <ul
294
287
  class="nav sidebar-menu flex-column"
295
288
  data-lte-toggle="treeview"
296
- role="menu"
289
+ role="navigation"
290
+ aria-label="Main navigation"
297
291
  data-accordion="false"
292
+ id="navigation"
298
293
  >
299
294
  <li class="nav-item">
300
295
  <a href="#" class="nav-link">
@@ -382,6 +377,24 @@
382
377
  <p>Fixed Sidebar</p>
383
378
  </a>
384
379
  </li>
380
+ <li class="nav-item">
381
+ <a href="../../layout/fixed-header.html" class="nav-link">
382
+ <i class="nav-icon bi bi-circle"></i>
383
+ <p>Fixed Header</p>
384
+ </a>
385
+ </li>
386
+ <li class="nav-item">
387
+ <a href="../../layout/fixed-footer.html" class="nav-link">
388
+ <i class="nav-icon bi bi-circle"></i>
389
+ <p>Fixed Footer</p>
390
+ </a>
391
+ </li>
392
+ <li class="nav-item">
393
+ <a href="../../layout/fixed-complete.html" class="nav-link">
394
+ <i class="nav-icon bi bi-circle"></i>
395
+ <p>Fixed Complete</p>
396
+ </a>
397
+ </li>
385
398
  <li class="nav-item">
386
399
  <a href="../../layout/layout-custom-area.html" class="nav-link">
387
400
  <i class="nav-icon bi bi-circle"></i>
@@ -764,8 +777,7 @@
764
777
  <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Level 2</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
765
778
  <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span>
766
779
  <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
767
- <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span>
768
- <span class="line"></span></code></pre>
780
+ <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span></code></pre>
769
781
  <h5 id="example">Example</h5>
770
782
  <ul data-lte-toggle="treeview">
771
783
  <li><a href="#">One Level</a></li>
@@ -789,7 +801,7 @@
789
801
  <!--end::To the end-->
790
802
  <!--begin::Copyright-->
791
803
  <strong>
792
- Copyright &copy; 2014-2024&nbsp;
804
+ Copyright &copy; 2014-2025&nbsp;
793
805
  <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
794
806
  </strong>
795
807
  All rights reserved.
@@ -801,24 +813,21 @@
801
813
  <!--begin::Script-->
802
814
  <!--begin::Third Party Plugin(OverlayScrollbars)-->
803
815
  <script
804
- src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.10.1/browser/overlayscrollbars.browser.es6.min.js"
805
- integrity="sha256-dghWARbRe2eLlIJ56wNB+b760ywulqK3DzZYEpsg2fQ="
816
+ src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
806
817
  crossorigin="anonymous"
807
818
  ></script>
808
819
  <!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
809
820
  <script
810
821
  src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
811
- integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
812
822
  crossorigin="anonymous"
813
823
  ></script>
814
824
  <!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
815
825
  <script
816
- src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js"
817
- integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
826
+ src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
818
827
  crossorigin="anonymous"
819
828
  ></script>
820
829
  <!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
821
- <script src="../../../../dist/js/adminlte.js"></script>
830
+ <script src="../../js/adminlte.js"></script>
822
831
  <!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
823
832
  <script>
824
833
  const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
@@ -829,7 +838,7 @@
829
838
  };
830
839
  document.addEventListener('DOMContentLoaded', function () {
831
840
  const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
832
- if (sidebarWrapper && typeof OverlayScrollbarsGlobal?.OverlayScrollbars !== 'undefined') {
841
+ if (sidebarWrapper && OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined) {
833
842
  OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
834
843
  scrollbars: {
835
844
  theme: Default.scrollbarTheme,
@@ -840,7 +849,31 @@
840
849
  }
841
850
  });
842
851
  </script>
843
- <!--end::OverlayScrollbars Configure-->
852
+ <!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
853
+ <script>
854
+ document.addEventListener('DOMContentLoaded', () => {
855
+ // Find the link tag for the main AdminLTE CSS file.
856
+ const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
857
+ if (!cssLink) {
858
+ return; // Exit if the link isn't found
859
+ }
860
+
861
+ // Extract the base path from the CSS href.
862
+ // e.g., from "../css/adminlte.css", we get "../"
863
+ // e.g., from "./css/adminlte.css", we get "./"
864
+ const cssHref = cssLink.getAttribute('href');
865
+ const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
866
+
867
+ // Find all images with absolute paths and fix them.
868
+ document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
869
+ const originalSrc = img.getAttribute('src');
870
+ if (originalSrc) {
871
+ const relativeSrc = originalSrc.slice(1); // Remove leading '/'
872
+ img.src = deploymentPath + relativeSrc;
873
+ }
874
+ });
875
+ });
876
+ </script>
844
877
  <!--end::Script-->
845
878
  </body>
846
879
  <!--end::Body-->