@swisspost/design-system-styles 6.2.6 → 6.3.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 (42) hide show
  1. package/_svg-icon-map.scss +3 -1
  2. package/basics.css +3 -1
  3. package/components/_index.scss +1 -0
  4. package/components/accordion.scss +70 -57
  5. package/components/alert.scss +84 -158
  6. package/components/badge.scss +0 -1
  7. package/components/close.scss +12 -23
  8. package/components/form-textarea.scss +12 -0
  9. package/components/modal.scss +20 -12
  10. package/components/stepper.scss +3 -7
  11. package/components/toast.scss +65 -129
  12. package/components/type.scss +4 -0
  13. package/components/utilities.scss +2 -12
  14. package/functions/_icons.scss +6 -2
  15. package/index.css +8 -16
  16. package/intranet.css +9 -17
  17. package/mixins/_button.scss +1 -1
  18. package/mixins/_color.scss +16 -0
  19. package/mixins/_icons.scss +11 -3
  20. package/mixins/_index.scss +4 -0
  21. package/mixins/_notification.scss +112 -0
  22. package/package.json +8 -8
  23. package/placeholders/_close.scss +33 -0
  24. package/placeholders/_index.scss +1 -1
  25. package/placeholders/_notification.scss +13 -0
  26. package/placeholders/badge.scss +0 -4
  27. package/schematics/migrations/general/classes/rtl.js +25 -13
  28. package/schematics/migrations/general/classes/rtl.js.map +1 -1
  29. package/themes/bootstrap/_overrides-variables.scss +2 -3
  30. package/variables/_commons.scss +1 -1
  31. package/variables/_icons.scss +1 -0
  32. package/variables/components/_accordion.scss +32 -14
  33. package/variables/components/_badge.scss +2 -2
  34. package/variables/components/_button.scss +18 -8
  35. package/variables/components/_close.scss +8 -4
  36. package/variables/components/_index.scss +2 -3
  37. package/variables/components/{_modals.scss → _modal.scss} +3 -3
  38. package/variables/components/_notification.scss +84 -0
  39. package/variables/components/_stepper.scss +3 -3
  40. package/placeholders/_notifications.scss +0 -128
  41. package/variables/components/_alert.scss +0 -51
  42. package/variables/components/_toasts.scss +0 -18
@@ -14,6 +14,7 @@
14
14
  @use 'elevation';
15
15
  @use 'form-range';
16
16
  @use 'form-select';
17
+ @use 'form-textarea';
17
18
  @use 'datatable';
18
19
  @use 'form-check';
19
20
  @use 'forms';
@@ -1,94 +1,107 @@
1
1
  @forward './../variables/options';
2
2
 
3
- @use './../lic/bootstrap-license';
4
- @use './../themes/bootstrap/core' as *;
5
- @use './../themes/bootstrap/accordion' as ba;
3
+ @use './../mixins/button' as button-mixins;
4
+ @use './../mixins/color' as color-mixins;
5
+ @use './../mixins/icons' as icon-mixins;
6
+ @use './../mixins/type' as type-mixins;
7
+ @use './../mixins/utilities' as utility-mixins;
6
8
 
7
- @use './../mixins/type';
8
- @use './../mixins/utilities';
9
- @use './../variables/spacing';
10
9
  @use './../variables/components/accordion';
11
- @use './../variables/components/button';
12
10
 
13
11
  .accordion-item {
14
- border-right: 0;
15
- border-left: 0;
16
- background-color: transparent;
12
+ border-block-start: accordion.$accordion-border-width solid accordion.$accordion-border-color;
13
+ }
17
14
 
18
- &:last-of-type {
19
- border-bottom: 0;
20
- }
15
+ .accordion-header {
16
+ @include type-mixins.font-curve(accordion.$accordion-header-font-curve);
17
+ font-weight: accordion.$accordion-header-font-weight;
18
+ line-height: accordion.$accordion-header-line-height;
19
+ margin: 0;
21
20
  }
22
21
 
