@swisspost/design-system-styles 6.4.4 → 6.5.1

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 (108) hide show
  1. package/_svg-icon-map.scss +875 -845
  2. package/basics.css +1 -1
  3. package/components/accordion.scss +51 -41
  4. package/components/button-group.scss +5 -0
  5. package/components/datepicker.scss +3 -1
  6. package/components/elevation.scss +2 -1
  7. package/components/floating-label.scss +30 -2
  8. package/components/form-check.scss +9 -3
  9. package/components/form-select.scss +46 -2
  10. package/components/intranet-header/_sidebar.scss +1 -1
  11. package/components/intranet-header/_top-navigation.scss +0 -1
  12. package/components/pagination.scss +15 -0
  13. package/components/sizing.scss +15 -0
  14. package/components/tabs/_tabs-wrapper.scss +1 -2
  15. package/functions/_contrast.scss +9 -0
  16. package/index.css +3 -3
  17. package/intranet.css +3 -3
  18. package/mixins/_elevation.scss +6 -0
  19. package/mixins/_focus.scss +9 -0
  20. package/mixins/_index.scss +1 -0
  21. package/package.json +25 -32
  22. package/placeholders/_close.scss +6 -0
  23. package/variables/_color.scss +24 -2
  24. package/variables/_commons.scss +3 -0
  25. package/variables/_grid.scss +17 -22
  26. package/variables/components/_accordion.scss +15 -8
  27. package/variables/components/_form-select.scss +11 -1
  28. package/variables/components/_forms.scss +30 -7
  29. package/variables/components/_stepper.scss +1 -4
  30. package/schematics/migrations/_example-dom-migration/index.d.ts +0 -2
  31. package/schematics/migrations/_example-dom-migration/index.js +0 -131
  32. package/schematics/migrations/_example-dom-migration/index.js.map +0 -1
  33. package/schematics/migrations/bootstrap/badge/index.d.ts +0 -2
  34. package/schematics/migrations/bootstrap/badge/index.js +0 -85
  35. package/schematics/migrations/bootstrap/badge/index.js.map +0 -1
  36. package/schematics/migrations/bootstrap/blockquote/index.d.ts +0 -2
  37. package/schematics/migrations/bootstrap/blockquote/index.js +0 -40
  38. package/schematics/migrations/bootstrap/blockquote/index.js.map +0 -1
  39. package/schematics/migrations/bootstrap/button/index.d.ts +0 -2
  40. package/schematics/migrations/bootstrap/button/index.js +0 -56
  41. package/schematics/migrations/bootstrap/button/index.js.map +0 -1
  42. package/schematics/migrations/bootstrap/button-close/index.d.ts +0 -2
  43. package/schematics/migrations/bootstrap/button-close/index.js +0 -35
  44. package/schematics/migrations/bootstrap/button-close/index.js.map +0 -1
  45. package/schematics/migrations/bootstrap/form-checkbox/index.d.ts +0 -2
  46. package/schematics/migrations/bootstrap/form-checkbox/index.js +0 -48
  47. package/schematics/migrations/bootstrap/form-checkbox/index.js.map +0 -1
  48. package/schematics/migrations/bootstrap/form-control/index.d.ts +0 -2
  49. package/schematics/migrations/bootstrap/form-control/index.js +0 -28
  50. package/schematics/migrations/bootstrap/form-control/index.js.map +0 -1
  51. package/schematics/migrations/bootstrap/form-radio/index.d.ts +0 -2
  52. package/schematics/migrations/bootstrap/form-radio/index.js +0 -48
  53. package/schematics/migrations/bootstrap/form-radio/index.js.map +0 -1
  54. package/schematics/migrations/bootstrap/form-select/index.d.ts +0 -2
  55. package/schematics/migrations/bootstrap/form-select/index.js +0 -54
  56. package/schematics/migrations/bootstrap/form-select/index.js.map +0 -1
  57. package/schematics/migrations/bootstrap/form-switch/index.d.ts +0 -2
  58. package/schematics/migrations/bootstrap/form-switch/index.js +0 -45
  59. package/schematics/migrations/bootstrap/form-switch/index.js.map +0 -1
  60. package/schematics/migrations/bootstrap/forms/index.d.ts +0 -2
  61. package/schematics/migrations/bootstrap/forms/index.js +0 -49
  62. package/schematics/migrations/bootstrap/forms/index.js.map +0 -1
  63. package/schematics/migrations/bootstrap/textarea/index.d.ts +0 -2
  64. package/schematics/migrations/bootstrap/textarea/index.js +0 -38
  65. package/schematics/migrations/bootstrap/textarea/index.js.map +0 -1
  66. package/schematics/migrations/general/classes/bg-opacity.d.ts +0 -2
  67. package/schematics/migrations/general/classes/bg-opacity.js +0 -34
  68. package/schematics/migrations/general/classes/bg-opacity.js.map +0 -1
  69. package/schematics/migrations/general/classes/rtl.d.ts +0 -2
  70. package/schematics/migrations/general/classes/rtl.js +0 -88
  71. package/schematics/migrations/general/classes/rtl.js.map +0 -1
  72. package/schematics/migrations/general/classes/secondary.d.ts +0 -2
  73. package/schematics/migrations/general/classes/secondary.js +0 -16
  74. package/schematics/migrations/general/classes/secondary.js.map +0 -1
  75. package/schematics/migrations/general/classes/sr-only.d.ts +0 -2
  76. package/schematics/migrations/general/classes/sr-only.js +0 -28
  77. package/schematics/migrations/general/classes/sr-only.js.map +0 -1
  78. package/schematics/migrations/general/classes/text-auto.d.ts +0 -2
  79. package/schematics/migrations/general/classes/text-auto.js +0 -16
  80. package/schematics/migrations/general/classes/text-auto.js.map +0 -1
  81. package/schematics/migrations/ngbootstrap/buttons/index.d.ts +0 -2
  82. package/schematics/migrations/ngbootstrap/buttons/index.js +0 -79
  83. package/schematics/migrations/ngbootstrap/buttons/index.js.map +0 -1
  84. package/schematics/migrations/post/custom-select/index.d.ts +0 -2
  85. package/schematics/migrations/post/custom-select/index.js +0 -63
  86. package/schematics/migrations/post/custom-select/index.js.map +0 -1
  87. package/schematics/migrations/post/stepper/index.d.ts +0 -2
  88. package/schematics/migrations/post/stepper/index.js +0 -61
  89. package/schematics/migrations/post/stepper/index.js.map +0 -1
  90. package/schematics/migrations/post/subnavigation/index.d.ts +0 -2
  91. package/schematics/migrations/post/subnavigation/index.js +0 -16
  92. package/schematics/migrations/post/subnavigation/index.js.map +0 -1
  93. package/schematics/migrations/post/topic-teaser/index.d.ts +0 -2
  94. package/schematics/migrations/post/topic-teaser/index.js +0 -42
  95. package/schematics/migrations/post/topic-teaser/index.js.map +0 -1
  96. package/schematics/migrations.json +0 -105
  97. package/schematics/utils/constants.d.ts +0 -5
  98. package/schematics/utils/constants.js +0 -73
  99. package/schematics/utils/constants.js.map +0 -1
  100. package/schematics/utils/dom-migration/dom-update.d.ts +0 -5
  101. package/schematics/utils/dom-migration/dom-update.js +0 -3
  102. package/schematics/utils/dom-migration/dom-update.js.map +0 -1
  103. package/schematics/utils/dom-migration/get-dom-migration-rule.d.ts +0 -3
  104. package/schematics/utils/dom-migration/get-dom-migration-rule.js +0 -128
  105. package/schematics/utils/dom-migration/get-dom-migration-rule.js.map +0 -1
  106. package/schematics/utils/dom-migration/index.d.ts +0 -2
  107. package/schematics/utils/dom-migration/index.js +0 -22
  108. package/schematics/utils/dom-migration/index.js.map +0 -1
