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.
- package/.browserslistrc +9 -4
- package/ACCESSIBILITY-COMPLIANCE.md +369 -0
- package/CHANGELOG.md +460 -0
- package/README.md +50 -7
- package/dist/{pages/UI → UI}/general.html +79 -28
- package/dist/{pages/UI → UI}/icons.html +76 -25
- package/dist/{pages/UI → UI}/timeline.html +80 -29
- package/dist/css/adminlte.css +516 -332
- package/dist/css/adminlte.css.map +1 -1
- package/dist/css/adminlte.min.css +1 -1
- package/dist/css/adminlte.min.css.map +1 -1
- package/dist/css/adminlte.rtl.css +516 -332
- package/dist/css/adminlte.rtl.css.map +1 -1
- package/dist/css/adminlte.rtl.min.css +1 -1
- package/dist/css/adminlte.rtl.min.css.map +1 -1
- package/dist/{pages/docs → docs}/browser-support.html +77 -44
- package/dist/{pages/docs → docs}/color-mode.html +82 -50
- package/dist/{pages/docs → docs}/components/main-header.html +82 -49
- package/dist/{pages/docs → docs}/components/main-sidebar.html +78 -46
- package/dist/{pages/docs → docs}/faq.html +76 -42
- package/dist/{pages/docs → docs}/how-to-contribute.html +77 -44
- package/dist/{pages/docs → docs}/introduction.html +82 -54
- package/dist/{pages/docs → docs}/javascript/treeview.html +77 -44
- package/dist/{pages/docs → docs}/layout.html +76 -25
- package/dist/{pages/docs → docs}/license.html +76 -42
- package/dist/{pages/examples → examples}/lockscreen.html +49 -18
- package/dist/{pages/examples → examples}/login-v2.html +47 -16
- package/dist/{pages/examples → examples}/login.html +47 -16
- package/dist/{pages/examples → examples}/register-v2.html +47 -16
- package/dist/{pages/examples → examples}/register.html +47 -16
- package/dist/{pages/forms → forms}/general.html +76 -25
- package/dist/{pages/generate → generate}/theme.html +193 -24
- package/dist/{pages/index.html → index.html} +90 -57
- package/dist/{pages/index2.html → index2.html} +99 -48
- package/dist/{pages/index3.html → index3.html} +80 -29
- package/dist/js/adminlte.js +795 -345
- package/dist/js/adminlte.js.map +1 -1
- package/dist/js/adminlte.min.js +3 -3
- package/dist/js/adminlte.min.js.map +1 -1
- package/dist/{pages/layout → layout}/collapsed-sidebar.html +75 -24
- package/dist/layout/fixed-complete.html +883 -0
- package/dist/layout/fixed-footer.html +880 -0
- package/dist/layout/fixed-header.html +880 -0
- package/dist/{pages/layout → layout}/fixed-sidebar.html +76 -25
- package/dist/{pages/layout → layout}/layout-custom-area.html +76 -25
- package/dist/{pages/layout → layout}/layout-rtl.html +76 -25
- package/dist/{pages/layout → layout}/logo-switch.html +55 -24
- package/dist/{pages/layout → layout}/sidebar-mini.html +75 -24
- package/dist/{pages/layout → layout}/unfixed-sidebar.html +76 -25
- package/dist/{pages/tables → tables}/simple.html +76 -25
- package/dist/{pages/widgets → widgets}/cards.html +76 -25
- package/dist/{pages/widgets → widgets}/info-box.html +76 -25
- package/dist/{pages/widgets → widgets}/small-box.html +76 -25
- package/eslint.config.js +82 -0
- package/package.json +42 -37
- package/src/scss/_accessibility.scss +292 -0
- package/src/scss/_app-footer.scss +8 -0
- package/src/scss/_app-header.scss +8 -0
- package/src/scss/_app-sidebar.scss +12 -0
- package/src/scss/_table.scss +1 -9
- package/src/scss/_variables.scss +2 -1
- package/src/scss/adminlte.scss +3 -0
- package/src/ts/accessibility.ts +533 -0
- package/src/ts/adminlte.ts +48 -9
- package/src/ts/card-widget.ts +1 -2
- package/src/ts/push-menu.ts +1 -2
- package/src/ts/treeview.ts +13 -2
- package/src/ts/util/index.ts +39 -7
- package/.astro/content-assets.mjs +0 -1
- package/.astro/content-modules.mjs +0 -1
- package/.astro/content.d.ts +0 -166
- package/.astro/data-store.json +0 -1
- package/.astro/settings.json +0 -5
- package/.astro/types.d.ts +0 -2
- package/adminlte-v4.0.0-beta1-with-dist.zip +0 -0
- package/adminlte-v4.0.0-beta3.zip +0 -0
|
@@ -4,50 +4,60 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
6
|
<title>Layout | 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="Layout | 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.
|
|
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.
|
|
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="
|
|
55
|
+
<link rel="stylesheet" href="../css/adminlte.css" />
|
|
46
56
|
<!--end::Required Plugin(AdminLTE)-->
|
|
47
57
|
</head>
|
|
48
58
|
<!--end::Head-->
|
|
49
59
|
<!--begin::Body-->
|
|
50
|
-
<body class="layout-fixed sidebar-expand-lg bg-body-tertiary">
|
|
60
|
+
<body class="layout-fixed sidebar-expand-lg sidebar-open bg-body-tertiary">
|
|
51
61
|
<!--begin::App Wrapper-->
|
|
52
62
|
<div class="app-wrapper">
|
|
53
63
|
<!--begin::Header-->
|
|
@@ -86,7 +96,7 @@
|
|
|
86
96
|
<div class="d-flex">
|
|
87
97
|
<div class="flex-shrink-0">
|
|
88
98
|
<img
|
|
89
|
-
src="
|
|
99
|
+
src="/assets/img/user1-128x128.jpg"
|
|
90
100
|
alt="User Avatar"
|
|
91
101
|
class="img-size-50 rounded-circle me-3"
|
|
92
102
|
/>
|
|
@@ -112,7 +122,7 @@
|
|
|
112
122
|
<div class="d-flex">
|
|
113
123
|
<div class="flex-shrink-0">
|
|
114
124
|
<img
|
|
115
|
-
src="
|
|
125
|
+
src="/assets/img/user8-128x128.jpg"
|
|
116
126
|
alt="User Avatar"
|
|
117
127
|
class="img-size-50 rounded-circle me-3"
|
|
118
128
|
/>
|
|
@@ -138,7 +148,7 @@
|
|
|
138
148
|
<div class="d-flex">
|
|
139
149
|
<div class="flex-shrink-0">
|
|
140
150
|
<img
|
|
141
|
-
src="
|
|
151
|
+
src="/assets/img/user3-128x128.jpg"
|
|
142
152
|
alt="User Avatar"
|
|
143
153
|
class="img-size-50 rounded-circle me-3"
|
|
144
154
|
/>
|
|
@@ -203,7 +213,7 @@
|
|
|
203
213
|
<li class="nav-item dropdown user-menu">
|
|
204
214
|
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
|
|
205
215
|
<img
|
|
206
|
-
src="
|
|
216
|
+
src="/assets/img/user2-160x160.jpg"
|
|
207
217
|
class="user-image rounded-circle shadow"
|
|
208
218
|
alt="User Image"
|
|
209
219
|
/>
|
|
@@ -213,7 +223,7 @@
|
|
|
213
223
|
<!--begin::User Image-->
|
|
214
224
|
<li class="user-header text-bg-primary">
|
|
215
225
|
<img
|
|
216
|
-
src="
|
|
226
|
+
src="/assets/img/user2-160x160.jpg"
|
|
217
227
|
class="rounded-circle shadow"
|
|
218
228
|
alt="User Image"
|
|
219
229
|
/>
|
|
@@ -257,7 +267,7 @@
|
|
|
257
267
|
<a href="../index.html" class="brand-link">
|
|
258
268
|
<!--begin::Brand Image-->
|
|
259
269
|
<img
|
|
260
|
-
src="
|
|
270
|
+
src="/assets/img/AdminLTELogo.png"
|
|
261
271
|
alt="AdminLTE Logo"
|
|
262
272
|
class="brand-image opacity-75 shadow"
|
|
263
273
|
/>
|
|
@@ -276,8 +286,10 @@
|
|
|
276
286
|
<ul
|
|
277
287
|
class="nav sidebar-menu flex-column"
|
|
278
288
|
data-lte-toggle="treeview"
|
|
279
|
-
role="
|
|
289
|
+
role="navigation"
|
|
290
|
+
aria-label="Main navigation"
|
|
280
291
|
data-accordion="false"
|
|
292
|
+
id="navigation"
|
|
281
293
|
>
|
|
282
294
|
<li class="nav-item">
|
|
283
295
|
<a href="#" class="nav-link">
|
|
@@ -365,6 +377,24 @@
|
|
|
365
377
|
<p>Fixed Sidebar</p>
|
|
366
378
|
</a>
|
|
367
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>
|
|
368
398
|
<li class="nav-item">
|
|
369
399
|
<a href="../layout/layout-custom-area.html" class="nav-link">
|
|
370
400
|
<i class="nav-icon bi bi-circle"></i>
|
|
@@ -781,7 +811,7 @@
|
|
|
781
811
|
<!--end::To the end-->
|
|
782
812
|
<!--begin::Copyright-->
|
|
783
813
|
<strong>
|
|
784
|
-
Copyright © 2014-
|
|
814
|
+
Copyright © 2014-2025
|
|
785
815
|
<a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
|
|
786
816
|
</strong>
|
|
787
817
|
All rights reserved.
|
|
@@ -793,24 +823,21 @@
|
|
|
793
823
|
<!--begin::Script-->
|
|
794
824
|
<!--begin::Third Party Plugin(OverlayScrollbars)-->
|
|
795
825
|
<script
|
|
796
|
-
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.
|
|
797
|
-
integrity="sha256-dghWARbRe2eLlIJ56wNB+b760ywulqK3DzZYEpsg2fQ="
|
|
826
|
+
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
|
|
798
827
|
crossorigin="anonymous"
|
|
799
828
|
></script>
|
|
800
829
|
<!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
|
|
801
830
|
<script
|
|
802
831
|
src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
|
|
803
|
-
integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
|
|
804
832
|
crossorigin="anonymous"
|
|
805
833
|
></script>
|
|
806
834
|
<!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
|
|
807
835
|
<script
|
|
808
|
-
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.
|
|
809
|
-
integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
|
|
836
|
+
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
|
|
810
837
|
crossorigin="anonymous"
|
|
811
838
|
></script>
|
|
812
839
|
<!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
|
|
813
|
-
<script src="
|
|
840
|
+
<script src="../js/adminlte.js"></script>
|
|
814
841
|
<!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
|
|
815
842
|
<script>
|
|
816
843
|
const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
|
|
@@ -821,7 +848,7 @@
|
|
|
821
848
|
};
|
|
822
849
|
document.addEventListener('DOMContentLoaded', function () {
|
|
823
850
|
const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
|
|
824
|
-
if (sidebarWrapper &&
|
|
851
|
+
if (sidebarWrapper && OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined) {
|
|
825
852
|
OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
|
|
826
853
|
scrollbars: {
|
|
827
854
|
theme: Default.scrollbarTheme,
|
|
@@ -832,7 +859,31 @@
|
|
|
832
859
|
}
|
|
833
860
|
});
|
|
834
861
|
</script>
|
|
835
|
-
<!--end::OverlayScrollbars Configure-->
|
|
862
|
+
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
|
|
863
|
+
<script>
|
|
864
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
865
|
+
// Find the link tag for the main AdminLTE CSS file.
|
|
866
|
+
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
|
|
867
|
+
if (!cssLink) {
|
|
868
|
+
return; // Exit if the link isn't found
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
// Extract the base path from the CSS href.
|
|
872
|
+
// e.g., from "../css/adminlte.css", we get "../"
|
|
873
|
+
// e.g., from "./css/adminlte.css", we get "./"
|
|
874
|
+
const cssHref = cssLink.getAttribute('href');
|
|
875
|
+
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
|
|
876
|
+
|
|
877
|
+
// Find all images with absolute paths and fix them.
|
|
878
|
+
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
|
|
879
|
+
const originalSrc = img.getAttribute('src');
|
|
880
|
+
if (originalSrc) {
|
|
881
|
+
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
|
|
882
|
+
img.src = deploymentPath + relativeSrc;
|
|
883
|
+
}
|
|
884
|
+
});
|
|
885
|
+
});
|
|
886
|
+
</script>
|
|
836
887
|
<!--end::Script-->
|
|
837
888
|
</body>
|
|
838
889
|
<!--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>License | 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="License | 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.
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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,7 +785,7 @@
|
|
|
772
785
|
<!--end::To the end-->
|
|
773
786
|
<!--begin::Copyright-->
|
|
774
787
|
<strong>
|
|
775
|
-
Copyright © 2014-
|
|
788
|
+
Copyright © 2014-2025
|
|
776
789
|
<a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
|
|
777
790
|
</strong>
|
|
778
791
|
All rights reserved.
|
|
@@ -784,24 +797,21 @@
|
|
|
784
797
|
<!--begin::Script-->
|
|
785
798
|
<!--begin::Third Party Plugin(OverlayScrollbars)-->
|
|
786
799
|
<script
|
|
787
|
-
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.
|
|
788
|
-
integrity="sha256-dghWARbRe2eLlIJ56wNB+b760ywulqK3DzZYEpsg2fQ="
|
|
800
|
+
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
|
|
789
801
|
crossorigin="anonymous"
|
|
790
802
|
></script>
|
|
791
803
|
<!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
|
|
792
804
|
<script
|
|
793
805
|
src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
|
|
794
|
-
integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
|
|
795
806
|
crossorigin="anonymous"
|
|
796
807
|
></script>
|
|
797
808
|
<!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
|
|
798
809
|
<script
|
|
799
|
-
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.
|
|
800
|
-
integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
|
|
810
|
+
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
|
|
801
811
|
crossorigin="anonymous"
|
|
802
812
|
></script>
|
|
803
813
|
<!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
|
|
804
|
-
<script src="
|
|
814
|
+
<script src="../js/adminlte.js"></script>
|
|
805
815
|
<!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
|
|
806
816
|
<script>
|
|
807
817
|
const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
|
|
@@ -812,7 +822,7 @@
|
|
|
812
822
|
};
|
|
813
823
|
document.addEventListener('DOMContentLoaded', function () {
|
|
814
824
|
const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
|
|
815
|
-
if (sidebarWrapper &&
|
|
825
|
+
if (sidebarWrapper && OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined) {
|
|
816
826
|
OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
|
|
817
827
|
scrollbars: {
|
|
818
828
|
theme: Default.scrollbarTheme,
|
|
@@ -823,7 +833,31 @@
|
|
|
823
833
|
}
|
|
824
834
|
});
|
|
825
835
|
</script>
|
|
826
|
-
<!--end::OverlayScrollbars Configure-->
|
|
836
|
+
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
|
|
837
|
+
<script>
|
|
838
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
839
|
+
// Find the link tag for the main AdminLTE CSS file.
|
|
840
|
+
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
|
|
841
|
+
if (!cssLink) {
|
|
842
|
+
return; // Exit if the link isn't found
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// Extract the base path from the CSS href.
|
|
846
|
+
// e.g., from "../css/adminlte.css", we get "../"
|
|
847
|
+
// e.g., from "./css/adminlte.css", we get "./"
|
|
848
|
+
const cssHref = cssLink.getAttribute('href');
|
|
849
|
+
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
|
|
850
|
+
|
|
851
|
+
// Find all images with absolute paths and fix them.
|
|
852
|
+
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
|
|
853
|
+
const originalSrc = img.getAttribute('src');
|
|
854
|
+
if (originalSrc) {
|
|
855
|
+
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
|
|
856
|
+
img.src = deploymentPath + relativeSrc;
|
|
857
|
+
}
|
|
858
|
+
});
|
|
859
|
+
});
|
|
860
|
+
</script>
|
|
827
861
|
<!--end::Script-->
|
|
828
862
|
</body>
|
|
829
863
|
<!--end::Body-->
|
|
@@ -4,45 +4,55 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
6
|
<title>AdminLTE 4 | Lockscreen</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="AdminLTE 4 | Lockscreen" />
|
|
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.
|
|
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.
|
|
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="
|
|
55
|
+
<link rel="stylesheet" href="../css/adminlte.css" />
|
|
46
56
|
<!--end::Required Plugin(AdminLTE)-->
|
|
47
57
|
</head>
|
|
48
58
|
<!--end::Head-->
|
|
@@ -55,7 +65,7 @@
|
|
|
55
65
|
<div class="lockscreen-name">John Doe</div>
|
|
56
66
|
<div class="lockscreen-item">
|
|
57
67
|
<div class="lockscreen-image">
|
|
58
|
-
<img src="
|
|
68
|
+
<img src="/assets/img/user1-128x128.jpg" alt="User Image" />
|
|
59
69
|
</div>
|
|
60
70
|
<form class="lockscreen-credentials">
|
|
61
71
|
<div class="input-group">
|
|
@@ -73,7 +83,7 @@
|
|
|
73
83
|
<a href="login.html" class="text-decoration-none">Or sign in as a different user</a>
|
|
74
84
|
</div>
|
|
75
85
|
<div class="lockscreen-footer text-center">
|
|
76
|
-
Copyright © 2014-
|
|
86
|
+
Copyright © 2014-2025
|
|
77
87
|
<b
|
|
78
88
|
><a
|
|
79
89
|
href="https://adminlte.io"
|
|
@@ -87,24 +97,21 @@
|
|
|
87
97
|
</div>
|
|
88
98
|
<!--begin::Third Party Plugin(OverlayScrollbars)-->
|
|
89
99
|
<script
|
|
90
|
-
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.
|
|
91
|
-
integrity="sha256-dghWARbRe2eLlIJ56wNB+b760ywulqK3DzZYEpsg2fQ="
|
|
100
|
+
src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
|
|
92
101
|
crossorigin="anonymous"
|
|
93
102
|
></script>
|
|
94
103
|
<!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
|
|
95
104
|
<script
|
|
96
105
|
src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
|
|
97
|
-
integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
|
|
98
106
|
crossorigin="anonymous"
|
|
99
107
|
></script>
|
|
100
108
|
<!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
|
|
101
109
|
<script
|
|
102
|
-
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.
|
|
103
|
-
integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
|
|
110
|
+
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
|
|
104
111
|
crossorigin="anonymous"
|
|
105
112
|
></script>
|
|
106
113
|
<!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
|
|
107
|
-
<script src="
|
|
114
|
+
<script src="../js/adminlte.js"></script>
|
|
108
115
|
<!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
|
|
109
116
|
<script>
|
|
110
117
|
const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
|
|
@@ -115,7 +122,7 @@
|
|
|
115
122
|
};
|
|
116
123
|
document.addEventListener('DOMContentLoaded', function () {
|
|
117
124
|
const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
|
|
118
|
-
if (sidebarWrapper &&
|
|
125
|
+
if (sidebarWrapper && OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined) {
|
|
119
126
|
OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
|
|
120
127
|
scrollbars: {
|
|
121
128
|
theme: Default.scrollbarTheme,
|
|
@@ -126,7 +133,31 @@
|
|
|
126
133
|
}
|
|
127
134
|
});
|
|
128
135
|
</script>
|
|
129
|
-
<!--end::OverlayScrollbars Configure-->
|
|
136
|
+
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
|
|
137
|
+
<script>
|
|
138
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
139
|
+
// Find the link tag for the main AdminLTE CSS file.
|
|
140
|
+
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
|
|
141
|
+
if (!cssLink) {
|
|
142
|
+
return; // Exit if the link isn't found
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Extract the base path from the CSS href.
|
|
146
|
+
// e.g., from "../css/adminlte.css", we get "../"
|
|
147
|
+
// e.g., from "./css/adminlte.css", we get "./"
|
|
148
|
+
const cssHref = cssLink.getAttribute('href');
|
|
149
|
+
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
|
|
150
|
+
|
|
151
|
+
// Find all images with absolute paths and fix them.
|
|
152
|
+
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
|
|
153
|
+
const originalSrc = img.getAttribute('src');
|
|
154
|
+
if (originalSrc) {
|
|
155
|
+
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
|
|
156
|
+
img.src = deploymentPath + relativeSrc;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
</script>
|
|
130
161
|
</body>
|
|
131
162
|
<!--end::Body-->
|
|
132
163
|
</html>
|