23
22
  .accordion-button {
24
- @include type.font-curve(accordion.$accordion-font-curve);
23
+ @include button-mixins.reset-button;
25
24
 
26
- background-color: transparent;
27
- font-weight: accordion.$accordion-button-font-weight;
28
- line-height: accordion.$accordion-button-line-height;
25
+ width: 100%;
26
+ position: relative;
27
+ padding-block: accordion.$accordion-button-padding;
28
+ padding-inline-start: accordion.$accordion-button-padding;
29
+ padding-inline-end: accordion.$accordion-button-padding + accordion.$accordion-icon-size;
30
+ text-align: start;
29
31
 
30
- &:hover,
31
- &:focus {
32
- &:not(:disabled) {
33
- color: accordion.$accordion-button-hover-color;
34
- }
32
+ &:not(:disabled) {
33
+ cursor: accordion.$accordion-button-cursor;
35
34
  }
36
35
 
37
36
  &:disabled {
38
- opacity: button.$btn-disabled-opacity !important;
37
+ opacity: accordion.$accordion-button-disabled-opacity;
38
+ }
39
+
40
+ &:focus {
41
+ outline: none;
42
+ box-shadow: accordion.$accordion-button-focus-box-shadow;
43
+ }
44
+
45
+ &::after {
46
+ @include icon-mixins.icon(accordion.$accordion-icon-name);
47
+ content: '';
48
+ display: block;
49
+ height: accordion.$accordion-icon-size;
50
+ width: accordion.$accordion-icon-size;
51
+ position: absolute;
52
+ inset-inline-end: accordion.$accordion-button-padding;
53
+ inset-block-start: 50%;
54
+ transform: translateY(-50%);
55
+ transition: accordion.$accordion-icon-transition;
56
+
57
+ // add border to fix visual issue during rotation
58
+ border: 1px solid rgb(var(--post-bg-rgb, 255, 255, 255));
59
+ }
60
+
61
+ &.collapsed::after {
62
+ transform: translateY(-50%) accordion.$accordion-icon-transform;
39
63
  }
40
64
 
41
- .accordion-item[open] &::after {
42
- transform: accordion.$accordion-icon-transform;
65
+ > .text-truncate {
66
+ display: block;
43
67
  }
44
68
 
45
- // style to improve hcm mode
46
- @include utilities.high-contrast-mode() {
69
+ // TODO: find a way to style WHCM within web component
70
+ @include utility-mixins.high-contrast-mode() {
47
71
  &:hover,
48
72
  &:focus-visible {
49
73
  &:not(:disabled) {
50
- outline: spacing.$size-line solid Highlight;
74
+ outline: accordion.$accordion-border-width solid Highlight;
51
75
  }
52
76
  }
53
77
 
54
78
  &:disabled {
55
79
  opacity: 1 !important;
56
80
  }
81
+ }
82
+ }
57
83
 
58
- &::after {
59
- background-image: $accordion-hcm-icon;
60
- }
61
-
62
- &:not(.collapsed)::after {
63
- background-image: $accordion-hcm-icon;
84
+ .accordion-body {
85
+ padding: accordion.$accordion-body-padding;
86
+ border-block-start: accordion.$accordion-border-width solid accordion.$accordion-border-color;
87
+
88
+ @each $heading-size in (1 2 3 4 5 6) {
89
+ h#{$heading-size},
90
+ .h#{$heading-size} {
91
+ @include type-mixins.font-curve(accordion.$accordion-heading-font-curve);
92
+ margin: accordion.$accordion-heading-margin;
93
+ font-weight: accordion.$accordion-heading-font-weight;
64
94
  }
65
95
  }
66
96
  }
67
97
 
98
+ .accordion-button,
68
99
  .accordion-body {
69
- padding-top: accordion.$accordion-body-padding-top;
70
- padding-bottom: accordion.$accordion-body-padding-bottom;
71
-
72
- h2,
73
- h3,
74
- h4,
75
- h5,
76
- h6 {
77
- @include type.font-curve(accordion.$accordion-font-curve);
78
-
79
- margin-top: accordion.$accordion-body-heading-margin-top;
80
- margin-bottom: 0;
81
- font-weight: accordion.$accordion-body-heading-font-weight;
82
-
83
- &,
84
- p {
85
- &:first-child {
86
- margin-top: 0;
87
- }
100
+ > :first-child {
101
+ margin-block-start: 0 !important;
102
+ }
88
103
 
89
- &:last-child {
90
- margin-bottom: 0;
91
- }
92
- }
104
+ > :last-child {
105
+ margin-block-end: 0 !important;
93
106
  }
94
107
  }
@@ -5,206 +5,132 @@
5
5
  @use './../lic/bootstrap-license';
6
6
  @use './../themes/bootstrap/core' as *;
7
7
 
8
- @use './../variables/color';
8
+ @use './../mixins/notification' as notification-mx;
9
+ @use './../placeholders/notification' as notification-ph;
10
+
11
+ @use './../variables/breakpoints';
9
12
  @use './../variables/commons';
10
- @use './../variables/type';
11
- @use './../variables/spacing';
12
13
  @use './../variables/grid';
13
- @use './../variables/breakpoints';
14
- @use './../variables/components/alert';
15
- @use './../variables/options';
16
- @use './../functions/color' as color-fn;
17
- @use './../functions/contrast' as contrast-fn;
18
- @use './../placeholders/color' as color-ph;
19
- @use './../placeholders/notifications';
20
-
21
- .alert-container {
22
- @extend %notification-container;
23
- }
14
+ @use './../variables/components/close';
15
+ @use './../variables/components/notification';
24
16
 
25
17
  .alert {
26
- @extend %notification;
18
+ @include notification-mx.notification-size(alert);
27
19
 
28
- min-height: 2 * alert.$alert-padding-y + alert.$alert-icon-size;
20
+ &:not(.alert-action) {
21
+ @extend %notification-body;
22
+ }
23
+ }
29
24
 
30
- padding: alert.$alert-padding-y alert.$alert-padding-x;
31
- padding-left: (alert.$alert-padding-x * 2 + alert.$alert-icon-size);
25
+ .alert-heading {
26
+ @include notification-mx.notification-heading(alert);
27
+ }
32
28
 
33
- background-position: alert.$alert-padding-x center;
34
- background-size: alert.$alert-icon-size;
29
+ .alert-dismissible {
30
+ @include notification-mx.notification-dismissible(alert);
31
+ }
35
32
 
36
- font-size: alert.$alert-font-size;
33
+ .alert-action {
34
+ display: flex;
35
+ flex-direction: row;
36
+ align-items: center;
37
+ gap: notification.$notification-gap;
37
38
 
38
- > *:only-child {
39
- font-weight: type.$font-weight-bold;
39
+ > .alert-content {
40
+ flex: 1 1 auto;
41
+ @extend %notification-body;
40
42
  }
41
43
 
42
- &:not(.alert-fixed-bottom) {
43
- max-width: map.get(breakpoints.$grid-breakpoints, 'xxl');
44
- }
44
+ > .alert-buttons {
45
+ flex: 0 0 auto;
46
+ display: flex;
47
+ align-items: center;
45
48
 
46
- &.no-icon {
47
- padding-left: alert.$alert-padding-x;
49
+ > .btn {
50
+ margin-inline-start: notification.$notification-buttons-margin-start;
51
+ }
48
52
  }
49
53
 
50
- &.alert-dismissible {
51
- padding-right: alert.$alert-close-icon-size + alert.$alert-padding-x * 2;
54
+ @include media-breakpoint-up(md) {
55
+ &.alert-dismissible > .btn-close {
56
+ inset-block-start: calc(50% - #{0.5 * close.$close-size});
57
+ }
52
58
  }
53
59
 
54
- // Adjust close link position
55
- .btn-close {
56
- @extend %notification-close;
57
-
58
- padding: alert.$alert-padding-y alert.$alert-padding-x;
59
- }
60
- }
60
+ @include media-breakpoint-down(md) {
61
+ flex-direction: column;
62
+ align-items: stretch;
63
+ padding-inline: map.get(notification.$notification-padding-x-map, alert);
61
64
 
62
- .alert-heading {
63
- @extend %notification-title;
65
+ > .alert-content {
66
+ $icon-size: map.get(notification.$notification-icon-size-map, alert);
64
67
 
65
- font-size: alert.$alert-font-size;
66
- }
68
+ padding-inline-start: notification.$notification-gap + $icon-size;
69
+ padding-inline-end: notification.$notification-gap + close.$close-size;
70
+ }
67
71
 
68
- @each $name, $color, $icon in alert.$alert-list {
69
- .alert-#{$name} {
70
- --post-bg-rgb: #{color-fn.rgb-values($color)};
71
- @extend %notification-#{$name};
72
+ > .alert-buttons {
73
+ display: flex;
72
74
 
73
- @if (contrast-fn.light-or-dark($color) == 'dark') {
74
- @extend %color-background-dark-variables;
75
- } @else {
76
- @extend %color-background-light-variables;
77
- }
75
+ > .btn {
76
+ flex: 1 0 0;
77
+ width: 100%;
78
78
 
79
- .btn-close {
80
- @extend %notification-#{$name}-close;
79
+ &:first-child {
80
+ margin-inline-start: 0;
81
+ }
82
+ }
81
83
  }
82
84
  }
83
85
  }
84
86
 
85
87
  .alert-fixed-bottom {
86
88
  position: fixed;
87
- z-index: commons.$zindex-alert;
88
- bottom: 0;
89
- left: 0;
90
- width: 100%;
91
- max-height: 100%;
92
- overflow: auto;
89
+ inset-block-end: 0;
90
+ inset-inline-start: 0;
91
+ inset-inline-end: 0;
93
92
  margin-bottom: 0;
94
93
  border-radius: 0;
95
-
96
- // Let the icon scroll with the content
97
- background-attachment: local;
94
+ z-index: commons.$zindex-fixed;
98
95
 
99
96
  @include media-breakpoint-up(xxl) {
100
- $container-padding: map.get(grid.$grid-container-padding, 'xxl');
101
- padding: alert.$alert-padding-y
102
- calc(
103
- (100vw - #{map.get(breakpoints.$grid-breakpoints, 'xxl')}) / 2 + #{alert.$alert-padding-x *
104
- 2 + alert.$alert-icon-size} + #{$container-padding} - 0.5rem
105
- );
106
-
107
- background-position: calc(
108
- (100vw - #{map.get(breakpoints.$grid-breakpoints, 'xxl')}) / 2 + #{alert.$alert-padding-x} +
109
- #{$container-padding} - 0.5rem
110
- )
111
- center;
112
-
113
- &.alert-dismissible {
114
- padding-right: calc(
115
- (100vw - #{map.get(breakpoints.$grid-breakpoints, 'xxl')}) / 2 + #{alert.$alert-close-icon-size +
116
- alert.$alert-padding-x * 2} + #{$container-padding} - 0.5rem
117
- );
118
-
119
- .btn-close {
120
- right: calc(
121
- (100vw - #{map.get(breakpoints.$grid-breakpoints, 'xxl')}) / 2 + #{$container-padding} - 0.5rem
122
- );
123
- }
124
- }
125
- }
126
- }
127
-
128
- .alert-action {
129
- flex-direction: row;
130
- flex-wrap: nowrap;
131
- align-items: center;
132
- justify-content: space-between;
133
- gap: spacing.$size-regular;
134
-
135
- @include media-breakpoint-down(lg) {
136
- flex-direction: column;
137
- align-items: flex-start;
138
- justify-content: flex-end;
139
-
140
- .alert-buttons {
141
- align-self: flex-end;
142
- }
143
- }
144
-
145
- @include media-breakpoint-down(sm) {
146
- align-items: center;
147
- }
148
-
149
- @include media-breakpoint-up(xxl) {
150
- $container-padding: map.get(grid.$grid-container-padding, 'xxl');
151
- padding-right: calc(
152
- (100vw - #{map.get(breakpoints.$grid-breakpoints, 'xxl')}) / 2 + #{alert.$alert-padding-x} + #{$container-padding} -
153
- 0.5rem
97
+ $container-max-width: map.get(breakpoints.$grid-breakpoints, 'xxl') - 1;
98
+ $container-padding-x: map.get(grid.$grid-container-padding, 'xxl');
99
+ $alert-padding-x: map.get(notification.$notification-padding-x-map, alert);
100
+ $alert-icon-size: map.get(notification.$notification-icon-size-map, alert);
101
+ $fixed-alert-padding-x: '(100% - #{$container-max-width}) / 2 + #{$container-padding-x} + #{$alert-padding-x}';
102
+
103
+ padding-inline-end: calc(#{$fixed-alert-padding-x});
104
+ padding-inline-start: calc(
105
+ #{$fixed-alert-padding-x} + #{$alert-icon-size} + #{notification.$notification-gap}
154
106
  );
155
- }
156
107
 
157
- .alert-content {
158
- display: flex;
159
- flex: 2 1 auto;
160
- flex-flow: column nowrap;
108
+ // for alerts with .pi-* icons (deprecated)
109
+ background-position-x: calc(#{$fixed-alert-padding-x} + #{0.5 * $alert-icon-size});
161
110
 
162
- > *:last-child {
163
- margin-bottom: 0;
111
+ // for alerts with mask-image icons
112
+ &::before {
113
+ left: calc(#{$fixed-alert-padding-x});
164
114
  }
165
- }
166
115
 
167
- .alert-buttons {
168
- display: flex;
169
- gap: spacing.$size-regular;
170
- justify-self: flex-end;
171
- flex: 1 1 auto;
172
- flex-direction: row-reverse;
116
+ &.no-icon {
117
+ padding-inline-start: calc(#{$fixed-alert-padding-x});
118
+ }
173
119
 
174
- @include media-breakpoint-down(rg) {
175
- flex-direction: column;
176
- align-self: stretch;
120
+ &.alert-dismissible {
121
+ padding-inline-end: calc(
122
+ #{$fixed-alert-padding-x} + #{notification.$notification-gap} + #{close.$close-size}
123
+ );
177
124
 
178
- .btn {
179
- flex: 1 0 auto;
125
+ > .btn-close {
126
+ inset-inline-end: calc(#{$fixed-alert-padding-x});
180
127
  }
181
128
  }
182
129
  }
183
130
  }
184
131
 
185
- @include media-breakpoint-down(sm) {
186
- .alert {
187
- padding-top: alert.$alert-padding-y * 2 + alert.$alert-icon-size;
188
- padding-left: alert.$alert-padding-x;
189
- background-position: center alert.$alert-padding-y;
190
- font-size: alert.$alert-font-size-small;
191
- text-align: center;
192
-
193
- &.alert-dismissible {
194
- padding-right: alert.$alert-padding-x;
195
- }
196
-
197
- &.no-icon {
198
- padding-top: alert.$alert-padding-y;
199
- }
200
-
201
- .btn-close {
202
- bottom: auto;
203
- padding: spacing.$spacer * 0.5;
204
- }
205
-
206
- .alert-heading {
207
- font-size: alert.$alert-font-size-small;
208
- }
132
+ @each $name, $color, $icon in notification.$notification-variants {
133
+ .alert-#{$name} {
134
+ @include notification-mx.notification-variant($color, $icon);
209
135
  }
210
136
  }
@@ -3,7 +3,6 @@
3
3
  @use './../lic/bootstrap-license';
4
4
  @use './../themes/bootstrap/core' as *;
5
5
  @use './../themes/bootstrap/badge' as bb;
6
- @use './../themes/bootstrap/close' as bc; // Styles for the close icon
7
6
 
8
7
  @use './../variables/components/badge';
9
8
  @use './../variables/components/forms';
@@ -1,33 +1,22 @@
1
1
  @forward './../variables/options';
2
2
 
3
- @use './../lic/bootstrap-license';
4
- @use './../themes/bootstrap/core' as *;
5
- @use './../themes/bootstrap/close' as bc;
6
-
7
- @use './../variables/components/close';
8
- @use './../mixins/utilities';
3
+ @use './../mixins/utilities' as utilities-mx;
4
+ @use './../placeholders/close' as close-ph;
5
+ @use './../variables/color';
9
6
 
10
7
  .btn-close {
11
- height: unset;
12
- min-height: close.$btn-close-height;
13
-
14
- @include utilities.high-contrast-mode() {
15
- opacity: 1;
16
- background: transparent escape-svg($btn-close-hcm-bg) center/1.5rem auto no-repeat;
17
- }
8
+ @extend %btn-close;
9
+ }
18
10
 
19
- &:focus {
20
- outline: 2px solid var(--post-contrast-color);
21
- box-shadow: none;
11
+ // DEPRECATED
12
+ .btn-close-white {
13
+ color: color.$gray-10;
22
14
 
23
- &:not(:focus-visible) {
24
- outline: 0;
25
- }
15
+ @include utilities-mx.not-disabled-focus-hover() {
16
+ color: color.$white;
26
17
  }
27
- }
28
18
 
29
- .btn-close-white {
30
- @include utilities.high-contrast-mode() {
31
- filter: none;
19
+ &:disabled {
20
+ color: color.$gray-40;
32
21
  }
33
22
  }
@@ -0,0 +1,12 @@
1
+ @use './../variables/spacing';
2
+ @use './../variables/components/forms';
3
+
4
+ textarea {
5
+ &.form-control {
6
+ &::-webkit-resizer {
7
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 15 15' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='#{forms.$input-border-color}' d='M0 12H3V15H0V12Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M6 12H9V15H6V12Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M6 6H9V9H6V6Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 6H15V9H12V6Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 0H15V3H12V0Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 12H15V15H12V12Z'/%3E%3C/svg%3E");
8
+ background-repeat: no-repeat;
9
+ background-size: 75%;
10
+ }
11
+ }
12
+ }
@@ -2,16 +2,16 @@
2
2
 
3
3
  @use './../lic/bootstrap-license';
4
4
  @use './../themes/bootstrap/modal' as bm;
5
- @use './../themes/bootstrap/close' as bc;
6
5
  @use './../themes/bootstrap/core' as *;
7
6
 
8
- @use './../mixins/icons' as icon-mixin;
9
7
  @use './../mixins/scroll-shadows' as scroll-shadows-mixin;
10
- @use './../variables';
8
+
9
+ @use './../variables/commons';
10
+ @use './../variables/components/modal';
11
11
 
12
12
  .modal-content {
13
13
  border: 0;
14
- box-shadow: variables.$box-shadow;
14
+ box-shadow: commons.$box-shadow;
15
15
  }
16
16
 
17
17
  post-ngb-modal-content {
@@ -20,8 +20,8 @@ post-ngb-modal-content {
20
20
  }
21
21
 
22
22
  .modal-body {
23
- @include scroll-shadows-mixin.scroll-shadows-y(variables.$modal-content-bg);
24
- padding: variables.$modal-body-padding;
23
+ @include scroll-shadows-mixin.scroll-shadows-y(modal.$modal-content-bg);
24
+ padding: modal.$modal-body-padding;
25
25
  overflow-y: auto;
26
26
  }
27
27
 
@@ -30,6 +30,14 @@ post-ngb-modal-content {
30
30
  border: 0;
31
31
  }
32
32
 
33
+ .modal-header .btn-close {
34
+ position: absolute;
35
+ top: 0;
36
+ right: 0;
37
+ padding: 0;
38
+ margin: modal.$modal-btn-close-margin;
39
+ }
40
+
33
41
  .modal-title:focus {
34
42
  outline: none; // Removes focus styles when you manually set focus to title with ngbAutofocus https://ng-github.io/#/components/modal/examples#focus
35
43
  }
@@ -37,26 +45,26 @@ post-ngb-modal-content {
37
45
  @include media-breakpoint-up(sm) {
38
46
  post-ngb-modal-content {
39
47
  // prevents the modal from exceeding the height of the screen
40
- max-height: calc(100vh - #{2 * variables.$modal-dialog-margin-y-sm-up});
48
+ max-height: calc(100vh - #{2 * modal.$modal-dialog-margin-y-sm-up});
41
49
  }
42
50
 
43
51
  // Right and left margins are set to "auto" from the sm breakpoint
44
52
  // Paddings below ensure minimal margins on medium screens
45
53
  .modal-dialog {
46
- padding-right: variables.$modal-dialog-margin;
47
- padding-left: variables.$modal-dialog-margin;
54
+ padding-right: modal.$modal-dialog-margin;
55
+ padding-left: modal.$modal-dialog-margin;
48
56
  }
49
57
  }
50
58
 
51
59
  @include media-breakpoint-down(sm) {
52
60
  post-ngb-modal-content {
53
61
  // make the modal cover the full height available on small screens
54
- height: calc(100vh - #{2 * variables.$modal-dialog-margin});
62
+ height: calc(100vh - #{2 * modal.$modal-dialog-margin});
55
63
  }
56
64
 
57
65
  .modal-body,
58
66
  .modal-header {
59
- padding-right: variables.$modal-header-padding-y;
60
- padding-left: variables.$modal-header-padding-y;
67
+ padding-right: modal.$modal-header-padding-y;
68
+ padding-left: modal.$modal-header-padding-y;
61
69
  }
62
70
  }
@@ -109,6 +109,7 @@
109
109
  text-decoration: none;
110
110
  color: stepper.$stepper-link-color;
111
111
  transition: color 250ms;
112
+ text-align: center;
112
113
 
113
114
  .stepper-item[aria-current] > & {
114
115
  color: stepper.$stepper-link-current-color;
@@ -116,7 +117,8 @@
116
117
  font-weight: stepper.$stepper-link-current-font-weight;
117
118
  }
118
119
 
119
- &:hover {
120
+ @at-root a:hover#{&},
121
+ :focus-visible#{&} {
120
122
  color: stepper.$stepper-link-hover-color;
121
123
  }
122
124
 
@@ -127,12 +129,6 @@
127
129
 
128
130
  @include media-breakpoint-down(rg) {
129
131
  .stepper-item {
130
- &[aria-current] .stepper-link {
131
- position: absolute;
132
- bottom: 0;
133
- left: 0;
134
- }
135
-
136
132
  &:not([aria-current]) .stepper-link {
137
133
  overflow: hidden;
138
134
  white-space: nowrap;