@ch-post-common/common-web-frontend 0.0.1-security → 6.939.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 @ch-post-common/common-web-frontend might be problematic. Click here for more details.
- package/components/accordion.scss +177 -0
- package/components/alert.scss +217 -0
- package/components/badge.scss +95 -0
- package/components/breadcrumb.scss +43 -0
- package/components/button.scss +168 -0
- package/components/card.scss +227 -0
- package/components/carousel.scss +161 -0
- package/components/custom-choice-control.scss +217 -0
- package/components/custom-range-input.scss +51 -0
- package/components/custom-select.scss +60 -0
- package/components/datatable.scss +147 -0
- package/components/datepicker.scss +220 -0
- package/components/detail-summary.scss +72 -0
- package/components/dropdown.scss +71 -0
- package/components/floating-label.scss +65 -0
- package/components/fonts.scss +35 -0
- package/components/form-feedback.scss +70 -0
- package/components/forms.scss +31 -0
- package/components/grid.scss +103 -0
- package/components/icons.scss +62 -0
- package/components/intranet-header/_icon.scss +6 -0
- package/components/intranet-header/_language-chooser.scss +40 -0
- package/components/intranet-header/_logo.scss +74 -0
- package/components/intranet-header/_nav-overflow.scss +56 -0
- package/components/intranet-header/_scaffolding.scss +96 -0
- package/components/intranet-header/_searchbox.scss +56 -0
- package/components/intranet-header/_settings.scss +23 -0
- package/components/intranet-header/_sidebar.scss +118 -0
- package/components/intranet-header/_top-navigation.scss +83 -0
- package/components/list-group.scss +156 -0
- package/components/modal.scss +87 -0
- package/components/pagination.scss +67 -0
- package/components/popover.scss +21 -0
- package/components/product-card.scss +74 -0
- package/components/progress.scss +15 -0
- package/components/reboot.scss +17 -0
- package/components/root.scss +10 -0
- package/components/sizing.scss +90 -0
- package/components/spinner.scss +58 -0
- package/components/stepper.scss +158 -0
- package/components/subnavigation.scss +131 -0
- package/components/switch.scss +132 -0
- package/components/tabs.scss +122 -0
- package/components/timepicker.scss +110 -0
- package/components/toast.scss +172 -0
- package/components/tooltip.scss +23 -0
- package/components/topic-teaser.scss +133 -0
- package/components/type.scss +106 -0
- package/components/utilities.scss +93 -0
- package/index.js +28 -0
- package/layouts/portal/_type.scss +83 -0
- package/lic/_bootstrap-license.scss +29 -0
- package/lic/_cwf-license.scss +7 -0
- package/mixins/_animation.scss +39 -0
- package/mixins/_button.scss +232 -0
- package/mixins/_forms.scss +188 -0
- package/mixins/_icons.scss +27 -0
- package/mixins/_scroll-shadows.scss +13 -0
- package/mixins/_size.scss +69 -0
- package/mixins/_type.scss +187 -0
- package/mixins/_utilities.scss +73 -0
- package/package.json +11 -3
- package/placeholders/_dropdown.scss +11 -0
- package/placeholders/_floating-label.scss +143 -0
- package/placeholders/_notifications.scss +160 -0
- package/placeholders/_text.scss +187 -0
- package/variables/_animation.scss +36 -0
- package/variables/_color.scss +240 -0
- package/variables/_commons.scss +57 -0
- package/variables/_icons.scss +2071 -0
- package/variables/_spacing.scss +180 -0
- package/variables/_type.scss +157 -0
- package/variables/components/_accordion.scss +22 -0
- package/variables/components/_alert.scss +50 -0
- package/variables/components/_badge.scss +29 -0
- package/variables/components/_breadcrumbs.scss +21 -0
- package/variables/components/_button.scss +152 -0
- package/variables/components/_card.scss +29 -0
- package/variables/components/_carousel.scss +27 -0
- package/variables/components/_close.scss +9 -0
- package/variables/components/_datatable.scss +49 -0
- package/variables/components/_datepicker.scss +14 -0
- package/variables/components/_dropdowns.scss +30 -0
- package/variables/components/_forms.scss +256 -0
- package/variables/components/_intranet-header.scss +9 -0
- package/variables/components/_modals.scss +68 -0
- package/variables/components/_nav.scss +82 -0
- package/variables/components/_pagination.scss +41 -0
- package/variables/components/_paragraph.scss +6 -0
- package/variables/components/_popovers.scss +28 -0
- package/variables/components/_progress-bars.scss +16 -0
- package/variables/components/_stepper.scss +26 -0
- package/variables/components/_subnavigation.scss +36 -0
- package/variables/components/_switch.scss +3 -0
- package/variables/components/_tables.scss +31 -0
- package/variables/components/_tooltips.scss +26 -0
- package/README.md +0 -5
@@ -0,0 +1,232 @@
|
|
1
|
+
@use "sass:map";
|
2
|
+
@use "../themes/bootstrap/overrides" as bootstrap;
|
3
|
+
@use "./animation";
|
4
|
+
@use "../functions";
|
5
|
+
@use "../variables";
|
6
|
+
@use "../variables/components/button";
|
7
|
+
@use "../variables/options";
|
8
|
+
|
9
|
+
@mixin reset-button {
|
10
|
+
background: none;
|
11
|
+
border: 0;
|
12
|
+
color: inherit;
|
13
|
+
font: inherit;
|
14
|
+
line-height: normal;
|
15
|
+
overflow: visible;
|
16
|
+
padding: 0;
|
17
|
+
appearance: button; // for input
|
18
|
+
user-select: none;
|
19
|
+
}
|
20
|
+
|
21
|
+
@mixin _btn($size) {
|
22
|
+
$container-height: functions.calculate-inner-height(
|
23
|
+
map.get(variables.$font-size-map, $size),
|
24
|
+
map.get(button.$btn-line-height-map, $size),
|
25
|
+
map.get(button.$btn-padding-y-map, $size)
|
26
|
+
);
|
27
|
+
$offset: -#{map.get(button.$btn-padding-y-map, $size)};
|
28
|
+
|
29
|
+
&.btn-animated {
|
30
|
+
@include animation.hover-animation(
|
31
|
+
map.get(variables.$font-size-map, $size),
|
32
|
+
map.get(button.$btn-animation-distance-map, $size),
|
33
|
+
$container-height,
|
34
|
+
$offset
|
35
|
+
);
|
36
|
+
@include bootstrap.button-size(
|
37
|
+
map.get(button.$btn-padding-y-map, $size),
|
38
|
+
map.get(button.$btn-padding-animate-x-map, $size),
|
39
|
+
map.get(variables.$font-size-map, $size),
|
40
|
+
map.get(button.$btn-line-height-map, $size),
|
41
|
+
map.get(button.$btn-border-radius-map, $size)
|
42
|
+
);
|
43
|
+
}
|
44
|
+
|
45
|
+
&.btn-icon {
|
46
|
+
$adjusted-padding: (
|
47
|
+
$container-height - map.get(button.$btn-icon-size-map, $size)
|
48
|
+
)/2;
|
49
|
+
padding: $adjusted-padding;
|
50
|
+
|
51
|
+
.pi {
|
52
|
+
width: map.get(button.$btn-icon-size-map, $size);
|
53
|
+
height: map.get(button.$btn-icon-size-map, $size);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
@mixin btn-sm {
|
59
|
+
@include _btn("sm");
|
60
|
+
}
|
61
|
+
|
62
|
+
@mixin btn-rg {
|
63
|
+
@include bootstrap.button-size(
|
64
|
+
button.$btn-padding-y-rg,
|
65
|
+
button.$btn-padding-x-rg,
|
66
|
+
variables.$font-size-rg,
|
67
|
+
button.$btn-line-height-rg,
|
68
|
+
button.$btn-border-radius-rg
|
69
|
+
);
|
70
|
+
@include _btn("rg");
|
71
|
+
}
|
72
|
+
|
73
|
+
@mixin btn {
|
74
|
+
@include _btn("md");
|
75
|
+
}
|
76
|
+
|
77
|
+
@mixin btn-lg {
|
78
|
+
@include _btn("lg");
|
79
|
+
}
|
80
|
+
|
81
|
+
// Placeholder selectors are used so the resulting output css is smaller
|
82
|
+
%btn-animation-arrow-light {
|
83
|
+
@include animation.hover-animation-svg-icon(
|
84
|
+
variables.$yiq-text-light,
|
85
|
+
"2050",
|
86
|
+
2
|
87
|
+
);
|
88
|
+
}
|
89
|
+
|
90
|
+
%btn-animation-arrow-dark {
|
91
|
+
@include animation.hover-animation-svg-icon(
|
92
|
+
variables.$yiq-text-dark,
|
93
|
+
"2050",
|
94
|
+
2
|
95
|
+
);
|
96
|
+
}
|
97
|
+
|
98
|
+
// Button variants
|
99
|
+
@mixin button-variant(
|
100
|
+
$background,
|
101
|
+
$border,
|
102
|
+
$hover-background: darken(functions.get-solid-color($background), 10%),
|
103
|
+
$hover-border: $hover-background,
|
104
|
+
$active-background: map.get(variables.$theme-colors, "active"),
|
105
|
+
$active-border: $active-background
|
106
|
+
) {
|
107
|
+
@include bootstrap.gradient-bg($background);
|
108
|
+
@include bootstrap.box-shadow(button.$btn-box-shadow);
|
109
|
+
|
110
|
+
color: bootstrap.color-yiq($background);
|
111
|
+
border-color: $border;
|
112
|
+
text-decoration: none;
|
113
|
+
|
114
|
+
@include bootstrap.hover {
|
115
|
+
@include bootstrap.gradient-bg($hover-background);
|
116
|
+
|
117
|
+
color: bootstrap.color-yiq($hover-background);
|
118
|
+
border-color: $hover-border;
|
119
|
+
}
|
120
|
+
|
121
|
+
&:focus,
|
122
|
+
&.focus {
|
123
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
124
|
+
@if options.$enable-shadows {
|
125
|
+
box-shadow: button.$btn-box-shadow,
|
126
|
+
0 0 0 button.$btn-focus-width rgba($border, .5);
|
127
|
+
} @else if $border != transparent {
|
128
|
+
box-shadow: 0 0 0 button.$btn-focus-width rgba($border, .5);
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
// Disabled comes first so active can properly restyle
|
133
|
+
&.disabled,
|
134
|
+
&:disabled {
|
135
|
+
color: bootstrap.color-yiq($background);
|
136
|
+
background-color: opacify($background, .8);
|
137
|
+
border-color: $border;
|
138
|
+
|
139
|
+
//stylelint-disable-next-line order/order
|
140
|
+
@if ($background == transparent) {
|
141
|
+
background-color: transparent;
|
142
|
+
}
|
143
|
+
|
144
|
+
//stylelint-disable-next-line order/order
|
145
|
+
@if $border != transparent {
|
146
|
+
border-color: opacify($border, .5);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
&:not(:disabled):not(.disabled).active,
|
151
|
+
.show > &.dropdown-toggle {
|
152
|
+
@if options.$enable-gradients {
|
153
|
+
background-image: none; // Remove the gradient for the pressed/active state
|
154
|
+
}
|
155
|
+
|
156
|
+
color: bootstrap.color-yiq($active-background);
|
157
|
+
background-color: $active-background;
|
158
|
+
border-color: $active-border;
|
159
|
+
|
160
|
+
&:focus {
|
161
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
162
|
+
@if options.$enable-shadows {
|
163
|
+
box-shadow: button.$btn-active-box-shadow,
|
164
|
+
0 0 0 button.$btn-focus-width rgba($border, .5);
|
165
|
+
} @else {
|
166
|
+
box-shadow: 0 0 0 button.$btn-focus-width rgba($border, .5);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
&.btn-animated {
|
172
|
+
@if (bootstrap.color-yiq($hover-background) == variables.$yiq-text-dark) {
|
173
|
+
@extend %btn-animation-arrow-dark;
|
174
|
+
} @else {
|
175
|
+
@extend %btn-animation-arrow-light;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
179
|
+
|
180
|
+
@mixin button-outline-variant(
|
181
|
+
$color,
|
182
|
+
$color-hover: variables.$black,
|
183
|
+
$active-background: transparent,
|
184
|
+
$active-border: $color-hover
|
185
|
+
) {
|
186
|
+
color: $color;
|
187
|
+
background-color: transparent;
|
188
|
+
background-image: none;
|
189
|
+
border-color: rgba($color, .5);
|
190
|
+
text-decoration: none;
|
191
|
+
|
192
|
+
&:hover,
|
193
|
+
&:not(:disabled):not(.disabled).active,
|
194
|
+
.show > &.dropdown-toggle {
|
195
|
+
color: $color-hover;
|
196
|
+
background-color: $active-background;
|
197
|
+
border-color: $color-hover;
|
198
|
+
}
|
199
|
+
|
200
|
+
&:focus,
|
201
|
+
&.focus {
|
202
|
+
box-shadow: 0 0 0 button.$btn-focus-width rgba($color, .5);
|
203
|
+
}
|
204
|
+
|
205
|
+
&.disabled,
|
206
|
+
&:disabled {
|
207
|
+
color: $color;
|
208
|
+
background-color: transparent;
|
209
|
+
border-color: rgba($color, .5);
|
210
|
+
}
|
211
|
+
|
212
|
+
&:not(:disabled):not(.disabled).active,
|
213
|
+
.show > &.dropdown-toggle {
|
214
|
+
&:focus {
|
215
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
216
|
+
@if options.$enable-shadows and button.$btn-active-box-shadow != none {
|
217
|
+
box-shadow: button.$btn-active-box-shadow,
|
218
|
+
0 0 0 button.$btn-focus-width rgba($color, .5);
|
219
|
+
} @else {
|
220
|
+
box-shadow: 0 0 0 button.$btn-focus-width rgba($color, .5);
|
221
|
+
}
|
222
|
+
}
|
223
|
+
}
|
224
|
+
|
225
|
+
&.btn-animated {
|
226
|
+
@if (bootstrap.color-yiq($color-hover) == variables.$yiq-text-dark) {
|
227
|
+
@extend %btn-animation-arrow-light;
|
228
|
+
} @else {
|
229
|
+
@extend %btn-animation-arrow-dark;
|
230
|
+
}
|
231
|
+
}
|
232
|
+
}
|
@@ -0,0 +1,188 @@
|
|
1
|
+
@use "../themes/bootstrap/overrides" as bootstrap;
|
2
|
+
|
3
|
+
@use "../variables";
|
4
|
+
@use "../variables/components/forms";
|
5
|
+
@use "../variables/components/tooltips";
|
6
|
+
@use "../mixins/utilities";
|
7
|
+
|
8
|
+
// Placeholder in input fields
|
9
|
+
|
10
|
+
@mixin placeholder() {
|
11
|
+
&::placeholder {
|
12
|
+
@content;
|
13
|
+
}
|
14
|
+
|
15
|
+
// For very old Edge
|
16
|
+
&::-webkit-input-placeholder {
|
17
|
+
@content;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
// Bootstrap override
|
22
|
+
/// The entire mixin had to be overriden to adjust the feedback on custom controls.
|
23
|
+
/// For the most part, it is exactly like the bootstrap mixin.
|
24
|
+
@mixin form-validation-state($state, $color, $icon) {
|
25
|
+
|
26
|
+
.#{$state}-feedback {
|
27
|
+
display: none;
|
28
|
+
width: 100%;
|
29
|
+
margin-top: forms.$form-feedback-margin-top;
|
30
|
+
font-size: forms.$form-feedback-font-size;
|
31
|
+
color: $color;
|
32
|
+
}
|
33
|
+
|
34
|
+
.#{$state}-tooltip {
|
35
|
+
@include bootstrap.border-radius(tooltips.$tooltip-border-radius);
|
36
|
+
|
37
|
+
position: absolute;
|
38
|
+
top: 100%;
|
39
|
+
z-index: 5;
|
40
|
+
display: none;
|
41
|
+
max-width: 100%; // Contain to parent when possible
|
42
|
+
padding: tooltips.$tooltip-padding-y tooltips.$tooltip-padding-x;
|
43
|
+
margin-top: .1rem;
|
44
|
+
font-size: tooltips.$tooltip-font-size;
|
45
|
+
line-height: variables.$line-height-base;
|
46
|
+
color: bootstrap.color-yiq($color);
|
47
|
+
|
48
|
+
/* Keeping borders gray while maintaining a green background on tooltips */
|
49
|
+
//stylelint-disable-next-line order/order
|
50
|
+
@if ($state == "valid") {
|
51
|
+
background-color: rgba(forms.$form-feedback-valid-bg, tooltips.$tooltip-opacity);
|
52
|
+
} @else {
|
53
|
+
background-color: rgba($color, tooltips.$tooltip-opacity);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
.form-control,
|
58
|
+
.custom-select {
|
59
|
+
.was-validated &:#{$state},
|
60
|
+
&.is-#{$state} {
|
61
|
+
border-color: $color;
|
62
|
+
|
63
|
+
&:focus {
|
64
|
+
border-color: $color;
|
65
|
+
box-shadow: 0 0 0 forms.$input-focus-width rgba($color, .25);
|
66
|
+
}
|
67
|
+
|
68
|
+
~ .#{$state}-feedback,
|
69
|
+
~ .#{$state}-tooltip {
|
70
|
+
display: block;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
.form-control-file {
|
76
|
+
.was-validated &:#{$state},
|
77
|
+
&.is-#{$state} {
|
78
|
+
~ .#{$state}-feedback,
|
79
|
+
~ .#{$state}-tooltip {
|
80
|
+
display: block;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
.form-check-input {
|
86
|
+
.was-validated &:#{$state},
|
87
|
+
&.is-#{$state} {
|
88
|
+
~ .form-check-label {
|
89
|
+
color: $color;
|
90
|
+
}
|
91
|
+
|
92
|
+
~ .#{$state}-feedback,
|
93
|
+
~ .#{$state}-tooltip {
|
94
|
+
display: block;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
.custom-control-input {
|
100
|
+
.was-validated &:#{$state},
|
101
|
+
&.is-#{$state} {
|
102
|
+
~ .custom-control-label {
|
103
|
+
color: $color;
|
104
|
+
|
105
|
+
&::before {
|
106
|
+
border-color: $color;
|
107
|
+
background: variables.$white;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
~ .#{$state}-feedback,
|
112
|
+
~ .#{$state}-tooltip {
|
113
|
+
display: block;
|
114
|
+
}
|
115
|
+
|
116
|
+
&:focus {
|
117
|
+
~ .custom-control-label::before {
|
118
|
+
box-shadow: 0 0 0 1px variables.$body-bg,
|
119
|
+
0 0 0 forms.$input-focus-width rgba($color, .25);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
// custom file
|
126
|
+
.custom-file-input {
|
127
|
+
.was-validated &:#{$state},
|
128
|
+
&.is-#{$state} {
|
129
|
+
~ .custom-file-label {
|
130
|
+
border-color: $color;
|
131
|
+
|
132
|
+
&::after {
|
133
|
+
border-color: inherit;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
~ .#{$state}-feedback,
|
138
|
+
~ .#{$state}-tooltip {
|
139
|
+
display: block;
|
140
|
+
}
|
141
|
+
|
142
|
+
&:focus {
|
143
|
+
~ .custom-file-label {
|
144
|
+
box-shadow: 0 0 0 forms.$input-focus-width rgba($color, .25);
|
145
|
+
}
|
146
|
+
}
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
@mixin label-floated-style {
|
152
|
+
font-size: forms.$floating-label-font-size-small;
|
153
|
+
top: forms.$floating-label-transition-distance * -1;
|
154
|
+
}
|
155
|
+
|
156
|
+
@mixin icon-placement {
|
157
|
+
background-repeat: no-repeat;
|
158
|
+
background-position: calc(100% - #{forms.$form-feedback-icon-offset}) center;
|
159
|
+
padding-right: forms.$form-feedback-icon-offset + forms.$form-feedback-icon-size;
|
160
|
+
}
|
161
|
+
|
162
|
+
@mixin floating-label-style {
|
163
|
+
@include utilities.truncate;
|
164
|
+
|
165
|
+
display: block;
|
166
|
+
color: forms.$floating-label-color;
|
167
|
+
font-size: forms.$floating-label-font-size;
|
168
|
+
width: calc(100% - 2 * #{variables.$spacer} - #{forms.$input-border-width} - #{forms.$floating-label-spacing-x});
|
169
|
+
|
170
|
+
position: absolute;
|
171
|
+
top: forms.$input-border-width;
|
172
|
+
margin-left: forms.$input-border-width;
|
173
|
+
|
174
|
+
padding: forms.$floating-label-padding;
|
175
|
+
transition: variables.$transition-base;
|
176
|
+
|
177
|
+
font-weight: normal;
|
178
|
+
pointer-events: none;
|
179
|
+
}
|
180
|
+
|
181
|
+
@mixin form-control-rg {
|
182
|
+
@include bootstrap.border-radius(forms.$input-border-radius-rg);
|
183
|
+
|
184
|
+
height: forms.$input-height-rg;
|
185
|
+
padding: forms.$input-padding-y-rg forms.$input-padding-x-rg;
|
186
|
+
font-size: variables.$font-size-rg;
|
187
|
+
line-height: forms.$input-line-height-rg;
|
188
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
@use "sass:map";
|
2
|
+
@use "sass:meta";
|
3
|
+
@use "sass:color";
|
4
|
+
|
5
|
+
@use "../variables/color" as color-var;
|
6
|
+
@use "../functions/icons" as icon-fn;
|
7
|
+
|
8
|
+
@mixin pi($name, $color: color-var.$body-color) {
|
9
|
+
$type: meta.type-of($color);
|
10
|
+
$final-color: $color;
|
11
|
+
|
12
|
+
@if ($type != color) {
|
13
|
+
$final-color: map.get(color-var.$icon-colors, $color);
|
14
|
+
|
15
|
+
@if (not $final-color) {
|
16
|
+
$valid-colors: map.keys(color-var.$icon-colors);
|
17
|
+
|
18
|
+
@error "Error in Mixin 'pi(name, color?)'. Color '#{$color}' is not available. Please choose one of the following: #{$valid-colors}.";
|
19
|
+
}
|
20
|
+
}
|
21
|
+
background-image: url(icon-fn.get-colored-svg-url($name, $final-color));
|
22
|
+
border-color: $final-color;
|
23
|
+
}
|
24
|
+
|
25
|
+
@mixin pi-pre($name) {
|
26
|
+
background-image: url(icon-fn.get-pre-colored-svg-url($name));
|
27
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*!
|
2
|
+
* Copyright 2021 by Swiss Post, Information Technology
|
3
|
+
*/
|
4
|
+
@use "../variables/color";
|
5
|
+
|
6
|
+
@mixin scroll-shadows-y($background-color: color.$white) {
|
7
|
+
$shadow-top: linear-gradient(rgba(color.$black, .2), rgba(color.$black, .1) 25%, transparent) center top/100% 4px no-repeat scroll;
|
8
|
+
$shadow-bottom: linear-gradient(transparent, rgba(color.$black, .1) 75%, rgba(color.$black, .2)) center bottom/100% 4px no-repeat scroll;
|
9
|
+
$shadow-cover-top: linear-gradient(#{$background-color}, #{$background-color}) center top/100% 4px no-repeat local;
|
10
|
+
$shadow-cover-bottom: linear-gradient(#{$background-color}, #{$background-color}) center bottom/100% 4px no-repeat local;
|
11
|
+
|
12
|
+
background: $shadow-cover-top, $shadow-top, $shadow-cover-bottom, $shadow-bottom;
|
13
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
@use "sass:map";
|
2
|
+
@use "sass:string";
|
3
|
+
|
4
|
+
@use "../themes/bootstrap/overrides" as bootstrap;
|
5
|
+
|
6
|
+
@use "../variables/spacing";
|
7
|
+
@use "../functions/utilities";
|
8
|
+
|
9
|
+
@mixin bezel-small() {
|
10
|
+
padding: map.get(spacing.$post-sizes, "mini")
|
11
|
+
map.get(spacing.$post-sizes, "regular");
|
12
|
+
}
|
13
|
+
|
14
|
+
@mixin bezel-small-regular() {
|
15
|
+
padding: map.get(spacing.$post-sizes, "small-regular")
|
16
|
+
map.get(spacing.$post-sizes, "regular");
|
17
|
+
}
|
18
|
+
|
19
|
+
@mixin bezel-regular() {
|
20
|
+
padding: map.get(spacing.$post-sizes, "regular");
|
21
|
+
}
|
22
|
+
|
23
|
+
@mixin bezel-bigger-regular() {
|
24
|
+
padding: map.get(spacing.$post-sizes, "small-large");
|
25
|
+
}
|
26
|
+
|
27
|
+
@mixin bezel-medium() {
|
28
|
+
padding: map.get(spacing.$post-sizes, "small-large")
|
29
|
+
map.get(spacing.$post-sizes, "large");
|
30
|
+
}
|
31
|
+
|
32
|
+
@mixin bezel-large() {
|
33
|
+
padding: map.get(spacing.$post-sizes, "big");
|
34
|
+
}
|
35
|
+
|
36
|
+
@mixin bezel-big() {
|
37
|
+
padding: map.get(spacing.$post-sizes, "bigger-big");
|
38
|
+
}
|
39
|
+
|
40
|
+
///**
|
41
|
+
// * Generate responsive size properties for things like height, width, margin, padding, etc.
|
42
|
+
// * @param $curve-size One of the curve sizes predefined at https://www.experience-hub.ch/document/2307#/grundlagen-web/abstaende
|
43
|
+
// * @param $property Property key (height, width, padding, margin, top, etc.)
|
44
|
+
// * @param $template Value template string used for shorthand declarations like padding ("$value auto" = padding: 1rem auto)
|
45
|
+
// */
|
46
|
+
@mixin responsive-size($curve-size: "regular", $property-key: "padding", $template: "$value") {
|
47
|
+
$curve: map.get(spacing.$size-curves, $curve-size);
|
48
|
+
|
49
|
+
@if ($curve) {
|
50
|
+
$cache: "";
|
51
|
+
|
52
|
+
@each $key, $value in $curve {
|
53
|
+
@if ($key == "xs") {
|
54
|
+
#{$property-key}: string.unquote(utilities.replace($template, "$value", $value));
|
55
|
+
} @else {
|
56
|
+
// Don't write unnecessary media queries
|
57
|
+
@if ($cache != $value) {
|
58
|
+
@include bootstrap.media-breakpoint-up($key) {
|
59
|
+
#{$property-key}: string.unquote(utilities.replace($template, "$value", $value));
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
//stylelint-disable-next-line order/order
|
64
|
+
$cache: $value;
|
65
|
+
}
|
66
|
+
} @else {
|
67
|
+
@warn "@mixin responsive-size: Can't find $curve-size: " + $curve-size;
|
68
|
+
}
|
69
|
+
}
|
@@ -0,0 +1,187 @@
|
|
1
|
+
@use "../variables/breakpoints";
|
2
|
+
@use "../functions/sizing";
|
3
|
+
@use "../functions/utilities";
|
4
|
+
@use "../themes/bootstrap/overrides" as bootstrap;
|
5
|
+
|
6
|
+
// TODO: rewrite this as docblockr comment
|
7
|
+
// Sets font-size and calculate line-height depending on the font-size
|
8
|
+
// $argList: ($minValueS, $maxValueS, $minValueM, $maxValueM, $minValueL, $maxValueL);
|
9
|
+
@mixin fontSizeAndLineHeight($argList...) {
|
10
|
+
@include fontSizeCalc($argList...);
|
11
|
+
@include fontLineHeight($argList...);
|
12
|
+
}
|
13
|
+
|
14
|
+
@mixin font-curve($minFontSize, $maxFontSize, $minScreenSize, $maxScreenSize) {
|
15
|
+
@media screen and (min-width: #{$minScreenSize}) {
|
16
|
+
@if (sizing.strip-unit($minFontSize) == sizing.strip-unit($maxFontSize)) {
|
17
|
+
font-size: $minFontSize;
|
18
|
+
} @else {
|
19
|
+
// prettier-ignore
|
20
|
+
font-size: calc(
|
21
|
+
#{$minFontSize}
|
22
|
+
+ #{sizing.strip-unit($maxFontSize)
|
23
|
+
- sizing.strip-unit($minFontSize)}
|
24
|
+
* (
|
25
|
+
(100vw - #{sizing.px-to-rem($minScreenSize)})
|
26
|
+
/ #{sizing.strip-unit(sizing.px-to-rem($maxScreenSize))
|
27
|
+
- sizing.strip-unit(sizing.px-to-rem($minScreenSize))}
|
28
|
+
)
|
29
|
+
);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
@mixin fontSizeCalc($argList...) {
|
35
|
+
// Smallest size with no scaling
|
36
|
+
font-size: nth($argList, 1);
|
37
|
+
|
38
|
+
// stylelint-disable-next-line order/order
|
39
|
+
@include font-curve(
|
40
|
+
nth($argList, 1),
|
41
|
+
nth($argList, 2),
|
42
|
+
320px,
|
43
|
+
map-get(breakpoints.$grid-breakpoints, sm)
|
44
|
+
);
|
45
|
+
|
46
|
+
@if (length($argList) > 2) {
|
47
|
+
@include font-curve(
|
48
|
+
nth($argList, 2),
|
49
|
+
nth($argList, 3),
|
50
|
+
map-get(breakpoints.$grid-breakpoints, sm),
|
51
|
+
map-get(breakpoints.$grid-breakpoints, rg)
|
52
|
+
);
|
53
|
+
}
|
54
|
+
|
55
|
+
@if (length($argList) > 3) {
|
56
|
+
@include font-curve(
|
57
|
+
nth($argList, 3),
|
58
|
+
nth($argList, 4),
|
59
|
+
map-get(breakpoints.$grid-breakpoints, rg),
|
60
|
+
map-get(breakpoints.$grid-breakpoints, md)
|
61
|
+
);
|
62
|
+
}
|
63
|
+
|
64
|
+
@if (length($argList) > 4) {
|
65
|
+
@include font-curve(
|
66
|
+
nth($argList, 4),
|
67
|
+
nth($argList, 5),
|
68
|
+
map-get(breakpoints.$grid-breakpoints, md),
|
69
|
+
map-get(breakpoints.$grid-breakpoints, lg)
|
70
|
+
);
|
71
|
+
}
|
72
|
+
|
73
|
+
@if (length($argList) > 5) {
|
74
|
+
@include font-curve(
|
75
|
+
nth($argList, 5),
|
76
|
+
nth($argList, 6),
|
77
|
+
map-get(breakpoints.$grid-breakpoints, lg),
|
78
|
+
map-get(breakpoints.$grid-breakpoints, xl)
|
79
|
+
);
|
80
|
+
|
81
|
+
// Largest size with no scaling
|
82
|
+
@include bootstrap.media-breakpoint-up(xl) {
|
83
|
+
font-size: nth($argList, 6);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
@mixin fontLineHeight($argList...) {
|
89
|
+
$min: (nth($argList, 1) / 1rem);
|
90
|
+
$max: (nth($argList, 2) / 1rem);
|
91
|
+
$line-height: sizing.line-height-calc(utilities.average($min, $max));
|
92
|
+
|
93
|
+
// stylelint-disable order/order
|
94
|
+
line-height: $line-height;
|
95
|
+
|
96
|
+
@if (length($argList) > 2) {
|
97
|
+
$min: (nth($argList, 2) / 1rem);
|
98
|
+
$max: (nth($argList, 3) / 1rem);
|
99
|
+
$line-height-old: $line-height;
|
100
|
+
$line-height: sizing.line-height-calc(utilities.average($min, $max));
|
101
|
+
|
102
|
+
// Only render new line-height, if not the same as on last breakpoint
|
103
|
+
@if $line-height != $line-height-old {
|
104
|
+
@include bootstrap.media-breakpoint-up(sm) {
|
105
|
+
line-height: $line-height;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
@if (length($argList) > 3) {
|
111
|
+
$min: (nth($argList, 3) / 1rem);
|
112
|
+
$max: (nth($argList, 4) / 1rem);
|
113
|
+
$line-height-old: $line-height;
|
114
|
+
$line-height: sizing.line-height-calc(utilities.average($min, $max));
|
115
|
+
|
116
|
+
// Only render new line-height, if not the same as on last breakpoint
|
117
|
+
@if $line-height != $line-height-old {
|
118
|
+
@include bootstrap.media-breakpoint-up(rg) {
|
119
|
+
line-height: $line-height;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
@if (length($argList) > 4) {
|
125
|
+
$min: (nth($argList, 4) / 1rem);
|
126
|
+
$max: (nth($argList, 5) / 1rem);
|
127
|
+
$line-height-old: $line-height;
|
128
|
+
$line-height: sizing.line-height-calc(utilities.average($min, $max));
|
129
|
+
|
130
|
+
// Only render new line-height, if not the same as on last breakpoint
|
131
|
+
@if $line-height != $line-height-old {
|
132
|
+
@include bootstrap.media-breakpoint-up(md) {
|
133
|
+
line-height: $line-height;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
@if (length($argList) > 5) {
|
139
|
+
$min: (nth($argList, 5) / 1rem);
|
140
|
+
$max: (nth($argList, 6) / 1rem);
|
141
|
+
$line-height-old: $line-height;
|
142
|
+
$line-height: sizing.line-height-calc(utilities.average($min, $max));
|
143
|
+
|
144
|
+
// Only render new line-height, if not the same as on last breakpoint
|
145
|
+
@if $line-height != $line-height-old {
|
146
|
+
@include bootstrap.media-breakpoint-up(lg) {
|
147
|
+
line-height: $line-height;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
}
|
151
|
+
|
152
|
+
@if (length($argList) > 5) {
|
153
|
+
$line-height-old: $line-height;
|
154
|
+
$line-height: sizing.line-height-calc(nth($argList, 6) / 1rem);
|
155
|
+
|
156
|
+
// Only render new line-height, if not the same as on last breakpoint
|
157
|
+
@if $line-height != $line-height-old {
|
158
|
+
@include bootstrap.media-breakpoint-up(xl) {
|
159
|
+
line-height: $line-height;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
}
|
163
|
+
|
164
|
+
// stylelint-enable order/order
|
165
|
+
}
|
166
|
+
|
167
|
+
// Better font rendering (on OS X)
|
168
|
+
// http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
|
169
|
+
//
|
170
|
+
// Usage:
|
171
|
+
//
|
172
|
+
// .xy--dark-on-light {
|
173
|
+
// @include fontSmoothing;
|
174
|
+
// }
|
175
|
+
// .xy--light-on-dark {
|
176
|
+
// @include fontSmoothingReset;
|
177
|
+
// }
|
178
|
+
|
179
|
+
@mixin font-smoothing() {
|
180
|
+
-webkit-font-smoothing: antialiased;
|
181
|
+
-moz-osx-font-smoothing: grayscale;
|
182
|
+
}
|
183
|
+
|
184
|
+
@mixin font-smoothing-reset() {
|
185
|
+
-webkit-font-smoothing: subpixel-antialiased;
|
186
|
+
-moz-osx-font-smoothing: auto;
|
187
|
+
}
|