@@ -1,61 +1,82 @@
1
1
  @forward './../variables/options';
2
2
 
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;
8
-
3
+ @use './../mixins/button' as button-mx;
4
+ @use './../mixins/color' as color-mx;
5
+ @use './../mixins/focus' as focus-mx;
6
+ @use './../mixins/icons' as icon-mx;
7
+ @use './../mixins/type' as type-mx;
8
+ @use './../mixins/utilities' as utility-mx;
9
+
10
+ @use './../functions/contrast';
11
+ @use './../variables/color';
9
12
  @use './../variables/components/accordion';
10
13
 
11
14
  .accordion-item {
12
- border-block-start: accordion.$accordion-border-width solid accordion.$accordion-border-color;
15
+ border-block: accordion.$accordion-border-width solid accordion.$accordion-border-color;
16
+
17
+ & + & {
18
+ border-block-start: 0;
19
+ }
20
+
21
+ // make the accordion gray
22
+ @include color-mx.colored-background(color.$gray-background);
23
+
24
+ // make the accordion white on background colors close to the gray above (making sure it remains gray on a white background)
25
+ $accordion-contrast-on-white: contrast.contrast-ratio(color.$white, color.$gray-background);
26
+ @each $name, $color in color.$background-colors {
27
+ $accordion-contrast-on-color: contrast.contrast-ratio($color, color.$gray-background);
28
+ @if ($accordion-contrast-on-color < $accordion-contrast-on-white) {
29
+ .bg-#{$name} & {
30
+ @include color-mx.colored-background(color.$white);
31
+ }
32
+ }
33
+ }
13
34
  }
