@openeuropa/bcl-bootstrap 1.10.1 → 1.10.3

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 (91) hide show
  1. package/icons/anthropic.svg +3 -0
  2. package/icons/apple-music.svg +3 -0
  3. package/icons/battery-low.svg +4 -0
  4. package/icons/beaker-fill.svg +3 -0
  5. package/icons/beaker.svg +4 -0
  6. package/icons/bluesky.svg +3 -0
  7. package/icons/claude.svg +3 -0
  8. package/icons/css.svg +3 -0
  9. package/icons/flask-fill.svg +3 -0
  10. package/icons/flask-florence-fill.svg +3 -0
  11. package/icons/flask-florence.svg +3 -0
  12. package/icons/flask.svg +3 -0
  13. package/icons/fork-knife.svg +3 -0
  14. package/icons/globe-americas-fill.svg +3 -0
  15. package/icons/globe-asia-australia-fill.svg +3 -0
  16. package/icons/globe-central-south-asia-fill.svg +3 -0
  17. package/icons/globe-europe-africa-fill.svg +3 -0
  18. package/icons/javascript.svg +3 -0
  19. package/icons/leaf-fill.svg +3 -0
  20. package/icons/leaf.svg +3 -0
  21. package/icons/measuring-cup-fill.svg +3 -0
  22. package/icons/measuring-cup.svg +3 -0
  23. package/icons/openai.svg +3 -0
  24. package/icons/perplexity.svg +3 -0
  25. package/icons/tux.svg +4 -0
  26. package/icons/typescript.svg +3 -0
  27. package/icons/unlock2-fill.svg +3 -0
  28. package/icons/unlock2.svg +3 -0
  29. package/js/dist/alert.js +1 -1
  30. package/js/dist/base-component.js +4 -2
  31. package/js/dist/base-component.js.map +1 -1
  32. package/js/dist/button.js +1 -1
  33. package/js/dist/carousel.js +1 -1
  34. package/js/dist/collapse.js +3 -3
  35. package/js/dist/collapse.js.map +1 -1
  36. package/js/dist/dom/event-handler.js +1 -1
  37. package/js/dist/dom/manipulator.js +1 -1
  38. package/js/dist/dom/manipulator.js.map +1 -1
  39. package/js/dist/dom/selector-engine.js +1 -1
  40. package/js/dist/dropdown.js +6 -3
  41. package/js/dist/dropdown.js.map +1 -1
  42. package/js/dist/modal.js +1 -1
  43. package/js/dist/offcanvas.js +1 -1
  44. package/js/dist/popover.js +1 -1
  45. package/js/dist/scrollspy.js +1 -1
  46. package/js/dist/tab.js +1 -1
  47. package/js/dist/toast.js +1 -2
  48. package/js/dist/toast.js.map +1 -1
  49. package/js/dist/tooltip.js +4 -5
  50. package/js/dist/tooltip.js.map +1 -1
  51. package/js/dist/util/backdrop.js +1 -1
  52. package/js/dist/util/component-functions.js +1 -1
  53. package/js/dist/util/config.js +1 -1
  54. package/js/dist/util/focustrap.js +1 -1
  55. package/js/dist/util/index.js +2 -2
  56. package/js/dist/util/index.js.map +1 -1
  57. package/js/dist/util/scrollbar.js +1 -1
  58. package/js/dist/util/swipe.js +1 -1
  59. package/js/dist/util/template-factory.js +2 -2
  60. package/js/dist/util/template-factory.js.map +1 -1
  61. package/js/src/base-component.js +2 -1
  62. package/js/src/collapse.js +1 -1
  63. package/js/src/dom/manipulator.js +1 -1
  64. package/js/src/dropdown.js +5 -2
  65. package/js/src/toast.js +0 -1
  66. package/js/src/tooltip.js +3 -4
  67. package/js/src/util/index.js +2 -2
  68. package/js/src/util/template-factory.js +1 -1
  69. package/package.json +5 -5
  70. package/scss/_accordion.scss +4 -9
  71. package/scss/_button-group.scss +8 -3
  72. package/scss/_card.scss +9 -10
  73. package/scss/_carousel.scss +15 -25
  74. package/scss/_close.scss +9 -6
  75. package/scss/_functions.scss +1 -1
  76. package/scss/_list-group.scss +27 -25
  77. package/scss/_modal.scss +6 -2
  78. package/scss/_nav.scss +1 -1
  79. package/scss/_navbar.scss +1 -1
  80. package/scss/_offcanvas.scss +5 -1
  81. package/scss/_pagination.scss +1 -1
  82. package/scss/_progress.scss +1 -1
  83. package/scss/_reboot.scss +1 -1
  84. package/scss/_type.scss +1 -1
  85. package/scss/_variables-dark.scss +17 -2
  86. package/scss/_variables.scss +16 -14
  87. package/scss/forms/_floating-labels.scss +18 -16
  88. package/scss/forms/_input-group.scss +1 -1
  89. package/scss/mixins/_banner.scss +2 -2
  90. package/scss/mixins/_grid.scss +1 -1
  91. package/scss/mixins/_visually-hidden.scss +6 -1
