oxidized-web 0.15.1 → 0.17.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.

Potentially problematic release.


This version of oxidized-web might be problematic. Click here for more details.

Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +22 -2
  4. data/CHANGELOG.md +30 -1
  5. data/README.md +13 -3
  6. data/Rakefile +9 -4
  7. data/docs/configuration.md +90 -0
  8. data/docs/development.md +42 -39
  9. data/lib/oxidized/web/public/scripts/oxidized.js +13 -13
  10. data/lib/oxidized/web/public/weblibs/bootstrap-icons.css +31 -3
  11. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js +20 -19
  12. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map +1 -1
  13. data/lib/oxidized/web/public/weblibs/bootstrap.css +110 -124
  14. data/lib/oxidized/web/public/weblibs/bootstrap.css.map +1 -1
  15. data/lib/oxidized/web/public/weblibs/bootstrap.js +20 -17
  16. data/lib/oxidized/web/public/weblibs/bootstrap.js.map +1 -1
  17. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.css +3 -3
  18. data/lib/oxidized/web/public/weblibs/buttons.colVis.js +14 -5
  19. data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css +111 -17
  20. data/lib/oxidized/web/public/weblibs/dataTables.buttons.js +25 -7
  21. data/lib/oxidized/web/public/weblibs/dataTables.js +336 -106
  22. data/lib/oxidized/web/public/weblibs/dayjs-plugin-utc.min.js +1 -0
  23. data/lib/oxidized/web/public/weblibs/dayjs.min.js +1 -0
  24. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff +0 -0
  25. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff2 +0 -0
  26. data/lib/oxidized/web/version.rb +1 -1
  27. data/lib/oxidized/web/views/conf_search.haml +1 -1
  28. data/lib/oxidized/web/views/diffs.haml +6 -7
  29. data/lib/oxidized/web/views/head.haml +4 -0
  30. data/lib/oxidized/web/views/node.haml +3 -2
  31. data/lib/oxidized/web/views/nodes.haml +13 -5
  32. data/lib/oxidized/web/views/stats.haml +11 -3
  33. data/lib/oxidized/web/views/version.haml +1 -2
  34. data/lib/oxidized/web/views/versions.haml +11 -7
  35. data/lib/oxidized/web/webapp.rb +41 -29
  36. data/lib/oxidized/web.rb +72 -16
  37. data/oxidized-web.gemspec +22 -13
  38. data/package-lock.json +37 -25
  39. data/package.json +7 -5
  40. data/spec/spec_helper.rb +1 -0
  41. data/spec/web/node/show_spec.rb +100 -0
  42. data/spec/web/node/version_spec.rb +161 -0
  43. data/spec/{node_spec.rb → web/node_spec.rb} +1 -1
  44. data/spec/{nodes_spec.rb → web/nodes_spec.rb} +1 -1
  45. data/spec/{root_spec.rb → web/root_spec.rb} +1 -1
  46. data/spec/{webapp_spec.rb → web/webapp_spec.rb} +1 -1
  47. data/spec/web_spec.rb +98 -0
  48. metadata +69 -69
  49. data/.rubocop_todo.yml +0 -64
  50. data/spec/node_version_spec.rb +0 -102
@@ -1,7 +1,7 @@
1
1
  @charset "UTF-8";
