@unlk/keymaster 1.0.2 → 1.0.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 (49) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +136 -0
  3. package/dist/css/keymaster.css +642 -588
  4. package/dist/css/keymaster.css.map +1 -1
  5. package/dist/css/keymaster.min.css +5 -5
  6. package/dist/css/keymaster.min.css.map +1 -1
  7. package/dist/js/keymaster.js +180 -80
  8. package/dist/js/keymaster.js.map +1 -1
  9. package/dist/js/keymaster.min.js +65 -65
  10. package/dist/js/keymaster.min.js.map +1 -1
  11. package/images/unlock.svg +9 -0
  12. package/js/bootstrap.js +1 -0
  13. package/js/video-modal.js +123 -0
  14. package/package.json +5 -3
  15. package/scss/assets/bootstrap5/_accordion.scss +4 -9
  16. package/scss/assets/bootstrap5/_button-group.scss +8 -3
  17. package/scss/assets/bootstrap5/_card.scss +1 -2
  18. package/scss/assets/bootstrap5/_carousel.scss +15 -25
  19. package/scss/assets/bootstrap5/_close.scss +9 -6
  20. package/scss/assets/bootstrap5/_functions.scss +1 -1
  21. package/scss/assets/bootstrap5/_list-group.scss +27 -25
  22. package/scss/assets/bootstrap5/_modal.scss +6 -2
  23. package/scss/assets/bootstrap5/_nav.scss +1 -1
  24. package/scss/assets/bootstrap5/_navbar.scss +1 -1
  25. package/scss/assets/bootstrap5/_offcanvas.scss +5 -1
  26. package/scss/assets/bootstrap5/_pagination.scss +1 -1
  27. package/scss/assets/bootstrap5/_progress.scss +1 -1
  28. package/scss/assets/bootstrap5/_reboot.scss +1 -1
  29. package/scss/assets/bootstrap5/_type.scss +1 -1
  30. package/scss/assets/bootstrap5/_variables-dark.scss +17 -2
  31. package/scss/assets/bootstrap5/_variables.scss +16 -16
  32. package/scss/assets/bootstrap5/forms/_floating-labels.scss +18 -16
  33. package/scss/assets/bootstrap5/forms/_input-group.scss +1 -1
  34. package/scss/assets/bootstrap5/mixins/_banner.scss +2 -2
  35. package/scss/assets/bootstrap5/mixins/_grid.scss +1 -1
  36. package/scss/assets/bootstrap5/mixins/_visually-hidden.scss +1 -1
  37. package/scss/keymaster.scss +3 -0
  38. package/scss/theme/_accordion.scss +13 -3
  39. package/scss/theme/_alert.scss +2 -0
  40. package/scss/theme/_badge.scss +1 -1
  41. package/scss/theme/_buttons.scss +5 -5
  42. package/scss/theme/_carousel.scss +3 -6
  43. package/scss/theme/_close.scss +3 -0
  44. package/scss/theme/_modal.scss +35 -0
  45. package/scss/theme/_spinners.scss +9 -0
  46. package/scss/theme/_typography.scss +8 -13
  47. package/scss/theme/_utilities-overrides.scss +33 -33
  48. package/scss/theme/_variables-overrides.scss +15 -8
  49. package/scss/theme/_variables.scss +12 -0
@@ -0,0 +1,9 @@
1
+ <svg width="54" height="88" viewBox="0 0 54 88" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M42.5456 70.7213H53.182L31.9092 42.5022H21.2728L42.5456 70.7213Z" fill="#CBEBF8"/>
3
+ <path d="M42.5456 70.7213H31.9092V88H42.5456V70.7213Z" fill="#CBEBF8"/>
4
+ <path d="M31.9092 70.7213H42.5456L21.2728 42.5022H10.6364L31.9092 70.7213Z" fill="#66CDF3"/>
5
+ <path d="M31.9092 70.7213V88H21.2728V70.7213H31.9092Z" fill="#66CDF3"/>
6
+ <path d="M21.2728 70.7213H31.9092L10.6364 42.5022V21.2728C10.6364 15.4119 15.4119 10.6364 21.2728 10.6364C27.1337 10.6364 31.9092 15.4119 31.9092 21.2728V25.701H42.5456V21.2728C42.5456 9.50765 33.038 0 21.2728 0C9.50765 0 0.0434132 9.50765 0.0434132 21.2294V42.4588L21.2728 70.7213Z" fill="#3A7BBE"/>
7
+ <path d="M21.2728 70.7213V88H16.2802C14.2832 88 12.4164 87.6527 10.6364 87.0015V70.7213H21.2728Z" fill="#3A7BBE"/>
8
+ <path d="M0.0434139 42.5022L21.2728 70.7647H10.6364V87.0449C4.42822 84.744 0 78.7962 0 71.8066V42.4154V42.5022H0.0434139Z" fill="#3E51A2"/>
9
+ </svg>
package/js/bootstrap.js CHANGED
@@ -12,3 +12,4 @@ export { default as Tab } from 'bootstrap/js/dist/tab';
12
12
  export { default as Tooltip } from 'bootstrap/js/dist/tooltip';