@@ -43,31 +43,6 @@
43
43
  }
44
44
  }
45
45
 
46
- // Interactive list items
47
- //
48
- // Use anchor or button elements instead of `li`s or `div`s to create interactive
49
- // list items. Includes an extra `.active` modifier class for selected items.
50
-
51
- .list-group-item-action {
52
- width: 100%; // For `<button>`s (anchors become 100% by default though)
53
- color: var(--#{$prefix}list-group-action-color);
54
- text-align: inherit; // For `<button>`s (anchors inherit)
55
-
56
- // Hover state
57
- &:hover,
58
- &:focus {
59
- z-index: 1; // Place hover/focus items above their siblings for proper border styling
60
- color: var(--#{$prefix}list-group-action-hover-color);
61
- text-decoration: none;
62
- background-color: var(--#{$prefix}list-group-action-hover-bg);
63
- }
64
-
65
- &:active {
66
- color: var(--#{$prefix}list-group-action-active-color);
67
- background-color: var(--#{$prefix}list-group-action-active-bg);
68
- }
69
- }
70
-
71
46
  // Individual list items
72
47
  //
73
48
  // Use on `li`s or `div`s within the `.list-group` parent.
@@ -115,6 +90,33 @@
115
90
  }
116
91
  }
117
92
 
93
+ // Interactive list items
94
+ //
95
+ // Use anchor or button elements instead of `li`s or `div`s to create interactive
96
+ // list items. Includes an extra `.active` modifier class for selected items.
97
+
98
+ .list-group-item-action {
99
+ width: 100%; // For `<button>`s (anchors become 100% by default though)
100
+ color: var(--#{$prefix}list-group-action-color);
101
+ text-align: inherit; // For `<button>`s (anchors inherit)
102
+
103
+ &:not(.active) {
104
+ // Hover state
105
+ &:hover,
106
+ &:focus {
107
+ z-index: 1; // Place hover/focus items above their siblings for proper border styling
108
+ color: var(--#{$prefix}list-group-action-hover-color);
109
+ text-decoration: none;
110
+ background-color: var(--#{$prefix}list-group-action-hover-bg);
111
+ }
112
+
113
+ &:active {
114
+ color: var(--#{$prefix}list-group-action-active-color);
115
+ background-color: var(--#{$prefix}list-group-action-active-bg);
116
+ }
117
+ }
118
+ }
119
+
118
120
  // Horizontal
119
121
  //
120
122
  // Change the layout of list group items from vertical (default) to horizontal.
package/scss/_modal.scss CHANGED
@@ -59,8 +59,8 @@
59
59
 
60
60
  // When fading in the modal, animate it to slide down
61
61
  .modal.fade & {
62
- @include transition($modal-transition);
63
62
  transform: $modal-fade-transform;
63
+ @include transition($modal-transition);
64
64
  }
65
65
  .modal.show & {
66
66
  transform: $modal-show-transform;
@@ -132,7 +132,11 @@
132
132
 
133
133
  .btn-close {
134
134
  padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
135
- margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
135
+ // Split properties to avoid invalid calc() function if value is 0
136
+ margin-top: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
137
+ margin-right: calc(-.5 * var(--#{$prefix}modal-header-padding-x));
138
+ margin-bottom: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
139
+ margin-left: auto;
136
140
  }
137
141
  }
138
142
 
package/scss/_nav.scss CHANGED
@@ -169,8 +169,8 @@
169
169
  .nav-justified {
170
170
  > .nav-link,
171
171
  .nav-item {
172
- flex-basis: 0;
173
172
  flex-grow: 1;
173
+ flex-basis: 0;
174
174
  text-align: center;
175
175
  }
176
176
  }
package/scss/_navbar.scss CHANGED
@@ -139,8 +139,8 @@
139
139
  // the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
140
140
  // on the `.navbar` parent.
141
141
  .navbar-collapse {
142
- flex-basis: 100%;
143
142
  flex-grow: 1;
143
+ flex-basis: 100%;
144
144
  // For always expanded or extra full navbars, ensure content aligns itself
145
145
  // properly vertically. Can be easily overridden with flex utilities.
146
146
  align-items: center;
@@ -127,7 +127,11 @@
127
127
 
128
128
  .btn-close {
129
129
  padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
130
- margin: calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) calc(-.5 * var(--#{$prefix}offcanvas-padding-x)) calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) auto;
130
+ // Split properties to avoid invalid calc() function if value is 0
131
+ margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
132
+ margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
133
+ margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
134
+ margin-left: auto;
131
135
  }
132
136
  }
133
137
 
@@ -75,7 +75,7 @@
75
75
  margin-left: $pagination-margin-start;
76
76
  }
77
77
 
78
- @if $pagination-margin-start == calc(#{$pagination-border-width} * -1) {
78
+ @if $pagination-margin-start == calc(-1 * #{$pagination-border-width}) {
79
79
  &:first-child {
80
80
  .page-link {
81
81
  @include border-start-radius(var(--#{$prefix}pagination-border-radius));
@@ -3,7 +3,7 @@
3
3
  // scss-docs-start progress-keyframes
4
4
  @if $enable-transitions {
5
5
  @keyframes progress-bar-stripes {
6
- 0% { background-position-x: $progress-height; }
6
+ 0% { background-position-x: var(--#{$prefix}progress-height); }
7
7
  }
8
8
  }
9
9
  // scss-docs-end progress-keyframes
package/scss/_reboot.scss CHANGED
@@ -499,9 +499,9 @@ legend {
499
499
  width: 100%;
500
500
  padding: 0;
501
501
  margin-bottom: $legend-margin-bottom;
502
- @include font-size($legend-font-size);
503
502
  font-weight: $legend-font-weight;
504
503
  line-height: inherit;
504
+ @include font-size($legend-font-size);
505
505
 
506
506
  + * {
507
507
  clear: left; // 2
package/scss/_type.scss CHANGED
@@ -34,11 +34,11 @@
34
34
  // Type display classes
35
35
  @each $display, $font-size in $display-font-sizes {
36
36
  .display-#{$display} {
37
- @include font-size($font-size);
38
37
  font-family: $display-font-family;
39
38
  font-style: $display-font-style;
40
39
  font-weight: $display-font-weight;
41
40
  line-height: $display-line-height;
41
+ @include font-size($font-size);
42
42
  }
43
43
  }
44
44
 
@@ -82,6 +82,21 @@ $form-invalid-border-color-dark: $red-300 !default;
82
82
  $accordion-icon-color-dark: $primary-text-emphasis-dark !default;
83
83
  $accordion-icon-active-color-dark: $primary-text-emphasis-dark !default;
84
84
 
85
- $accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path 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'/></svg>") !default;
86
- $accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path 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'/></svg>") !default;
85
+ $accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path 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'/></svg>") !default;
86
+ $accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path 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'/></svg>") !default;
87
87
  // scss-docs-end sass-dark-mode-vars
88
+
89
+
90
+ //
91
+ // Carousel
92
+ //
93
+
94
+ $carousel-indicator-active-bg-dark: $carousel-dark-indicator-active-bg !default;
95
+ $carousel-caption-color-dark: $carousel-dark-caption-color !default;
96
+ $carousel-control-icon-filter-dark: $carousel-dark-control-icon-filter !default;
97
+
98
+ //
99
+ // Close button
100
+ //
101
+
102
+ $btn-close-filter-dark: $btn-close-white-filter !default;
@@ -67,8 +67,8 @@ $colors: (
67
67
  ) !default;
68
68
  // scss-docs-end colors-map
69
69
 
70
- // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
71
- // See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
70
+ // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.2 are 3, 4.5 and 7.
71
+ // See https://www.w3.org/TR/WCAG/#contrast-minimum
72
72
  $min-contrast-ratio: 4.5 !default;
73
73
 
74
74
  // Customize the light and dark text colors for use in our color contrast function.
@@ -1091,7 +1091,7 @@ $form-feedback-valid-color: $success !default;
1091
1091
  $form-feedback-invalid-color: $danger !default;
1092
1092
 
1093
1093
  $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
1094
- $form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' 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'/></svg>") !default;
1094
+ $form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' 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'/></svg>") !default;
1095
1095
  $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
1096
1096
  $form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
1097
1097
  // scss-docs-end form-feedback-variables
@@ -1302,7 +1302,7 @@ $pagination-color: var(--#{$prefix}link-color) !default;
1302
1302
  $pagination-bg: var(--#{$prefix}body-bg) !default;
1303
1303
  $pagination-border-radius: var(--#{$prefix}border-radius) !default;
1304
1304
  $pagination-border-width: var(--#{$prefix}border-width) !default;
1305
- $pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list
1305
+ $pagination-margin-start: calc(-1 * #{$pagination-border-width}) !default; // stylelint-disable-line function-disallowed-list
1306
1306
  $pagination-border-color: var(--#{$prefix}border-color) !default;
1307
1307
 
1308
1308
  $pagination-focus-color: var(--#{$prefix}link-hover-color) !default;
@@ -1394,8 +1394,8 @@ $accordion-icon-active-color: $primary-text-emphasis !default;
1394
1394
  $accordion-icon-transition: transform .2s ease-in-out !default;
1395
1395
  $accordion-icon-transform: rotate(-180deg) !default;
1396
1396
 
1397
- $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
1398
- $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
1397
+ $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
1398
+ $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
1399
1399
  // scss-docs-end accordion-variables
1400
1400
 
1401
1401
  // Tooltips
@@ -1507,7 +1507,7 @@ $modal-dialog-margin-y-sm-up: 1.75rem !default;
1507
1507
 
1508
1508
  $modal-title-line-height: $line-height-base !default;
1509
1509
 
1510
- $modal-content-color: null !default;
1510
+ $modal-content-color: var(--#{$prefix}body-color) !default;
1511
1511
  $modal-content-bg: var(--#{$prefix}body-bg) !default;
1512
1512
  $modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;
1513
1513
  $modal-content-border-width: var(--#{$prefix}border-width) !default;
@@ -1652,6 +1652,7 @@ $carousel-control-width: 15% !default;
1652
1652
  $carousel-control-opacity: .5 !default;
1653
1653
  $carousel-control-hover-opacity: .9 !default;
1654
1654
  $carousel-control-transition: opacity .15s ease !default;
1655
+ $carousel-control-icon-filter: null !default;
1655
1656
 
1656
1657
  $carousel-indicator-width: 30px !default;
1657
1658
  $carousel-indicator-height: 3px !default;
@@ -1669,17 +1670,17 @@ $carousel-caption-spacer: 1.25rem !default;
1669
1670
 
1670
1671
  $carousel-control-icon-width: 2rem !default;
1671
1672
 
1672
- $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path 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'/></svg>") !default;
1673
- $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path 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'/></svg>") !default;
1673
+ $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path 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'/></svg>") !default;
1674
+ $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path 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'/></svg>") !default;
1674
1675
 
1675
1676
  $carousel-transition-duration: .6s !default;
1676
1677
  $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`)
1677
1678
  // scss-docs-end carousel-variables
1678
1679
 
1679
1680
  // scss-docs-start carousel-dark-variables
1680
- $carousel-dark-indicator-active-bg: $black !default;
1681
- $carousel-dark-caption-color: $black !default;
1682
- $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
1681
+ $carousel-dark-indicator-active-bg: $black !default; // Deprecated in v5.3.4
1682
+ $carousel-dark-caption-color: $black !default; // Deprecated in v5.3.4
1683
+ $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default; // Deprecated in v5.3.4
1683
1684
  // scss-docs-end carousel-dark-variables
1684
1685
 
1685
1686
 
@@ -1706,13 +1707,14 @@ $btn-close-height: $btn-close-width !default;
1706
1707
  $btn-close-padding-x: .25em !default;
1707
1708
  $btn-close-padding-y: $btn-close-padding-x !default;
1708
1709
  $btn-close-color: $black !default;
1709
- $btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path 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'/></svg>") !default;
1710
+ $btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path 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'/></svg>") !default;
1710
1711
  $btn-close-focus-shadow: $focus-ring-box-shadow !default;
1711
1712
  $btn-close-opacity: .5 !default;
1712
1713
  $btn-close-hover-opacity: .75 !default;
1713
1714
  $btn-close-focus-opacity: 1 !default;
1714
1715
  $btn-close-disabled-opacity: .25 !default;
1715
- $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
1716
+ $btn-close-filter: null !default;
1717
+ $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default; // Deprecated in v5.3.4
1716
1718
  // scss-docs-end close-variables
1717
1719
 
1718
1720
 
@@ -14,9 +14,11 @@
14
14
  top: 0;
15
15
  left: 0;
16
16
  z-index: 2;
17
+ max-width: 100%;
17
18
  height: 100%; // allow textareas
18
19
  padding: $form-floating-padding-y $form-floating-padding-x;
19
20
  overflow: hidden;
21
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
20
22
  text-align: start;
21
23
  text-overflow: ellipsis;
22
24
  white-space: nowrap;
@@ -49,6 +51,7 @@
49
51
  > .form-select {
50
52
  padding-top: $form-floating-input-padding-t;
51
53
  padding-bottom: $form-floating-input-padding-b;
54
+ padding-left: $form-floating-padding-x;
52
55
  }
53
56
 
54
57
  > .form-control:focus,
@@ -56,27 +59,30 @@
56
59
  > .form-control-plaintext,
57
60
  > .form-select {
58
61
  ~ label {
59
- color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
60
62
  transform: $form-floating-label-transform;
61
-
62
- &::after {
63
- position: absolute;
64
- inset: $form-floating-padding-y ($form-floating-padding-x * .5);
65
- z-index: -1;
66
- height: $form-floating-label-height;
67
- content: "";
68
- background-color: $input-bg;
69
- @include border-radius($input-border-radius);
70
- }
71
63
  }
72
64
  }
73
65
  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
74
66
  > .form-control:-webkit-autofill {
75
67
  ~ label {
76
- color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
77
68
  transform: $form-floating-label-transform;
78
69
  }
79
70
  }
71
+ > textarea:focus,
72
+ > textarea:not(:placeholder-shown) {
73
+ ~ label::after {
74
+ position: absolute;
75
+ inset: $form-floating-padding-y ($form-floating-padding-x * .5);
76
+ z-index: -1;
77
+ height: $form-floating-label-height;
78
+ content: "";
79
+ background-color: $input-bg;
80
+ @include border-radius($input-border-radius);
81
+ }
82
+ }
83
+ > textarea:disabled ~ label::after {
84
+ background-color: $input-disabled-bg;
85
+ }
80
86
 
81
87
  > .form-control-plaintext {
82
88
  ~ label {
@@ -87,9 +93,5 @@
87
93
  > :disabled ~ label,
88
94
  > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity
89
95
  color: $form-floating-label-disabled-color;
90
-
91
- &::after {
92
- background-color: $input-disabled-bg;
93
- }
94
96
  }
95
97
  }
@@ -121,7 +121,7 @@
121
121
  }
122
122
 
123
123
  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
124
- margin-left: calc(#{$input-border-width} * -1); // stylelint-disable-line function-disallowed-list
124
+ margin-left: calc(-1 * #{$input-border-width}); // stylelint-disable-line function-disallowed-list
125
125
  @include border-start-radius(0);
126
126
  }
127
127
 
@@ -1,7 +1,7 @@
1
1
  @mixin bsBanner($file) {
2
2
  /*!
3
- * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)
4
- * Copyright 2011-2024 The Bootstrap Authors
3
+ * Bootstrap #{$file} v5.3.6 (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
  }
@@ -72,7 +72,7 @@
72
72
  @include media-breakpoint-up($breakpoint, $breakpoints) {
73
73
  // Provide basic `.col-{bp}` classes for equal-width flexbox columns
74
74
  .col#{$infix} {
75
- flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
75
+ flex: 1 0 0;
76
76
  }
77
77
 
78
78
  .row-cols#{$infix}-auto > * {
@@ -19,12 +19,17 @@
19
19
  &:not(caption) {
20
20
  position: absolute !important;
21
21
  }
22
+
23
+ // Fix to prevent overflowing children to become focusable
24
+ * {
25
+ overflow: hidden !important;
26
+ }
22
27
  }
23
28
 
24
29
  // Use to only display content when it's focused, or one of its child elements is focused
25
30
  // (i.e. when focus is within the element/container that the class was applied to)
26
31
  //
27
- // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
32
+ // Useful for "Skip to main content" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html
28
33
 
29
34
  @mixin visually-hidden-focusable() {
30
35
  &:not(:focus):not(:focus-within) {