2
2
  /*!
3
- * Bootstrap v5.3.3 (https://getbootstrap.com/)
4
- * Copyright 2011-2024 The Bootstrap Authors
3
+ * Bootstrap v5.3.7 (https://getbootstrap.com/)
4
+ * Copyright 2011-2025 The Bootstrap Authors
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
  :root,
@@ -517,8 +517,8 @@ legend {
517
517
  width: 100%;
518
518
  padding: 0;
519
519
  margin-bottom: 0.5rem;
520
- font-size: calc(1.275rem + 0.3vw);
521
520
  line-height: inherit;
521
+ font-size: calc(1.275rem + 0.3vw);
522
522
  }
523
523
  @media (min-width: 1200px) {
524
524
  legend {
@@ -601,9 +601,9 @@ progress {
601
601
  }
602
602
 
603
603
  .display-1 {
604
- font-size: calc(1.625rem + 4.5vw);
605
604
  font-weight: 300;
606
605
  line-height: 1.2;
606
+ font-size: calc(1.625rem + 4.5vw);
607
607
  }
608
608
  @media (min-width: 1200px) {
609
609
  .display-1 {
@@ -612,9 +612,9 @@ progress {
612
612
  }
613
613
 
614
614
  .display-2 {
615
- font-size: calc(1.575rem + 3.9vw);
616
615
  font-weight: 300;
617
616
  line-height: 1.2;
617
+ font-size: calc(1.575rem + 3.9vw);
618
618
  }
619
619
  @media (min-width: 1200px) {
620
620
  .display-2 {
@@ -623,9 +623,9 @@ progress {
623
623
  }
624
624
 
625
625
  .display-3 {
626
- font-size: calc(1.525rem + 3.3vw);
627
626
  font-weight: 300;
628
627
  line-height: 1.2;
628
+ font-size: calc(1.525rem + 3.3vw);
629
629
  }
630
630
  @media (min-width: 1200px) {
631
631
  .display-3 {
@@ -634,9 +634,9 @@ progress {
634
634
  }
635
635
 
636
636
  .display-4 {
637
- font-size: calc(1.475rem + 2.7vw);
638
637
  font-weight: 300;
639
638
  line-height: 1.2;
639
+ font-size: calc(1.475rem + 2.7vw);
640
640
  }
641
641
  @media (min-width: 1200px) {
642
642
  .display-4 {
@@ -645,9 +645,9 @@ progress {
645
645
  }
646
646
 
647
647
  .display-5 {
648
- font-size: calc(1.425rem + 2.1vw);
649
648
  font-weight: 300;
650
649
  line-height: 1.2;
650
+ font-size: calc(1.425rem + 2.1vw);
651
651
  }
652
652
  @media (min-width: 1200px) {
653
653
  .display-5 {
@@ -656,9 +656,9 @@ progress {
656
656
  }
657
657
 
658
658
  .display-6 {
659
- font-size: calc(1.375rem + 1.5vw);
660
659
  font-weight: 300;
661
660
  line-height: 1.2;
661
+ font-size: calc(1.375rem + 1.5vw);
662
662
  }
663
663
  @media (min-width: 1200px) {
664
664
  .display-6 {
@@ -803,7 +803,7 @@ progress {
803
803
  }
804
804
 
805
805
  .col {
806
- flex: 1 0 0%;
806
+ flex: 1 0 0;
807
807
  }
808
808
 
809
809
  .row-cols-auto > * {
@@ -1012,7 +1012,7 @@ progress {
1012
1012
 
1013
1013
  @media (min-width: 576px) {
1014
1014
  .col-sm {
1015
- flex: 1 0 0%;
1015
+ flex: 1 0 0;
1016
1016
  }
1017
1017
  .row-cols-sm-auto > * {
1018
1018
  flex: 0 0 auto;
@@ -1181,7 +1181,7 @@ progress {
1181
1181
  }
1182
1182
  @media (min-width: 768px) {
1183
1183
  .col-md {
1184
- flex: 1 0 0%;
1184
+ flex: 1 0 0;
1185
1185
  }
1186
1186
  .row-cols-md-auto > * {
1187
1187
  flex: 0 0 auto;
@@ -1350,7 +1350,7 @@ progress {
1350
1350
  }
1351
1351
  @media (min-width: 992px) {
1352
1352
  .col-lg {
1353
- flex: 1 0 0%;
1353
+ flex: 1 0 0;
1354
1354
  }
1355
1355
  .row-cols-lg-auto > * {
1356
1356
  flex: 0 0 auto;
@@ -1519,7 +1519,7 @@ progress {
1519
1519
  }
1520
1520
  @media (min-width: 1200px) {
1521
1521
  .col-xl {
1522
- flex: 1 0 0%;
1522
+ flex: 1 0 0;
1523
1523
  }
1524
1524
  .row-cols-xl-auto > * {
1525
1525
  flex: 0 0 auto;
@@ -1688,7 +1688,7 @@ progress {
1688
1688
  }
1689
1689
  @media (min-width: 1400px) {
1690
1690
  .col-xxl {
1691
- flex: 1 0 0%;
1691
+ flex: 1 0 0;
1692
1692
  }
1693
1693
  .row-cols-xxl-auto > * {
1694
1694
  flex: 0 0 auto;
@@ -2156,10 +2156,6 @@ progress {
2156
2156
  display: block;
2157
2157
  padding: 0;
2158
2158
  }
2159
- .form-control::-moz-placeholder {
2160
- color: var(--bs-secondary-color);
2161
- opacity: 1;
2162
- }
2163
2159
  .form-control::placeholder {
2164
2160
  color: var(--bs-secondary-color);
2165
2161
  opacity: 1;
@@ -2607,9 +2603,11 @@ textarea.form-control-lg {
2607
2603
  top: 0;
2608
2604
  left: 0;
2609
2605
  z-index: 2;
2606
+ max-width: 100%;
2610
2607
  height: 100%;
2611
2608
  padding: 1rem 0.75rem;
2612
2609
  overflow: hidden;
2610
+ color: rgba(var(--bs-body-color-rgb), 0.65);
2613
2611
  text-align: start;
2614
2612
  text-overflow: ellipsis;
2615
2613
  white-space: nowrap;
@@ -2627,17 +2625,10 @@ textarea.form-control-lg {
2627
2625
  .form-floating > .form-control-plaintext {
2628
2626
  padding: 1rem 0.75rem;
2629
2627
  }
2630
- .form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
2631
- color: transparent;
2632
- }
2633
2628
  .form-floating > .form-control::placeholder,
2634
2629
  .form-floating > .form-control-plaintext::placeholder {
2635
2630
  color: transparent;
2636
2631
  }
2637
- .form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {
2638
- padding-top: 1.625rem;
2639
- padding-bottom: 0.625rem;
2640
- }
2641
2632
  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
2642
2633
  .form-floating > .form-control-plaintext:focus,
2643
2634
  .form-floating > .form-control-plaintext:not(:placeholder-shown) {
@@ -2652,31 +2643,19 @@ textarea.form-control-lg {
2652
2643
  .form-floating > .form-select {
2653
2644
  padding-top: 1.625rem;
2654
2645
  padding-bottom: 0.625rem;
2655
- }
2656
- .form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
2657
- color: rgba(var(--bs-body-color-rgb), 0.65);
2658
- transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2646
+ padding-left: 0.75rem;
2659
2647
  }
2660
2648
  .form-floating > .form-control:focus ~ label,
2661
2649
  .form-floating > .form-control:not(:placeholder-shown) ~ label,
2662
2650
  .form-floating > .form-control-plaintext ~ label,
2663
2651
  .form-floating > .form-select ~ label {
2664
- color: rgba(var(--bs-body-color-rgb), 0.65);
2665
2652
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2666
2653
  }
2667
- .form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {
2668
- position: absolute;
2669
- inset: 1rem 0.375rem;
2670
- z-index: -1;
2671
- height: 1.5em;
2672
- content: "";
2673
- background-color: var(--bs-body-bg);
2674
- border-radius: var(--bs-border-radius);
2654
+ .form-floating > .form-control:-webkit-autofill ~ label {
2655
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2675
2656
  }
2676
- .form-floating > .form-control:focus ~ label::after,
2677
- .form-floating > .form-control:not(:placeholder-shown) ~ label::after,
2678
- .form-floating > .form-control-plaintext ~ label::after,
2679
- .form-floating > .form-select ~ label::after {
2657
+ .form-floating > textarea:focus ~ label::after,
2658
+ .form-floating > textarea:not(:placeholder-shown) ~ label::after {
2680
2659
  position: absolute;
2681
2660
  inset: 1rem 0.375rem;
2682
2661
  z-index: -1;
@@ -2685,9 +2664,8 @@ textarea.form-control-lg {
2685
2664
  background-color: var(--bs-body-bg);
2686
2665
  border-radius: var(--bs-border-radius);
2687
2666
  }
2688
- .form-floating > .form-control:-webkit-autofill ~ label {
2689
- color: rgba(var(--bs-body-color-rgb), 0.65);
2690
- transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2667
+ .form-floating > textarea:disabled ~ label::after {
2668
+ background-color: var(--bs-secondary-bg);
2691
2669
  }
2692
2670
  .form-floating > .form-control-plaintext ~ label {
2693
2671
  border-width: var(--bs-border-width) 0;
@@ -2696,10 +2674,6 @@ textarea.form-control-lg {
2696
2674
  .form-floating > .form-control:disabled ~ label {
2697
2675
  color: #6c757d;
2698
2676
  }
2699
- .form-floating > :disabled ~ label::after,
2700
- .form-floating > .form-control:disabled ~ label::after {
2701
- background-color: var(--bs-secondary-bg);
2702
- }
2703
2677
 
2704
2678
  .input-group {
2705
2679
  position: relative;
@@ -2782,7 +2756,7 @@ textarea.form-control-lg {
2782
2756
  border-bottom-right-radius: 0;
2783
2757
  }
2784
2758
  .input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
2785
- margin-left: calc(var(--bs-border-width) * -1);
2759
+ margin-left: calc(-1 * var(--bs-border-width));
2786
2760
  border-top-left-radius: 0;
2787
2761
  border-bottom-left-radius: 0;
2788
2762
  }
@@ -2824,7 +2798,7 @@ textarea.form-control-lg {
2824
2798
  .was-validated .form-control:valid, .form-control.is-valid {
2825
2799
  border-color: var(--bs-form-valid-border-color);
2826
2800
  padding-right: calc(1.5em + 0.75rem);
2827
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2801
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");
2828
2802
  background-repeat: no-repeat;
2829
2803
  background-position: right calc(0.375em + 0.1875rem) center;
2830
2804
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
@@ -2843,7 +2817,7 @@ textarea.form-control-lg {
2843
2817
  border-color: var(--bs-form-valid-border-color);
2844
2818
  }
2845
2819
  .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
2846
- --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2820
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");
2847
2821
  padding-right: 4.125rem;
2848
2822
  background-position: right 0.75rem center, center right 2.25rem;
2849
2823
  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
@@ -3755,7 +3729,7 @@ textarea.form-control-lg {
3755
3729
  }
3756
3730
  .btn-group > :not(.btn-check:first-child) + .btn,
3757
3731
  .btn-group > .btn-group:not(:first-child) {
3758
- margin-left: calc(var(--bs-border-width) * -1);
3732
+ margin-left: calc(-1 * var(--bs-border-width));
3759
3733
  }
3760
3734
  .btn-group > .btn:not(:last-child):not(.dropdown-toggle),
3761
3735
  .btn-group > .btn.dropdown-toggle-split:first-child,
@@ -3802,14 +3776,15 @@ textarea.form-control-lg {
3802
3776
  }
3803
3777
  .btn-group-vertical > .btn:not(:first-child),
3804
3778
  .btn-group-vertical > .btn-group:not(:first-child) {
3805
- margin-top: calc(var(--bs-border-width) * -1);
3779
+ margin-top: calc(-1 * var(--bs-border-width));
3806
3780
  }
3807
3781
  .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
3808
3782
  .btn-group-vertical > .btn-group:not(:last-child) > .btn {
3809
3783
  border-bottom-right-radius: 0;
3810
3784
  border-bottom-left-radius: 0;
3811
3785
  }
3812
- .btn-group-vertical > .btn ~ .btn,
3786
+ .btn-group-vertical > .btn:nth-child(n+3),
3787
+ .btn-group-vertical > :not(.btn-check) + .btn,
3813
3788
  .btn-group-vertical > .btn-group:not(:first-child) > .btn {
3814
3789
  border-top-left-radius: 0;
3815
3790
  border-top-right-radius: 0;
@@ -3933,8 +3908,8 @@ textarea.form-control-lg {
3933
3908
 
3934
3909
  .nav-justified > .nav-link,
3935
3910
  .nav-justified .nav-item {
3936
- flex-basis: 0;
3937
3911
  flex-grow: 1;
3912
+ flex-basis: 0;
3938
3913
  text-align: center;
3939
3914
  }
3940
3915
 
@@ -4035,8 +4010,8 @@ textarea.form-control-lg {
4035
4010
  }
4036
4011
 
4037
4012
  .navbar-collapse {
4038
- flex-basis: 100%;
4039
4013
  flex-grow: 1;
4014
+ flex-basis: 100%;
4040
4015
  align-items: center;
4041
4016
  }
4042
4017
 
@@ -4531,7 +4506,7 @@ textarea.form-control-lg {
4531
4506
  flex-flow: row wrap;
4532
4507
  }
4533
4508
  .card-group > .card {
4534
- flex: 1 0 0%;
4509
+ flex: 1 0 0;
4535
4510
  margin-bottom: 0;
4536
4511
  }
4537
4512
  .card-group > .card + .card {
@@ -4542,24 +4517,24 @@ textarea.form-control-lg {
4542
4517
  border-top-right-radius: 0;
4543
4518
  border-bottom-right-radius: 0;
4544
4519
  }
4545
- .card-group > .card:not(:last-child) .card-img-top,
4546
- .card-group > .card:not(:last-child) .card-header {
4520
+ .card-group > .card:not(:last-child) > .card-img-top,
4521
+ .card-group > .card:not(:last-child) > .card-header {
4547
4522
  border-top-right-radius: 0;
4548
4523
  }
4549
- .card-group > .card:not(:last-child) .card-img-bottom,
4550
- .card-group > .card:not(:last-child) .card-footer {
4524
+ .card-group > .card:not(:last-child) > .card-img-bottom,
4525
+ .card-group > .card:not(:last-child) > .card-footer {
4551
4526
  border-bottom-right-radius: 0;
4552
4527
  }
4553
4528
  .card-group > .card:not(:first-child) {
4554
4529
  border-top-left-radius: 0;
4555
4530
  border-bottom-left-radius: 0;
4556
4531
  }
4557
- .card-group > .card:not(:first-child) .card-img-top,
4558
- .card-group > .card:not(:first-child) .card-header {
4532
+ .card-group > .card:not(:first-child) > .card-img-top,
4533
+ .card-group > .card:not(:first-child) > .card-header {
4559
4534
  border-top-left-radius: 0;
4560
4535
  }
4561
- .card-group > .card:not(:first-child) .card-img-bottom,
4562
- .card-group > .card:not(:first-child) .card-footer {
4536
+ .card-group > .card:not(:first-child) > .card-img-bottom,
4537
+ .card-group > .card:not(:first-child) > .card-footer {
4563
4538
  border-bottom-left-radius: 0;
4564
4539
  }
4565
4540
  }
@@ -4576,11 +4551,11 @@ textarea.form-control-lg {
4576
4551
  --bs-accordion-btn-padding-y: 1rem;
4577
4552
  --bs-accordion-btn-color: var(--bs-body-color);
4578
4553
  --bs-accordion-btn-bg: var(--bs-accordion-bg);
4579
- --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");
4554
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
4580
4555
  --bs-accordion-btn-icon-width: 1.25rem;
4581
4556
  --bs-accordion-btn-icon-transform: rotate(-180deg);
4582
4557
  --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
4583
- --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");
4558
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
4584
4559
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
4585
4560
  --bs-accordion-body-padding-x: 1.25rem;
4586
4561
  --bs-accordion-body-padding-y: 1rem;
@@ -4690,16 +4665,15 @@ textarea.form-control-lg {
4690
4665
  .accordion-flush > .accordion-item:last-child {
4691
4666
  border-bottom: 0;
4692
4667
  }
4693
- .accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {
4694
- border-radius: 0;
4695
- }
4696
- .accordion-flush > .accordion-item > .accordion-collapse {
4668
+ .accordion-flush > .accordion-item > .accordion-collapse,
4669
+ .accordion-flush > .accordion-item > .accordion-header .accordion-button,
4670
+ .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {
4697
4671
  border-radius: 0;
4698
4672
  }
4699
4673
 
4700
4674
  [data-bs-theme=dark] .accordion-button::after {
4701
- --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
4702
- --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
4675
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e");
4676
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e");
4703
4677
  }
4704
4678
 
4705
4679
  .breadcrumb {
@@ -4803,7 +4777,7 @@ textarea.form-control-lg {
4803
4777
  }
4804
4778
 
4805
4779
  .page-item:not(:first-child) .page-link {
4806
- margin-left: calc(var(--bs-border-width) * -1);
4780
+ margin-left: calc(-1 * var(--bs-border-width));
4807
4781
  }
4808
4782
  .page-item:first-child .page-link {
4809
4783
  border-top-left-radius: var(--bs-pagination-border-radius);
@@ -4952,7 +4926,7 @@ textarea.form-control-lg {
4952
4926
 
4953
4927
  @keyframes progress-bar-stripes {
4954
4928
  0% {
4955
- background-position-x: 1rem;
4929
+ background-position-x: var(--bs-progress-height);
4956
4930
  }
4957
4931
  }
4958
4932
  .progress,
@@ -5046,22 +5020,6 @@ textarea.form-control-lg {
5046
5020
  counter-increment: section;
5047
5021
  }
5048
5022
 
5049
- .list-group-item-action {
5050
- width: 100%;
5051
- color: var(--bs-list-group-action-color);
5052
- text-align: inherit;
5053
- }
5054
- .list-group-item-action:hover, .list-group-item-action:focus {
5055
- z-index: 1;
5056
- color: var(--bs-list-group-action-hover-color);
5057
- text-decoration: none;
5058
- background-color: var(--bs-list-group-action-hover-bg);
5059
- }
5060
- .list-group-item-action:active {
5061
- color: var(--bs-list-group-action-active-color);
5062
- background-color: var(--bs-list-group-action-active-bg);
5063
- }
5064
-
5065
5023
  .list-group-item {
5066
5024
  position: relative;
5067
5025
  display: block;
@@ -5098,6 +5056,22 @@ textarea.form-control-lg {
5098
5056
  border-top-width: var(--bs-list-group-border-width);
5099
5057
  }
5100
5058
 
5059
+ .list-group-item-action {
5060
+ width: 100%;
5061
+ color: var(--bs-list-group-action-color);
5062
+ text-align: inherit;
5063
+ }
5064
+ .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {
5065
+ z-index: 1;
5066
+ color: var(--bs-list-group-action-hover-color);
5067
+ text-decoration: none;
5068
+ background-color: var(--bs-list-group-action-hover-bg);
5069
+ }
5070
+ .list-group-item-action:not(.active):active {
5071
+ color: var(--bs-list-group-action-active-color);
5072
+ background-color: var(--bs-list-group-action-active-bg);
5073
+ }
5074
+
5101
5075
  .list-group-horizontal {
5102
5076
  flex-direction: row;
5103
5077
  }
@@ -5357,19 +5331,19 @@ textarea.form-control-lg {
5357
5331
 
5358
5332
  .btn-close {
5359
5333
  --bs-btn-close-color: #000;
5360
- --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
5334
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e");
5361
5335
  --bs-btn-close-opacity: 0.5;
5362
5336
  --bs-btn-close-hover-opacity: 0.75;
5363
5337
  --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
5364
5338
  --bs-btn-close-focus-opacity: 1;
5365
5339
  --bs-btn-close-disabled-opacity: 0.25;
5366
- --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
5367
5340
  box-sizing: content-box;
5368
5341
  width: 1em;
5369
5342
  height: 1em;
5370
5343
  padding: 0.25em 0.25em;
5371
5344
  color: var(--bs-btn-close-color);
5372
5345
  background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
5346
+ filter: var(--bs-btn-close-filter);
5373
5347
  border: 0;
5374
5348
  border-radius: 0.375rem;
5375
5349
  opacity: var(--bs-btn-close-opacity);
@@ -5393,11 +5367,16 @@ textarea.form-control-lg {
5393
5367
  }
5394
5368
 
5395
5369
  .btn-close-white {
5396
- filter: var(--bs-btn-close-white-filter);
5370
+ --bs-btn-close-filter: invert(1) grayscale(100%) brightness(200%);
5371
+ }
5372
+
5373
+ :root,
5374
+ [data-bs-theme=light] {
5375
+ --bs-btn-close-filter: ;
5397
5376
  }
5398
5377
 
5399
- [data-bs-theme=dark] .btn-close {
5400
- filter: var(--bs-btn-close-white-filter);
5378
+ [data-bs-theme=dark] {
5379
+ --bs-btn-close-filter: invert(1) grayscale(100%) brightness(200%);
5401
5380
  }
5402
5381
 
5403
5382
  .toast {
@@ -5474,7 +5453,7 @@ textarea.form-control-lg {
5474
5453
  --bs-modal-width: 500px;
5475
5454
  --bs-modal-padding: 1rem;
5476
5455
  --bs-modal-margin: 0.5rem;
5477
- --bs-modal-color: ;
5456
+ --bs-modal-color: var(--bs-body-color);
5478
5457
  --bs-modal-bg: var(--bs-body-bg);
5479
5458
  --bs-modal-border-color: var(--bs-border-color-translucent);
5480
5459
  --bs-modal-border-width: var(--bs-border-width);
@@ -5510,8 +5489,8 @@ textarea.form-control-lg {
5510
5489
  pointer-events: none;
5511
5490
  }
5512
5491
  .modal.fade .modal-dialog {
5513
- transition: transform 0.3s ease-out;
5514
5492
  transform: translate(0, -50px);
5493
+ transition: transform 0.3s ease-out;
5515
5494
  }
5516
5495
  @media (prefers-reduced-motion: reduce) {
5517
5496
  .modal.fade .modal-dialog {
@@ -5586,7 +5565,10 @@ textarea.form-control-lg {
5586
5565
  }
5587
5566
  .modal-header .btn-close {
5588
5567
  padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);
5589
- margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
5568
+ margin-top: calc(-0.5 * var(--bs-modal-header-padding-y));
5569
+ margin-right: calc(-0.5 * var(--bs-modal-header-padding-x));
5570
+ margin-bottom: calc(-0.5 * var(--bs-modal-header-padding-y));
5571
+ margin-left: auto;
5590
5572
  }
5591
5573
 
5592
5574
  .modal-title {
@@ -6107,6 +6089,7 @@ textarea.form-control-lg {
6107
6089
  color: #fff;
6108
6090
  text-align: center;
6109
6091
  background: none;
6092
+ filter: var(--bs-carousel-control-icon-filter);
6110
6093
  border: 0;
6111
6094
  opacity: 0.5;
6112
6095
  transition: opacity 0.15s ease;
@@ -6145,11 +6128,11 @@ textarea.form-control-lg {
6145
6128
  }
6146
6129
 
6147
6130
  .carousel-control-prev-icon {
6148
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")*/;
6131
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e")*/;
6149
6132
  }