13
13
  export { default as Datepicker } from './datepicker';
14
14
  export { default as CarouselCaption } from './carousel-caption';
15
+ export { default as VideoModal } from './video-modal';
@@ -0,0 +1,123 @@
1
+ // Load YouTube API
2
+ // eslint-disable-next-line no-unused-vars
3
+ let youTubeAPIReady = false;
4
+ const youTubeAPIInitPromise = new Promise((resolve) => {
5
+ if (window.YT?.Player) {
6
+ youTubeAPIReady = true;
7
+ resolve();
8
+ } else {
9
+ window.onYouTubeIframeAPIReady = () => {
10
+ youTubeAPIReady = true;
11
+ resolve();
12
+ };
13
+
14
+ const ytScript = document.createElement('script');
15
+ ytScript.src = 'https://www.youtube.com/iframe_api';
16
+ document.head.append(ytScript);
17
+ }
18
+ });
19
+
20
+ // Load Vimeo API
21
+ // eslint-disable-next-line no-unused-vars
22
+ let vimeoAPIReady = false;
23
+ const vimeoAPIInitPromise = new Promise((resolve) => {
24
+ if (window.Vimeo?.Player) {
25
+ vimeoAPIReady = true;
26
+ resolve();
27
+ } else {
28
+ const vimeoScript = document.createElement('script');
29
+ vimeoScript.src = 'https://player.vimeo.com/api/player.js';
30
+ vimeoScript.addEventListener('load', () => {
31
+ vimeoAPIReady = true;
32
+ resolve();
33
+ });
34
+
35
+ document.head.append(vimeoScript);
36
+ }
37
+ });
38
+
39
+ class VideoModal {
40
+ constructor(modal) {
41
+ this.modal = modal;
42
+ this.dialog = modal.querySelector('.modal-dialog-media');
43
+ this.container = modal.querySelector('.ratio');
44
+ if (!this.dialog || !this.container) {
45
+ return;
46
+ }
47
+
48
+ this.modalId = modal.id;
49
+ this.youtubeSrc = this.container.getAttribute('data-src');
50
+ this.vimeoUrl = this.container.getAttribute('data-vimeo-url');
51
+ this.vimeoPlayer = null;
52
+ this.youtubePlayer = null;
53
+
54
+ modal.addEventListener('show.bs.modal', () => this.onShow());
55
+ modal.addEventListener('hidden.bs.modal', () => this.onHide());
56
+ }
57
+
58
+ async onShow() {
59
+ const playerClass = `${this.modalId}-youtube-player`;
60
+
61
+ if (this.vimeoUrl) {
62
+ const vimeoId = this.getVimeoId(this.vimeoUrl);
63
+ await vimeoAPIInitPromise;
64
+
65
+ this.vimeoPlayer = new window.Vimeo.Player(this.container, {
66
+ id: vimeoId,
67
+ autoplay: true
68
+ });
69
+ }
70
+
71
+ if (this.youtubeSrc) {
72
+ const youtubeId = this.getYouTubeId(this.youtubeSrc);
73
+ await youTubeAPIInitPromise;
74
+
75
+ // Dynamically insert YouTube div
76
+ this.container.innerHTML = `<div class="${playerClass} w-100 h-100"></div>`;
77
+ const playerDiv = this.container.querySelector(`.${playerClass}`);
78
+
79
+ // eslint-disable-next-line no-undef
80
+ this.youtubePlayer = new YT.Player(playerDiv, {
81
+ videoId: youtubeId,
82
+ playerVars: { autoplay: 1, rel: 0 }
83
+ });
84
+ }
85
+ }
86
+
87
+ onHide() {
88
+ if (this.vimeoPlayer) {
89
+ this.vimeoPlayer.unload().catch(() => {});
90
+ this.vimeoPlayer = null;
91
+ }
92
+
93
+ if (this.youtubePlayer) {
94
+ this.youtubePlayer.destroy();
95
+ this.youtubePlayer = null;
96
+ }
97
+ }
98
+
99
+ getYouTubeId(url) {
100
+ const match = url.match(/(?:v=|youtu\.be\/)([\w-]{11})/);
101
+ return match ? match[1] : '';
102
+ }
103
+
104
+ getVimeoId(url) {
105
+ const match = url.match(/vimeo\.com\/(\d+)/);
106
+ return match ? match[1] : '';
107
+ }
108
+ }
109
+
110
+ // Auto-init for all triggered modals with dialog-media
111
+ document.addEventListener('DOMContentLoaded', () => {
112
+ for (const button of document.querySelectorAll('[data-bs-toggle="modal"][data-bs-target]')) {
113
+ const targetSelector = button.getAttribute('data-bs-target');
114
+ const modal = document.querySelector(targetSelector);
115
+
116
+ if (modal?.querySelector('.modal-dialog-media')) {
117
+ // eslint-disable-next-line no-new
118
+ new VideoModal(modal);
119
+ }
120
+ }
121
+ });
122
+
123
+ export default VideoModal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unlk/keymaster",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -32,7 +32,9 @@
32
32
  "scss",
