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
package/package.json
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "admin-lte",
|
|
3
3
|
"description": "Responsive open source admin dashboard and control panel.",
|
|
4
|
-
"version": "4.0.0-
|
|
4
|
+
"version": "4.0.0-rc3",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"author": "Colorlib <https://colorlib.com>",
|
|
7
8
|
"main": "dist/js/adminlte.min.js",
|
|
8
9
|
"scripts": {
|
|
10
|
+
"start": "npm run dev",
|
|
9
11
|
"dev": "npm-run-all --parallel watch docs-serve",
|
|
12
|
+
"build": "npm-run-all clean compile",
|
|
10
13
|
"css": "npm-run-all css-compile css-prefix css-rtl css-minify",
|
|
11
|
-
"css-compile": "sass --style expanded --load-path=\"node_modules\" --source-map --embed-sources --no-error-css src/scss/:dist/css/",
|
|
14
|
+
"css-compile": "sass --style expanded --load-path=\"node_modules\" --source-map --embed-sources --no-error-css --quiet src/scss/:dist/css/",
|
|
12
15
|
"css-rtl": "cross-env NODE_ENV=RTL postcss --config src/config/postcss.config.mjs --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
|
|
13
16
|
"css-lint": "stylelint \"src/scss/**/*.scss\" --cache --cache-location .cache/.stylelintcache --rd",
|
|
14
17
|
"css-minify": "npm-run-all --aggregate-output --parallel css-minify-*",
|
|
@@ -17,23 +20,25 @@
|
|
|
17
20
|
"css-prefix": "postcss --config src/config/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
|
|
18
21
|
"js": "npm-run-all js-compile js-minify",
|
|
19
22
|
"js-compile": "rollup --config src/config/rollup.config.js --sourcemap",
|
|
20
|
-
"js-lint": "eslint --
|
|
23
|
+
"js-lint": "eslint --format=stylish .",
|
|
21
24
|
"js-minify": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/adminlte.js.map,includeSources,url=adminlte.min.js.map\" --output dist/js/adminlte.min.js dist/js/adminlte.js",
|
|
22
25
|
"bundlewatch": "bundlewatch --config .bundlewatch.config.json",
|
|
23
26
|
"lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
|
|
24
|
-
"docs-compile": "astro --config src/config/astro.config.mjs build",
|
|
27
|
+
"docs-compile": "npm run copy-assets && astro --config src/config/astro.config.mjs build",
|
|
25
28
|
"docs-lint": "astro --config src/config/astro.config.mjs check",
|
|
26
|
-
"docs-format": "prettier --write \"dist
|
|
27
|
-
"docs-serve": "astro --config src/config/astro.config.mjs dev --open --port 3000",
|
|
29
|
+
"docs-format": "prettier --write \"dist/**/*.html\"",
|
|
30
|
+
"docs-serve": "npm run copy-assets && astro --config src/config/astro.config.mjs dev --open --port 3000",
|
|
31
|
+
"copy-assets": "rimraf src/html/public && mkdir -p src/html/public && cp -r dist/css src/html/public/ && cp -r dist/js src/html/public/ && cp -r dist/assets src/html/public/",
|
|
32
|
+
"flatten-build": "cp -r dist/html/* dist/ && rm -rf dist/html && rm -rf dist/.astro",
|
|
28
33
|
"assets": "node src/config/assets.config.mjs",
|
|
29
34
|
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint docs-lint lockfile-lint",
|
|
30
35
|
"clean": "rimraf dist",
|
|
31
|
-
"compile": "npm-run-all docs-compile docs-format
|
|
32
|
-
"production": "npm-run-all clean lint compile",
|
|
36
|
+
"compile": "npm-run-all css js assets copy-assets docs-compile docs-format flatten-build",
|
|
37
|
+
"production": "npm-run-all clean lint compile bundlewatch",
|
|
33
38
|
"watch": "concurrently \"npm:watch-*\"",
|
|
34
|
-
"watch-css-main": "nodemon --watch src/scss/ --ext scss --exec \"npm-run-all css-lint css-compile\"",
|
|
39
|
+
"watch-css-main": "nodemon --watch src/scss/ --ext scss --exec \"npm-run-all css-lint css-compile copy-assets\"",
|
|
35
40
|
"watch-css-dist": "nodemon --watch dist/css/ --ext css --ignore \"dist/css/*.rtl.*\" --exec \"npm run css-rtl\"",
|
|
36
|
-
"watch-js-main": "nodemon --watch src/ts/ --ext ts --exec \"npm-run-all js-lint js-compile\"",
|
|
41
|
+
"watch-js-main": "nodemon --watch src/ts/ --ext ts --exec \"npm-run-all js-lint js-compile copy-assets\"",
|
|
37
42
|
"watch-assets": "nodemon --watch src/assets/ --exec \"npm run assets\""
|
|
38
43
|
},
|
|
39
44
|
"keywords": [
|
|
@@ -59,39 +64,39 @@
|
|
|
59
64
|
},
|
|
60
65
|
"devDependencies": {
|
|
61
66
|
"@astrojs/check": "^0.9.4",
|
|
62
|
-
"@astrojs/mdx": "^4.0
|
|
63
|
-
"@rollup/plugin-typescript": "^12.1.
|
|
64
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
65
|
-
"@typescript-eslint/parser": "^
|
|
66
|
-
"astro": "^5.0
|
|
67
|
-
"autoprefixer": "^10.4.
|
|
68
|
-
"bootstrap": "^5.3.
|
|
69
|
-
"bundlewatch": "^0.4.
|
|
67
|
+
"@astrojs/mdx": "^4.3.0",
|
|
68
|
+
"@rollup/plugin-typescript": "^12.1.3",
|
|
69
|
+
"@typescript-eslint/eslint-plugin": "^8.34.1",
|
|
70
|
+
"@typescript-eslint/parser": "^8.34.1",
|
|
71
|
+
"astro": "^5.10.0",
|
|
72
|
+
"autoprefixer": "^10.4.21",
|
|
73
|
+
"bootstrap": "^5.3.7",
|
|
74
|
+
"bundlewatch": "^0.4.1",
|
|
70
75
|
"clean-css-cli": "^5.6.3",
|
|
71
|
-
"concurrently": "^9.1.
|
|
76
|
+
"concurrently": "^9.1.2",
|
|
72
77
|
"cross-env": "^7.0.3",
|
|
73
|
-
"eslint": "^
|
|
74
|
-
"eslint-config-xo": "^0.
|
|
75
|
-
"eslint-config-xo-typescript": "^
|
|
76
|
-
"eslint-plugin-astro": "^
|
|
77
|
-
"eslint-plugin-import": "^2.
|
|
78
|
-
"eslint-plugin-unicorn": "^
|
|
79
|
-
"fs-extra": "^11.
|
|
80
|
-
"lockfile-lint": "^4.14.
|
|
81
|
-
"nodemon": "^3.1.
|
|
78
|
+
"eslint": "^9.29.0",
|
|
79
|
+
"eslint-config-xo": "^0.47.0",
|
|
80
|
+
"eslint-config-xo-typescript": "^8.0.1",
|
|
81
|
+
"eslint-plugin-astro": "^1.3.1",
|
|
82
|
+
"eslint-plugin-import": "^2.31.0",
|
|
83
|
+
"eslint-plugin-unicorn": "^59.0.1",
|
|
84
|
+
"fs-extra": "^11.3.0",
|
|
85
|
+
"lockfile-lint": "^4.14.1",
|
|
86
|
+
"nodemon": "^3.1.10",
|
|
82
87
|
"npm-run-all": "^4.1.5",
|
|
83
|
-
"postcss": "^8.
|
|
84
|
-
"postcss-cli": "^11.0.
|
|
85
|
-
"prettier": "^3.
|
|
88
|
+
"postcss": "^8.5.6",
|
|
89
|
+
"postcss-cli": "^11.0.1",
|
|
90
|
+
"prettier": "^3.5.3",
|
|
86
91
|
"prettier-plugin-astro": "^0.14.1",
|
|
87
92
|
"rimraf": "^6.0.1",
|
|
88
|
-
"rollup": "^4.
|
|
93
|
+
"rollup": "^4.44.0",
|
|
89
94
|
"rtlcss": "^4.3.0",
|
|
90
|
-
"sass": "^1.
|
|
91
|
-
"stylelint": "^16.
|
|
92
|
-
"stylelint-config-twbs-bootstrap": "^
|
|
93
|
-
"terser": "^5.
|
|
95
|
+
"sass": "^1.89.2",
|
|
96
|
+
"stylelint": "^16.21.0",
|
|
97
|
+
"stylelint-config-twbs-bootstrap": "^16.1.0",
|
|
98
|
+
"terser": "^5.43.1",
|
|
94
99
|
"tslib": "^2.8.1",
|
|
95
|
-
"typescript": "^5.
|
|
100
|
+
"typescript": "^5.8.3"
|
|
96
101
|
}
|
|
97
102
|
}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
AdminLTE Accessibility Styles - WCAG 2.1 AA Compliance
|
|
3
|
+
========================================================================== */
|
|
4
|
+
|
|
5
|
+
/* Skip Links - WCAG 2.4.1: Bypass Blocks */
|
|
6
|
+
.skip-link {
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: -40px;
|
|
9
|
+
left: 6px;
|
|
10
|
+
z-index: 999999;
|
|
11
|
+
padding: 8px 16px;
|
|
12
|
+
font-weight: 600;
|
|
13
|
+
color: var(--bs-white);
|
|
14
|
+
text-decoration: none;
|
|
15
|
+
background: var(--bs-primary);
|
|
16
|
+
|
|
17
|
+
&:focus {
|
|
18
|
+
top: 0;
|
|
19
|
+
outline: 3px solid var(--bs-warning);
|
|
20
|
+
outline-offset: 2px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&:hover {
|
|
24
|
+
color: var(--bs-white);
|
|
25
|
+
text-decoration: none;
|
|
26
|
+
background: var(--bs-primary-emphasis);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Enhanced Focus Indicators - WCAG 2.4.7: Focus Visible */
|
|
31
|
+
.focus-enhanced {
|
|
32
|
+
&:focus {
|
|
33
|
+
outline: 3px solid var(--bs-focus-ring-color, #0d6efd);
|
|
34
|
+
outline-offset: 2px;
|
|
35
|
+
box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* High Contrast Mode Support */
|
|
40
|
+
@media (prefers-contrast: high) {
|
|
41
|
+
.card {
|
|
42
|
+
border: 2px solid;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.btn {
|
|
46
|
+
border-width: 2px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.nav-link {
|
|
50
|
+
border: 1px solid transparent;
|
|
51
|
+
|
|
52
|
+
&:hover,
|
|
53
|
+
&:focus {
|
|
54
|
+
border-color: currentcolor;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Reduced Motion Support - WCAG 2.3.3: Animation from Interactions */
|
|
60
|
+
@media (prefers-reduced-motion: reduce) {
|
|
61
|
+
*,
|
|
62
|
+
*::before,
|
|
63
|
+
*::after {
|
|
64
|
+
transition-duration: .01ms !important;
|
|
65
|
+
animation-duration: .01ms !important;
|
|
66
|
+
animation-iteration-count: 1 !important;
|
|
67
|
+
scroll-behavior: auto !important;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.fade {
|
|
71
|
+
display: block;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.collapse {
|
|
75
|
+
display: block;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Screen Reader Only Content */
|
|
80
|
+
.sr-only {
|
|
81
|
+
position: absolute !important;
|
|
82
|
+
width: 1px !important;
|
|
83
|
+
height: 1px !important;
|
|
84
|
+
padding: 0 !important;
|
|
85
|
+
margin: -1px !important;
|
|
86
|
+
overflow: hidden !important;
|
|
87
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
88
|
+
white-space: nowrap !important;
|
|
89
|
+
border: 0 !important;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.sr-only-focusable:focus {
|
|
93
|
+
position: static !important;
|
|
94
|
+
width: auto !important;
|
|
95
|
+
height: auto !important;
|
|
96
|
+
padding: inherit !important;
|
|
97
|
+
margin: inherit !important;
|
|
98
|
+
overflow: visible !important;
|
|
99
|
+
clip: auto !important;
|
|
100
|
+
white-space: normal !important;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Focus Trap Utilities */
|
|
104
|
+
.focus-trap {
|
|
105
|
+
&:focus {
|
|
106
|
+
box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Accessible Color Combinations - WCAG 1.4.3: Contrast (Minimum) */
|
|
111
|
+
.text-accessible-primary {
|
|
112
|
+
color: #003d82; /* 4.5:1 contrast on white */
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.text-accessible-success {
|
|
116
|
+
color: #0f5132; /* 4.5:1 contrast on white */
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.text-accessible-danger {
|
|
120
|
+
color: #842029; /* 4.5:1 contrast on white */
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.text-accessible-warning {
|
|
124
|
+
color: #664d03; /* 4.5:1 contrast on white */
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* ARIA Live Regions */
|
|
128
|
+
.live-region {
|
|
129
|
+
position: absolute;
|
|
130
|
+
left: -10000px;
|
|
131
|
+
width: 1px;
|
|
132
|
+
height: 1px;
|
|
133
|
+
overflow: hidden;
|
|
134
|
+
|
|
135
|
+
&.live-region-visible {
|
|
136
|
+
position: static;
|
|
137
|
+
left: auto;
|
|
138
|
+
width: auto;
|
|
139
|
+
height: auto;
|
|
140
|
+
overflow: visible;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Enhanced Error States - WCAG 3.3.1: Error Identification */
|
|
145
|
+
.form-control.is-invalid {
|
|
146
|
+
border-color: var(--bs-danger);
|
|
147
|
+
|
|
148
|
+
&:focus {
|
|
149
|
+
border-color: var(--bs-danger);
|
|
150
|
+
box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .25);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.invalid-feedback {
|
|
155
|
+
display: block;
|
|
156
|
+
width: 100%;
|
|
157
|
+
margin-top: .25rem;
|
|
158
|
+
font-size: .875em;
|
|
159
|
+
color: var(--bs-danger);
|
|
160
|
+
|
|
161
|
+
&[role="alert"] {
|
|
162
|
+
font-weight: 600;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Target Size - WCAG 2.5.8: Target Size (Minimum) */
|
|
167
|
+
.touch-target {
|
|
168
|
+
min-width: 44px;
|
|
169
|
+
min-height: 44px;
|
|
170
|
+
|
|
171
|
+
&.touch-target-small {
|
|
172
|
+
min-width: 24px;
|
|
173
|
+
min-height: 24px;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Table Accessibility */
|
|
178
|
+
.table-accessible {
|
|
179
|
+
th {
|
|
180
|
+
font-weight: 600;
|
|
181
|
+
background-color: var(--bs-secondary-bg);
|
|
182
|
+
|
|
183
|
+
&[scope="col"] {
|
|
184
|
+
border-bottom: 2px solid var(--bs-border-color);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
&[scope="row"] {
|
|
188
|
+
border-right: 2px solid var(--bs-border-color);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
caption {
|
|
193
|
+
padding: .75rem;
|
|
194
|
+
font-weight: 600;
|
|
195
|
+
color: var(--bs-secondary);
|
|
196
|
+
text-align: left;
|
|
197
|
+
caption-side: top;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* Navigation Landmarks */
|
|
202
|
+
nav[role="navigation"] {
|
|
203
|
+
&:not([aria-label]):not([aria-labelledby]) {
|
|
204
|
+
&::before {
|
|
205
|
+
position: absolute;
|
|
206
|
+
left: -10000px;
|
|
207
|
+
content: "Navigation";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Form Fieldset Styling */
|
|
213
|
+
fieldset {
|
|
214
|
+
padding: 1rem;
|
|
215
|
+
margin-bottom: 1rem;
|
|
216
|
+
border: 1px solid var(--bs-border-color);
|
|
217
|
+
|
|
218
|
+
legend {
|
|
219
|
+
padding: 0 .5rem;
|
|
220
|
+
margin-bottom: .5rem;
|
|
221
|
+
font-size: 1.1em;
|
|
222
|
+
font-weight: 600;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* Loading States */
|
|
227
|
+
.loading[aria-busy="true"] {
|
|
228
|
+
position: relative;
|
|
229
|
+
pointer-events: none;
|
|
230
|
+
|
|
231
|
+
&::after {
|
|
232
|
+
position: absolute;
|
|
233
|
+
top: 50%;
|
|
234
|
+
left: 50%;
|
|
235
|
+
width: 20px;
|
|
236
|
+
height: 20px;
|
|
237
|
+
margin-top: -10px;
|
|
238
|
+
margin-left: -10px;
|
|
239
|
+
content: "";
|
|
240
|
+
border: 2px solid var(--bs-primary);
|
|
241
|
+
border-top-color: transparent;
|
|
242
|
+
animation: spin 1s linear infinite;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@media (prefers-reduced-motion: reduce) {
|
|
246
|
+
&::after {
|
|
247
|
+
border-top-color: var(--bs-primary);
|
|
248
|
+
animation: none;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
@keyframes spin {
|
|
254
|
+
to {
|
|
255
|
+
transform: rotate(360deg);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* Dark Mode Accessibility */
|
|
260
|
+
[data-bs-theme="dark"] {
|
|
261
|
+
.text-accessible-primary {
|
|
262
|
+
color: #6ea8fe;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.text-accessible-success {
|
|
266
|
+
color: #75b798;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.text-accessible-danger {
|
|
270
|
+
color: #f1aeb5;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.text-accessible-warning {
|
|
274
|
+
color: #ffda6a;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* Print Accessibility */
|
|
279
|
+
@media print {
|
|
280
|
+
.skip-link,
|
|
281
|
+
.btn,
|
|
282
|
+
.nav-link {
|
|
283
|
+
color: #000 !important;
|
|
284
|
+
background: transparent !important;
|
|
285
|
+
border: 1px solid #000 !important;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
a[href^="http"]::after {
|
|
289
|
+
font-size: .8em;
|
|
290
|
+
content: " (" attr(href) ")";
|
|
291
|
+
}
|
|
292
|
+
}
|
|
@@ -199,7 +199,9 @@
|
|
|
199
199
|
.nav-link > .nav-badge,
|
|
200
200
|
.nav-link > p > .nav-badge {
|
|
201
201
|
position: absolute;
|
|
202
|
+
top: 50%;
|
|
202
203
|
right: 1rem;
|
|
204
|
+
transform: translateY(-50%);
|
|
203
205
|
}
|
|
204
206
|
|
|
205
207
|
.nav-link > .nav-arrow,
|
|
@@ -211,6 +213,7 @@
|
|
|
211
213
|
|
|
212
214
|
.nav-link {
|
|
213
215
|
position: relative;
|
|
216
|
+
width: 100%;
|
|
214
217
|
@include transition(width $lte-transition-fn $lte-transition-speed);
|
|
215
218
|
@include border-radius($border-radius);
|
|
216
219
|
|
|
@@ -248,6 +251,15 @@
|
|
|
248
251
|
}
|
|
249
252
|
}
|
|
250
253
|
}
|
|
254
|
+
|
|
255
|
+
// Override: ensure badges/arrows are aligned to the end (right in LTR, left in RTL)
|
|
256
|
+
.nav-link > .nav-badge,
|
|
257
|
+
.nav-link > p > .nav-badge,
|
|
258
|
+
.nav-link > .nav-arrow,
|
|
259
|
+
.nav-link > p > .nav-arrow {
|
|
260
|
+
right: 1rem !important; // place at end in LTR
|
|
261
|
+
left: auto !important;
|
|
262
|
+
}
|
|
251
263
|
}
|
|
252
264
|
|
|
253
265
|
.nav-compact.nav-indent {
|
package/src/scss/_table.scss
CHANGED
|
@@ -18,15 +18,7 @@
|
|
|
18
18
|
box-shadow: inset 0 1px 0 $table-border-color, inset 0 -1px 0 $table-border-color;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
//
|
|
22
|
-
// &.table-dark {
|
|
23
|
-
// thead tr {
|
|
24
|
-
// &:nth-child(1) th {
|
|
25
|
-
// background-color: $table-dark-bg;
|
|
26
|
-
// box-shadow: inset 0 1px 0 $table-dark-border-color, inset 0 -1px 0 $table-dark-border-color;
|
|
27
|
-
// }
|
|
28
|
-
// }
|
|
29
|
-
// }
|
|
21
|
+
// Note: Dark table styling for fixed headers is handled by Bootstrap's built-in dark table classes
|
|
30
22
|
}
|
|
31
23
|
|
|
32
24
|
// no border
|
package/src/scss/_variables.scss
CHANGED
|
@@ -58,6 +58,7 @@ $lte-app-header-bottom-border: $lte-app-header-bottom-border-width solid
|
|
|
58
58
|
$lte-app-header-link-padding-y: $navbar-padding-y !default;
|
|
59
59
|
$lte-app-header-height: ($nav-link-height + ($lte-app-header-link-padding-y * 2)) !default;
|
|
60
60
|
$lte-app-header-height-compact: ($nav-link-height-compact + ($lte-app-header-link-padding-y * 2)) !default;
|
|
61
|
+
$lte-zindex-fixed-header: $zindex-fixed !default;
|
|
61
62
|
|
|
62
63
|
// APP MAIN
|
|
63
64
|
// --------------------------------------------------------
|
|
@@ -77,7 +78,7 @@ $lte-app-footer-border-top-color: var(--#{$prefix}border-color) !default;
|
|
|
77
78
|
$lte-app-footer-border-top: $lte-app-footer-border-top-width solid $lte-app-footer-border-top-color !default;
|
|
78
79
|
$lte-app-footer-bg: var(--#{$prefix}body-bg) !default;
|
|
79
80
|
$lte-app-footer-color: var(--#{$prefix}secondary-color) !default;
|
|
80
|
-
|
|
81
|
+
$lte-zindex-fixed-footer: $zindex-fixed !default;
|
|
81
82
|
// CONTENT BOTTOM AREA
|
|
82
83
|
// --------------------------------------------------------
|
|
83
84
|
$lte-app-content-bottom-area-margin-bottom: -$lte-app-main-padding-bottom !default;
|