6150
6133
 
6151
6134
  .carousel-control-next-icon {
6152
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")*/;
6135
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e")*/;
6153
6136
  }
6154
6137
 
6155
6138
  .carousel-indicators {
@@ -6175,7 +6158,7 @@ textarea.form-control-lg {
6175
6158
  margin-left: 3px;
6176
6159
  text-indent: -999px;
6177
6160
  cursor: pointer;
6178
- background-color: #fff;
6161
+ background-color: var(--bs-carousel-indicator-active-bg);
6179
6162
  background-clip: padding-box;
6180
6163
  border: 0;
6181
6164
  border-top: 10px solid transparent;
@@ -6199,31 +6182,27 @@ textarea.form-control-lg {
6199
6182
  left: 15%;
6200
6183
  padding-top: 1.25rem;
6201
6184
  padding-bottom: 1.25rem;
6202
- color: #fff;
6185
+ color: var(--bs-carousel-caption-color);
6203
6186
  text-align: center;
6204
6187
  }
6205
6188
 
6206
- .carousel-dark .carousel-control-prev-icon,
6207
- .carousel-dark .carousel-control-next-icon {
6208
- filter: invert(1) grayscale(100);
6209
- }
6210
- .carousel-dark .carousel-indicators [data-bs-target] {
6211
- background-color: #000;
6212
- }
6213
- .carousel-dark .carousel-caption {
6214
- color: #000;
6189
+ .carousel-dark {
6190
+ --bs-carousel-indicator-active-bg: #000;
6191
+ --bs-carousel-caption-color: #000;
6192
+ --bs-carousel-control-icon-filter: invert(1) grayscale(100);
6215
6193
  }
6216
6194
 
6217
- [data-bs-theme=dark] .carousel .carousel-control-prev-icon,
6218
- [data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,
6219
- [data-bs-theme=dark].carousel .carousel-control-next-icon {
6220
- filter: invert(1) grayscale(100);
6221
- }
6222
- [data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {
6223
- background-color: #000;
6195
+ :root,
6196
+ [data-bs-theme=light] {
6197
+ --bs-carousel-indicator-active-bg: #fff;
6198
+ --bs-carousel-caption-color: #fff;
6199
+ --bs-carousel-control-icon-filter: ;
6224
6200
  }
6225
- [data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {
6226
- color: #000;
6201
+
6202
+ [data-bs-theme=dark] {
6203
+ --bs-carousel-indicator-active-bg: #000;
6204
+ --bs-carousel-caption-color: #000;
6205
+ --bs-carousel-control-icon-filter: invert(1) grayscale(100);
6227
6206
  }
6228
6207
 
6229
6208
  .spinner-grow,
@@ -6773,7 +6752,10 @@ textarea.form-control-lg {
6773
6752
  }
6774
6753
  .offcanvas-header .btn-close {
6775
6754
  padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
6776
- margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto;
6755
+ margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));
6756
+ margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));
6757
+ margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));
6758
+ margin-left: auto;
6777
6759
  }
6778
6760
 
6779
6761
  .offcanvas-title {
@@ -7174,6 +7156,10 @@ textarea.form-control-lg {
7174
7156
  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
7175
7157
  position: absolute !important;
7176
7158
  }
7159
+ .visually-hidden *,
7160
+ .visually-hidden-focusable:not(:focus):not(:focus-within) * {
7161
+ overflow: hidden !important;
7162
+ }
7177
7163
 
7178
7164
  .stretched-link::after {
7179
7165
  position: absolute;