33
33
  "js",
34
34
  "fonts",
35
- "CHANGELOG.md"
35
+ "README.md",
36
+ "CHANGELOG.md",
37
+ "images"
36
38
  ],
37
39
  "engines": {
38
40
  "node": ">=14"
@@ -73,7 +75,7 @@
73
75
  "postcss": "^8.4.4",
74
76
  "postcss-cli": "^9.0.2",
75
77
  "rollup": "^2.60.2",
76
- "sass": "1.78.0",
78
+ "sass": "^1.87.0",
77
79
  "terser": "^5.10.0"
78
80
  },
79
81
  "config": {
@@ -134,17 +134,12 @@
134
134
  &:last-child { border-bottom: 0; }
135
135
 
136
136
  // stylelint-disable selector-max-class
137
- > .accordion-header .accordion-button {
138
- &,
139
- &.collapsed {
140
- @include border-radius(0);
141
- }
142
- }
143
- // stylelint-enable selector-max-class
144
-
145
- > .accordion-collapse {
137
+ > .accordion-collapse,
138
+ > .accordion-header .accordion-button,
139
+ > .accordion-header .accordion-button.collapsed {
146
140
  @include border-radius(0);
147
141
  }
142
+ // stylelint-enable selector-max-class
148
143
  }
149
144
  }
150
145
 
@@ -39,7 +39,7 @@
39
39
  // Prevent double borders when buttons are next to each other
40
40
  > :not(.btn-check:first-child) + .btn,
41
41
  > .btn-group:not(:first-child) {
42
- margin-left: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
42
+ margin-left: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
43
43
  }
44
44
 
45
45
  // Reset rounded corners
@@ -126,7 +126,7 @@
126
126
 
127
127
  > .btn:not(:first-child),
128
128
  > .btn-group:not(:first-child) {
129
- margin-top: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
129
+ margin-top: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
130
130
  }
131
131
 
132
132
  // Reset rounded corners
@@ -135,7 +135,12 @@
135
135
  @include border-bottom-radius(0);
136
136
  }
137
137
 
138
- > .btn ~ .btn,
138
+ // The top radius should be 0 if the button is:
139
+ // - the "third or more" child
140
+ // - the second child and the previous element isn't `.btn-check` (making it the first child visually)
141
+ // - part of a btn-group which isn't the first child
142
+ > .btn:nth-child(n + 3),
143
+ > :not(.btn-check) + .btn,
139
144
  > .btn-group:not(:first-child) > .btn {
140
145
  @include border-top-radius(0);
141
146
  }
@@ -193,8 +193,7 @@
193
193
  // The child selector allows nested `.card` within `.card-group`
194
194
  // to display properly.