14
35
 
15
36
  .accordion-header {
16
- @include type-mixins.font-curve(accordion.$accordion-header-font-curve);
37
+ color: accordion.$accordion-header-color;
38
+ font-size: accordion.$accordion-header-font-size;
17
39
  font-weight: accordion.$accordion-header-font-weight;
18
40
  line-height: accordion.$accordion-header-line-height;
19
41
  margin: 0;
20
42
  }
21
43
 
22
44
  .accordion-button {
23
- @include button-mixins.reset-button;
45
+ @include button-mx.reset-button;
46
+ @include focus-mx.focus-ring;
24
47
 
25
48
  width: 100%;
26
49
  position: relative;
27
50
  padding-block: accordion.$accordion-button-padding;
28
51
  padding-inline-start: accordion.$accordion-button-padding;
29
- padding-inline-end: accordion.$accordion-button-padding + accordion.$accordion-icon-size;
52
+ padding-inline-end: accordion.$accordion-button-padding + accordion.$accordion-icon-size +
53
+ accordion.$accordion-gap;
30
54
  text-align: start;
55
+ transition: accordion.$accordion-button-transition;
31
56
 
32
- &:not(:disabled) {
33
- cursor: accordion.$accordion-button-cursor;
57
+ &:hover {
58
+ color: accordion.$accordion-button-hover-color;
59
+ background-color: accordion.$accordion-button-hover-bg;
34
60
  }
35
61
 
36
62
  &:disabled {
37
63
  opacity: accordion.$accordion-button-disabled-opacity;
38
- }
39
-
40
- &:focus {
41
- outline: none;
42
- box-shadow: accordion.$accordion-button-focus-box-shadow;
64
+ pointer-events: none;
43
65
  }
44
66
 
45
67
  &::after {
46
- @include icon-mixins.icon(accordion.$accordion-icon-name);
68
+ @include icon-mx.icon(accordion.$accordion-icon-name);
47
69
  content: '';
48
70
  display: block;
49
71
  height: accordion.$accordion-icon-size;
50
72
  width: accordion.$accordion-icon-size;
73
+
74
+ // use absolute positioning instead of flex to allow easy title truncation
51
75
  position: absolute;
52
76
  inset-inline-end: accordion.$accordion-button-padding;
53
77
  inset-block-start: 50%;
54
78
  transform: translateY(-50%);
55
79
  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
80
  }
60
81
 
61
82
  &.collapsed::after {
@@ -66,8 +87,7 @@
66
87
  display: block;
67
88
  }
68
89
 
69
- // TODO: find a way to style WHCM within web component
70
- @include utility-mixins.high-contrast-mode() {
90
+ @include utility-mx.high-contrast-mode() {
71
91
  &:hover,
72
92
  &:focus-visible {
73
93
  &:not(:disabled) {
@@ -83,25 +103,15 @@
83
103
 
84
104
  .accordion-body {
85
105
  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;
94
- }
95
- }
106
+ font-weight: accordion.$accordion-body-font-weight;
96
107
  }
97
108
 
98
- .accordion-button,
99
- .accordion-body {
100
- > :first-child {
101
- margin-block-start: 0 !important;
102
- }
109
+ .accordion-button > *,
110
+ .accordion-body > :first-child {
111
+ margin-block-start: 0 !important;
112
+ }
103
113
 
104
- > :last-child {
105
- margin-block-end: 0 !important;
106
- }
114
+ .accordion-button > *,
115
+ .accordion-body > :last-child {
116
+ margin-block-end: 0 !important;
107
117
  }
@@ -7,6 +7,7 @@
7
7
  @use './../mixins/utilities';
8
8
  @use './../variables/color';
9
9
  @use './../variables/components/button';
10
+ @use './../variables/components/forms';
10
11
 
11
12
  .btn-group {
12
13
  max-width: 100%;
@@ -50,4 +51,8 @@
50
51
  position: absolute;
51
52
  clip: rect(0, 0, 0, 0);
52
53
  pointer-events: none;
54
+
55
+ &:is(:focus-visible, :focus-within, .pretend-focus) + .btn {
56
+ outline: forms.$input-focus-outline-thickness solid var(--post-contrast-color);
57
+ }
53
58
  }
@@ -7,6 +7,8 @@
7
7
  @use './../variables/commons';
8
8
  @use './../mixins/icons' as icons-mx;
9
9
 
10
+ @use './../themes/bootstrap/core' as b;
11
+
10
12
  ngb-datepicker {
11
13
  // Conversion for compatibility
12
14
  --bs-light: var(--post-light);
@@ -24,7 +26,7 @@ ngb-datepicker-navigation-select.ngb-dp-navigation-select {
24
26
  flex: 0 1 auto;
25
27
 
26
28
  select {
27
- padding-right: 1rem;
29
+ padding-right: b.$form-select-padding-x * 2;
28
30
  border: 0;
29
31
  background-position: right;
30
32
 
@@ -1,7 +1,8 @@
1
1
  @use '../variables/elevation';
2
+ @use '../mixins/elevation' as elevation-mx;
2
3
 
3
4
  @each $key, $value in elevation.$elevation-map {
4
5
  .#{$key} {
5
- box-shadow: #{$value};
6
+ @include elevation-mx.elevation($key);
6
7
  }
7
8
  }
@@ -75,9 +75,9 @@
75
75
 
76
76
  padding-top: forms.$form-floating-input-padding-t;
77
77
  padding-bottom: forms.$form-floating-input-padding-b;
78
- background-size: forms.$form-floating-select-bg-size;
79
78
 
80
79
  ~ label {
80
+ color: forms.$form-floating-label-color;
81
81
  padding-top: 0.7rem;
82
82
  max-width: calc(
83
83
  (100% * #{forms.$form-floating-label-upscale}) - #{forms.$form-floating-label-translate-x *
@@ -87,6 +87,12 @@
87
87
  transition: forms.$form-floating-transition-in;
88
88
  }
89
89
 
90
+ &:disabled {
91
+ ~ label {
92
+ color: forms.$input-disabled-color;
93
+ }
94
+ }
95
+
90
96
  // TODO: replace with :has
91
97
  &:empty,
92
98
  &.form-select-empty {
@@ -94,7 +100,6 @@
94
100
  padding-bottom: forms.$form-floating-input-padding-b;
95
101
 
96
102
  ~ label {
97
- color: forms.$form-floating-label-color;
98
103
  padding-top: forms.$form-floating-label-padding-t;
99
104
  max-width: calc(100% - (#{forms.$input-border-width * 2}));
100
105
  transform: none;
@@ -129,6 +134,29 @@
129
134
  }
130
135
  }
131
136
  }
137
+
138
+ &.form-select-sm {
139
+ padding-inline: forms.$form-floating-padding-x-sm;
140
+ padding-top: forms.$form-floating-padding-y-sm * 2;
141
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
142
+ height: forms.$form-floating-label-height-sm;
143
+ min-height: forms.$form-floating-label-height-sm;
144
+
145
+ ~ label {
146
+ padding-top: forms.$form-floating-padding-y-sm;
147
+ font-size: forms.$form-floating-label-font-size-sm;
148
+ padding-inline: calc(#{forms.$form-floating-padding-x-sm} - #{forms.$input-border-width});
149
+ }
150
+
151
+ // TODO: replace with :has
152
+ &:empty,
153
+ &.form-select-empty {
154
+ ~ label {
155
+ padding-top: forms.$form-floating-label-padding-t-sm;
156
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
157
+ }
158
+ }
159
+ }
132
160
  }
133
161
 
134
162
  > textarea.form-control {
@@ -11,7 +11,6 @@
11
11
  display: flex;
12
12
  flex-wrap: wrap;
13
13
  row-gap: form-check.$form-check-row-gap;
14
- column-gap: form-check.$form-check-column-gap;
15
14
  margin-bottom: form-check.$form-check-margin-bottom;
16
15
 
17
16
  &-inline {
@@ -112,6 +111,10 @@
112
111
  &-label {
113
112
  flex: 1;
114
113
 
114
+ :not(.form-switch, .radio-button-card, .checkbox-button-card) > & {
115
+ padding-inline-start: form-check.$form-check-column-gap;
116
+ }
117
+
115
118
  .form-check-sm & {
116
119
  font-size: type.$font-size-12;
117
120
  }
@@ -119,8 +122,6 @@
119
122
  }
120
123
 
121
124
  .form-switch {
122
- column-gap: form-check.$form-switch-column-gap;
123
-
124
125
  .form-check-input {
125
126
  height: form-check.$form-switch-height;
126
127
  width: form-check.$form-switch-width;
@@ -170,6 +171,11 @@
170
171
 
171
172
  &.order-first {
172
173
  flex: 0 auto;
174
+ padding-inline-end: form-check.$form-switch-column-gap;
175
+ }
176
+
177
+ &:not(.order-first) {
178
+ padding-inline-start: form-check.$form-switch-column-gap;
173
179
  }
174
180
  }
175
181
  }
@@ -1,20 +1,64 @@
1
1
  @forward './../variables/options';
2
2
 
3
3
  @use './../lic/bootstrap-license';
4
- @use './../themes/bootstrap/core' as *;
4
+ @use './../themes/bootstrap/core' as b;
5
5
  @use './../themes/bootstrap/forms/form-select' as bffs;
6
6
  @use './../mixins/forms' as forms-mixins;
7
7
  @use './../mixins/utilities';
8
8
 
9
9
  @use './../variables/components/forms';
10
+ @use './../variables/components/form-select' as form-select;
10
11
 
11
12
  .form-select-rg {
12
13
  @include forms-mixins.form-control-rg;
13
14
  }
14
15
 
16
+ .form-select-lg {
17
+ background-size: form-select.$form-select-bg-size;
18
+ }
19
+
20
+ .form-select-sm {
21
+ background-size: form-select.$form-select-bg-size-sm;
22
+ }
23
+
15
24
  .form-select {
25
+ &:not(:disabled) {
26
+ &:hover {
27
+ border-color: var(--post-contrast-color);
28
+ }
29
+ }
30
+
31
+ &.success,
32
+ &.is-invalid {
33
+ background-position:
34
+ right b.$form-select-padding-x * 2.5 center,
35
+ b.$form-select-bg-position;
36
+
37
+ &.form-select-lg {
38
+ background-position:
39
+ right b.$form-select-padding-x * 3 center,
40
+ b.$form-select-bg-position;
41
+ }
42
+ }
43
+
44
+ &:disabled {
45
+ background-image: b.escape-svg(form-select.$form-select-indicator-disabled),
46
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
47
+ }
48
+
49
+ &.success {
50
+ border-color: var(--post-success-green);
51
+ background-image: b.escape-svg(form-select.$form-select-indicator-success),
52
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
53
+ }
54
+
55
+ &.is-invalid {
56
+ background-image: b.escape-svg(form-select.$form-select-indicator-error),
57
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
58
+ }
59
+
16
60
  @include utilities.high-contrast-mode() {
17
- background-image: escape-svg($form-select-indicator-hcm);
61
+ background-image: b.escape-svg(form-select.$form-select-indicator-hcm);
18
62
  background-color: Field;
19
63
  border-color: FieldText;
20
64
  color: FieldText;
@@ -80,7 +80,7 @@
80
80
  overflow-x: hidden;
81
81
  overflow-y: auto; // Scrollable contents if viewport is shorter than content.
82
82
 
83
- @include media-breakpoint-down(rg) {
83
+ @include media-breakpoint-down(md) {
84
84
  bottom: auto;
85
85
  }
86
86
 
@@ -102,7 +102,6 @@
102
102
 
103
103
  i.pi {
104
104
  height: 100%;
105
- //width: 1.5rem;
106
105
  color: rgba(var(--post-contrast-color-rgb), 0.2);
107
106
 
108
107
  &::before {
@@ -78,5 +78,20 @@
78
78
  &.active {
79
79
  color: pagination.$pagination-active-color;
80
80
  }
81
+
82
+ @include utilities.high-contrast-mode() {
83
+ &.active > .page-link {
84
+ background-color: Highlight;
85
+ }
86
+
87
+ &:first-child,
88
+ &:last-child {
89
+ .page-link > span {
90
+ background-color: LinkText;
91
+ color: transparent;
92
+ forced-color-adjust: none;
93
+ }
94
+ }
95
+ }
81
96
  }
82
97
  }
@@ -55,6 +55,21 @@
55
55
  }
56
56
  }
57
57
 
58
+ // Post breakpoints width - e.g. w-sm-100
59
+ @each $breakpoint in map-keys(breakpoints.$grid-breakpoints) {
60
+ @include media-breakpoint-up($breakpoint) {
61
+ @if $breakpoint != 'xs' {
62
+ @each $prop, $abbrev in (width: w) {
63
+ @each $size, $length in spacing.$sizes {
64
+ .#{$abbrev}-#{$breakpoint}-#{$size} {
65
+ #{$prop}: $length !important;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+
58
73
  // Generate responsive spacing utility classes, a lot of them
59
74
  $cache: ();
60
75
 
@@ -55,8 +55,7 @@
55
55
  }
56
56
 
57
57
  .tab-content {
58
- padding-top: spacing.$spacer;
59
- padding-bottom: spacing.$spacer;
58
+ margin-block: spacing.$spacer;
60
59
  }
61
60
 
62
61
  // Careful, this generates a lot of code
@@ -48,6 +48,15 @@
48
48
  }
49
49
 
50
50
  @function light-or-dark($background, $light-color: #fff, $dark-color: #000) {
51
+ /*
52
+ exception for Success-color issue #2227
53
+ the color is statically defined because the reference to the variable from here
54
+ would create a loop
55
+ */
56
+ @if ($background == #2c911c) {
57
+ @return 'dark';
58
+ }
59
+
51
60
  // Contrast ratio with a light color
52
61
  $contrast-light: contrast-ratio($background, $light-color);
53
62