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
@@ -31,4 +31,31 @@
31
31
  top: 0;
32
32
  z-index: $lte-zindex-fixed-header;
33
33
  }
34
+
35
+ // Fixes #6020: when only `fixed-header` is used (without `layout-fixed`),
36
+ // the sidebar — including its branding — used to scroll with the page
37
+ // because nothing made it sticky. Pin the sidebar so the brand and menu
38
+ // stay visible while the page content scrolls beneath the fixed header.
39
+ // Only applied on `sidebar-expand-*` breakpoints, since the mobile sidebar
40
+ // is an off-canvas overlay that handles its own positioning.
41
+ @each $breakpoint in map-keys($grid-breakpoints) {
42
+ $next: breakpoint-next($breakpoint, $grid-breakpoints);
43
+ $infix: breakpoint-infix($next, $grid-breakpoints);
44
+
45
+ &.sidebar-expand#{$infix} {
46
+ @include media-breakpoint-up($next) {
47
+ .app-sidebar {
48
+ position: sticky;
49
+ top: 0;
50
+ max-height: 100vh;
51
+
52
+ .sidebar-wrapper {
53
+ height: subtract(100vh, add($lte-app-header-height, 1px));
54
+ overflow-x: hidden;
55
+ overflow-y: auto;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
34
61
  }
@@ -78,6 +78,7 @@
78
78
  padding-right: $lte-sidebar-padding-x;
79
79
  padding-bottom: $lte-sidebar-padding-y;
80
80
  padding-left: $lte-sidebar-padding-x;
81
+ overscroll-behavior: contain;
81
82
  @include scrollbar-color-gray();
82
83
  @include scrollbar-width-thin();
83
84
 
@@ -105,31 +106,31 @@
105
106
 
106
107
  // Sidebar Menu. First level links
107
108
  .sidebar-menu > .nav-item {
108
- &.menu-open {
109
- .nav-link.active:not(:hover) {
110
- --#{$lte-prefix}sidebar-menu-active-bg: transparent;
111
- }
112
- }
113
-
114
109
  // links
115
110
  > .nav-link {
116
- &:active,
111
+ color: var(--#{$lte-prefix}sidebar-color);
112
+
113
+ &:hover,
117
114
  &:focus {
118
- color: var(--#{$lte-prefix}sidebar-color);
115
+ color: var(--#{$lte-prefix}sidebar-hover-color);
116
+ background-color: var(--#{$lte-prefix}sidebar-hover-bg);
119
117
  }
120
- }
121
118
 
122
- > .nav-link.active:not(:hover) {
123
- color: var(--#{$lte-prefix}sidebar-menu-active-color);
124
- background-color: var(--#{$lte-prefix}sidebar-menu-active-bg);
119
+ &.active {
120
+ color: var(--#{$lte-prefix}sidebar-menu-active-color);
121
+ background-color: var(--#{$lte-prefix}sidebar-menu-active-bg);
122
+ }
125
123
  }
126
124
 
127
- // Hover and active states
128
- &.menu-open > .nav-link,
129
- &:hover > .nav-link,
130
- > .nav-link:focus {
125
+ // Open state
126
+ &.menu-open > .nav-link {
131
127
  color: var(--#{$lte-prefix}sidebar-hover-color);
132
128
  background-color: var(--#{$lte-prefix}sidebar-hover-bg);
129
+
130
+ &.active {
131
+ color: var(--#{$lte-prefix}sidebar-menu-active-color);
132
+ background-color: var(--#{$lte-prefix}sidebar-menu-active-bg);
133
+ }
133
134
  }
134
135
 
135
136
  // First Level Submenu
@@ -161,22 +162,14 @@
161
162
  &:hover,
162
163
  &:focus {
163
164
  color: var(--#{$lte-prefix}sidebar-submenu-hover-color);
164
- // background-color: var(--#{$lte-prefix}sidebar-submenu-hover-bg);
165
+ background-color: var(--#{$lte-prefix}sidebar-submenu-hover-bg);
165
166
  }
166
- }
167
167
 
168
- > .nav-link.active {
169
- &,
170
- &:hover,
171
- &:focus {
168
+ &.active {
172
169
  color: var(--#{$lte-prefix}sidebar-submenu-active-color);
173
170
  background-color: var(--#{$lte-prefix}sidebar-submenu-active-bg);
174
171
  }
175
172
  }
176
-
177
- > .nav-link:hover {
178
- background-color: var(--#{$lte-prefix}sidebar-submenu-hover-bg);
179
- }
180
173
  }
181
174
  }
182
175
  }
@@ -240,10 +233,6 @@
240
233
  display: none;
241
234
  padding: 0;
242
235
  list-style: none;
243
-
244
- .nav-indent & {
245
- padding-left: $lte-sidebar-padding-x;
246
- }
247
236
  }
248
237
 
249
238
  .menu-open {
@@ -268,6 +257,12 @@
268
257
  }
269
258
  }
270
259
 
260
+ .nav-indent {
261
+ .nav-treeview {
262
+ padding-left: $lte-sidebar-padding-x;
263
+ }
264
+ }
265
+
271
266
  .nav-compact.nav-indent {
272
267
  .nav-treeview {
273
268
  padding-left: 0;
@@ -403,55 +398,59 @@
403
398
  animation-fill-mode: both;
404
399
  }
405
400
 
406
- .app-sidebar:hover {
407
- min-width: var(--#{$lte-prefix}sidebar-width);
408
- max-width: var(--#{$lte-prefix}sidebar-width);
401
+ &:not(.sidebar-without-hover) {
402
+ .app-sidebar:hover {
403
+ min-width: var(--#{$lte-prefix}sidebar-width);
404
+ max-width: var(--#{$lte-prefix}sidebar-width);
409
405
 
410
- .sidebar-menu .nav-header {
411
- display: inline;
412
- }
406
+ .sidebar-menu .nav-header {
407
+ display: inline;
408
+ }
413
409
 
414
- .sidebar-menu .nav-link {
415
- width: auto;
416
- }
410
+ .sidebar-menu .nav-link {
411
+ width: auto;
412
+ }
417
413
 
418
- .sidebar-menu .nav-link p,
419
- .brand-text,
420
- .logo-xl {
421
- width: auto;
422
- margin-left: 0;
423
- visibility: visible;
424
- animation-name: fadeIn;
425
- animation-duration: $lte-transition-speed;
426
- animation-fill-mode: both;
427
- }
414
+ .sidebar-menu .nav-link p,
415
+ .brand-text,
416
+ .logo-xl {
417
+ width: auto;
418
+ margin-left: 0;
419
+ visibility: visible;
420
+ animation-name: fadeIn;
421
+ animation-duration: $lte-transition-speed;
422
+ animation-fill-mode: both;
423
+ }
428
424
 
429
- .brand-text {
430
- display: inline;
431
- max-width: inherit;
432
- margin-left: .5rem;
433
- animation-name: fadeIn;
434
- animation-duration: $lte-transition-speed;
435
- animation-fill-mode: both;
436
- }
437
- .nav-badge,
438
- .nav-arrow {
439
- display: inline-block;
440
- visibility: visible;
441
- animation-name: fadeIn;
442
- animation-duration: $lte-transition-speed;
443
- animation-fill-mode: both;
444
- animation-delay: $lte-transition-speed;
445
- }
425
+ .brand-text {
426
+ display: inline;
427
+ max-width: inherit;
428
+ margin-left: .5rem;
429
+ animation-name: fadeIn;
430
+ animation-duration: $lte-transition-speed;
431
+ animation-fill-mode: both;
432
+ }
446
433
 
447
- .nav-link p {
448
- padding-left: .5rem;
449
- }
450
- .logo-xs {
451
- visibility: hidden;
452
- animation-name: fadeOut;
453
- animation-duration: $lte-transition-speed;
454
- animation-fill-mode: both;
434
+ .nav-badge,
435
+ .nav-arrow {
436
+ display: inline-block;
437
+ visibility: visible;
438
+ animation-name: fadeIn;
439
+ animation-duration: $lte-transition-speed;
440
+ animation-fill-mode: both;
441
+ animation-delay: $lte-transition-speed;
442
+ }
443
+
444
+ .nav-link p {
445
+ padding-left: .5rem;
446
+ }
447
+
448
+ .logo-xs {
449
+ visibility: hidden;
450
+ animation-name: fadeOut;
451
+ animation-duration: $lte-transition-speed;
452
+ animation-fill-mode: both;
453
+ }
455
454
  }
456
455
  }
457
456
  }
@@ -1312,7 +1312,7 @@ $pagination-color: var(--#{$prefix}link-color) !default;
1312
1312
  $pagination-bg: var(--#{$prefix}body-bg) !default;
1313
1313
  $pagination-border-radius: var(--#{$prefix}border-radius) !default;
1314
1314
  $pagination-border-width: var(--#{$prefix}border-width) !default;
1315
- $pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list
1315
+ $pagination-margin-start: calc(-1 * #{$pagination-border-width}) !default; // stylelint-disable-line function-disallowed-list
1316
1316
  $pagination-border-color: var(--#{$prefix}border-color) !default;
1317
1317
 
1318
1318
  $pagination-focus-color: var(--#{$prefix}link-hover-color) !default;
@@ -1517,6 +1517,8 @@ $modal-dialog-margin-y-sm-up: 1.75rem !default;
1517
1517
 
1518
1518
  $modal-title-line-height: $line-height-base !default;
1519
1519
 
1520
+ // AdminLTE keeps `$modal-content-color: null` so the modal text colour is
1521
+ // inherited from the document. Bootstrap's default is `var(--#{$prefix}body-color)`.
1520
1522
  $modal-content-color: null !default;
1521
1523
  $modal-content-bg: var(--#{$prefix}body-bg) !default;
1522
1524
  $modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;
@@ -1684,12 +1686,16 @@ $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://
1684
1686
 
1685
1687
  $carousel-transition-duration: .6s !default;
1686
1688
  $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
1689
+ $carousel-control-icon-filter: null !default;
1687
1690
  // scss-docs-end carousel-variables
1688
1691
 
1689
1692
  // scss-docs-start carousel-dark-variables
1690
- $carousel-dark-indicator-active-bg: $black !default;
1691
- $carousel-dark-caption-color: $black !default;
1692
- $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
1693
+ // Carousel "dark" variables below have been deprecated in Bootstrap 5.3.4.
1694
+ // Use the `.carousel` colour-mode rules and `$carousel-control-icon-filter`
1695
+ // instead.
1696
+ $carousel-dark-indicator-active-bg: $black !default; // Deprecated in 5.3.4
1697
+ $carousel-dark-caption-color: $black !default; // Deprecated in 5.3.4
1698
+ $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default; // Deprecated in 5.3.4
1693
1699
  // scss-docs-end carousel-dark-variables
1694
1700
 
1695
1701
 
@@ -1722,7 +1728,8 @@ $btn-close-opacity: .5 !default;
1722
1728
  $btn-close-hover-opacity: .75 !default;
1723
1729
  $btn-close-focus-opacity: 1 !default;
1724
1730
  $btn-close-disabled-opacity: .25 !default;
1725
- $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
1731
+ $btn-close-filter: null !default;
1732
+ $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default; // Deprecated in 5.3.4. Use `$btn-close-filter` with the `.btn-close` colour-mode rules instead.
1726
1733
  // scss-docs-end close-variables
1727
1734
 
1728
1735