195
195
  > .card {
196
- // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
197
- flex: 1 0 0%;
196
+ flex: 1 0 0;
198
197
  margin-bottom: 0;
199
198
 
200
199
  + .card {
@@ -99,6 +99,7 @@
99
99
  color: $carousel-control-color;
100
100
  text-align: center;
101
101
  background: none;
102
+ filter: var(--#{$prefix}carousel-control-icon-filter);
102
103
  border: 0;
103
104
  opacity: $carousel-control-opacity;
104
105
  @include transition($carousel-control-transition);
@@ -168,7 +169,7 @@
168
169
  margin-left: $carousel-indicator-spacer;
169
170
  text-indent: -999px;
170
171
  cursor: pointer;
171
- background-color: $carousel-indicator-active-bg;
172
+ background-color: var(--#{$prefix}carousel-indicator-active-bg);
172
173
  background-clip: padding-box;
173
174
  border: 0;
174
175
  // Use transparent borders to increase the hit area by 10px on top and bottom.
@@ -195,42 +196,31 @@
195
196
  left: (100% - $carousel-caption-width) * .5;
196
197
  padding-top: $carousel-caption-padding-y;
197
198
  padding-bottom: $carousel-caption-padding-y;
198
- color: $carousel-caption-color;
199
+ color: var(--#{$prefix}carousel-caption-color);
199
200
  text-align: center;
200
201
  }
201
202
 
202
203
  // Dark mode carousel
203
204
 
204
205
  @mixin carousel-dark() {
205
- .carousel-control-prev-icon,
206
- .carousel-control-next-icon {
207
- filter: $carousel-dark-control-icon-filter;
208
- }
209
-
210
- .carousel-indicators [data-bs-target] {
211
- background-color: $carousel-dark-indicator-active-bg;
212
- }
213
-
214
- .carousel-caption {
215
- color: $carousel-dark-caption-color;
216
- }
206
+ --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark};
207
+ --#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark};
208
+ --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark};
217
209
  }
218
210
 
219
211
  .carousel-dark {
220
212
  @include carousel-dark();
221
213
  }
222
214
 
215
+ :root,
216
+ [data-bs-theme="light"] {
217
+ --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
218
+ --#{$prefix}carousel-caption-color: #{$carousel-caption-color};
219
+ --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter};
220
+ }
221
+
223
222
  @if $enable-dark-mode {
224
- @include color-mode(dark) {
225
- @if $color-mode-type == "media-query" {
226
- .carousel {
227
- @include carousel-dark();
228
- }
229
- } @else {
230
- .carousel,
231
- &.carousel {
232
- @include carousel-dark();
233
- }
234
- }
223
+ @include color-mode(dark, true) {
224
+ @include carousel-dark();
235
225
  }
236
226
  }
@@ -12,7 +12,6 @@
12
12
  --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
13
13
  --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
14
14
  --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
15
- --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
16
15
  // scss-docs-end close-css-vars
17
16
 
18
17
  box-sizing: content-box;
@@ -21,6 +20,7 @@
21
20
  padding: $btn-close-padding-y $btn-close-padding-x;
22
21
  color: var(--#{$prefix}btn-close-color);
23
22
  background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
23
+ filter: var(--#{$prefix}btn-close-filter);
24
24
  border: 0; // for button elements
25
25
  @include border-radius();
26
26
  opacity: var(--#{$prefix}btn-close-opacity);
@@ -47,17 +47,20 @@
47
47
  }
48
48
 
49
49
  @mixin btn-close-white() {
50
- filter: var(--#{$prefix}btn-close-white-filter);
50
+ --#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
51
51
  }
52
52
 
53
53
  .btn-close-white {
54
54
  @include btn-close-white();
55
55
  }
56
56
 
57
+ :root,
58
+ [data-bs-theme="light"] {
59
+ --#{$prefix}btn-close-filter: #{$btn-close-filter};
60
+ }
61
+
57
62
  @if $enable-dark-mode {
58
- @include color-mode(dark) {
59
- .btn-close {
60
- @include btn-close-white();
61
- }
63
+ @include color-mode(dark, true) {
64
+ @include btn-close-white();
62
65
  }
63
66
  }
@@ -177,7 +177,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
177
177
  @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
178
178
  }
179
179
 
180
- // Return WCAG2.1 relative luminance
180
+ // Return WCAG2.2 relative luminance
181
181
  // See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
182
182
  // See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
183
183
  @function luminance($color) {
@@ -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.
@@ -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
 
@@ -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
  }
@@ -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
@@ -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
@@ -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;