@siemens/element-theme 49.5.0 → 49.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siemens/element-theme",
3
- "version": "49.5.0",
3
+ "version": "49.7.0",
4
4
  "description": "Element CSS theme.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,6 +1,7 @@
1
1
  @use '../variables/semantic-tokens';
2
2
  @use '../variables/spacers';
3
3
  @use '../variables/typography';
4
+ @use './mixins/badge-text';
4
5
  @use './variables';
5
6
 
6
7
  @use 'sass:map';
@@ -139,9 +140,9 @@
139
140
 
140
141
  &::after {
141
142
  content: '';
142
- inline-size: 10px;
143
- block-size: 10px;
144
- border-radius: 5px;
143
+ inline-size: variables.$badge-dot-size;
144
+ block-size: variables.$badge-dot-size;
145
+ border-radius: 50%;
145
146
  position: absolute;
146
147
  inset-block-start: 0;
147
148
  inset-inline-end: 0;
@@ -150,22 +151,14 @@
150
151
  }
151
152
 
152
153
  .badge-text {
153
- block-size: 14px;
154
- min-inline-size: 14px;
155
- border-radius: 7px;
156
- position: relative;
154
+ @include badge-text.badge-text();
157
155
  background-color: semantic-tokens.$element-action-danger;
158
156
  color: semantic-tokens.$element-action-danger-text;
159
- font-size: typography.$si-font-size-caption;
160
- line-height: 13px;
161
- padding-block: 0;
162
- padding-inline: map.get(spacers.$spacers, 2);
163
- font-family: variables.$font-family-sans-serif;
164
- font-weight: typography.$si-font-weight-semibold;
157
+ position: relative;
165
158
  }
166
159
 
167
160
  :is(.icon, .icon-sm, .icon-lg) + .badge-text {
168
- inset-block-start: -8px;
169
- inset-inline-start: -12px;
170
- margin-inline-end: -12px;
161
+ inset-block-start: -0.5rem;
162
+ inset-inline-start: -0.75rem;
163
+ margin-inline-end: -0.75rem;
171
164
  }
@@ -6,10 +6,6 @@
6
6
 
7
7
  @use 'sass:map';
8
8
 
9
- $btn-size-default: 32px !default;
10
- $btn-size-lg: 40px !default;
11
- $btn-size-sm: 24px !default;
12
-
13
9
  .btn-group {
14
10
  position: relative;
15
11
  display: inline-flex;
@@ -56,36 +52,23 @@ $btn-size-sm: 24px !default;
56
52
  margin-inline-start: -1px;
57
53
  }
58
54
 
59
- .btn {
60
- block-size: $btn-size-default;
61
-
62
- &.btn-lg {
63
- block-size: $btn-size-lg;
64
- }
65
-
66
- &.btn-sm {
67
- block-size: $btn-size-sm;
68
- }
69
- }
70
-
71
- .btn-icon,
72
55
  // @deprecated Will be removed in a future major version, use .btn-icon instead.
73
56
  .icon-only {
74
- inline-size: $btn-size-default;
75
-
76
- &.btn-lg {
77
- inline-size: $btn-size-lg;
78
- }
57
+ min-inline-size: 0;
58
+ padding: 0;
59
+ aspect-ratio: 1 / 1;
60
+ block-size: calc(var(--btn-font-size) * var(--btn-line-height) + 2 * var(--btn-padding-y));
79
61
 
80
- &.btn-sm {
81
- inline-size: $btn-size-sm;
62
+ .icon {
63
+ margin: 0;
82
64
  }
83
65
  }
84
66
 
85
67
  // Dropdown toggle styling for split buttons
86
68
  .btn.dropdown-toggle {
87
- inline-size: $btn-size-sm;
88
- padding: 0;
69
+ aspect-ratio: 0;
70
+ padding-block: 0;
71
+ padding-inline: calc(map.get(spacers.$spacers, 1) - var(--btn-border-width, 0px));
89
72
  border-start-start-radius: 0;
90
73
  border-end-start-radius: 0;
91
74
 
@@ -103,12 +86,12 @@ $btn-size-sm: 24px !default;
103
86
  // Selection buttons
104
87
  .btn-check + .btn,
105
88
  label.btn:has(.btn-check) {
89
+ --btn-border-width: 1px;
90
+ --btn-border-color: #{semantic-tokens.$element-ui-4};
91
+ --btn-border-color-hover: #{semantic-tokens.$element-ui-4};
106
92
  cursor: pointer;
107
93
  background: transparent;
108
94
  color: semantic-tokens.$element-text-primary;
109
- padding-block: calc(variables.$btn-padding-y - 1px);
110
- padding-inline: calc(variables.$btn-padding-x - 1px);
111
- border: 1px solid semantic-tokens.$element-ui-4;
112
95
  transition: none;
113
96
 
114
97
  &.btn-icon {
@@ -8,30 +8,24 @@
8
8
 
9
9
  @use 'sass:map';
10
10
 
11
- $btn-icon-font-size-default: variables.$si-icon-font-size !default;
12
- $btn-icon-font-size-lg: variables.$si-icon-font-size-lg !default;
13
- $btn-icon-font-size-sm: variables.$si-icon-font-size !default;
14
- $btn-icon-size-default: 2rem !default;
15
- $btn-icon-size-lg: 2.5rem !default;
16
- $btn-icon-size-sm: 1.5rem !default;
11
+ $btn-icon-font-size: variables.$si-icon-font-size;
17
12
 
18
13
  // there are some non .btn buttons used in element
19
14
  button {
20
15
  color: semantic-tokens.$element-text-primary;
21
16
  }
22
17
 
23
- @mixin button-icon-size($btn-size, $font-size) {
24
- inline-size: $btn-size;
25
- block-size: $btn-size;
26
- font-size: $font-size;
27
- }
28
-
29
18
  :is(.btn, .btn-close) {
30
- line-height: bootstrap-variables.$btn-line-height;
31
- font-weight: typography.$si-font-weight-h5;
32
- padding-block: calc(bootstrap-variables.$btn-padding-y - var(--btn-border-width, 0px));
19
+ --btn-icon-size: #{$btn-icon-font-size};
20
+ --btn-font-size: #{bootstrap-variables.$btn-font-size};
21
+ --btn-font-weight: #{typography.$si-font-weight-semibold};
22
+ --btn-line-height: #{bootstrap-variables.$btn-line-height};
23
+ --btn-padding-y: #{bootstrap-variables.$btn-padding-y};
24
+ line-height: var(--btn-line-height);
25
+ font-weight: var(--btn-font-weight);
26
+ padding-block: calc(var(--btn-padding-y) - var(--btn-border-width, 0px));
33
27
  padding-inline: calc(bootstrap-variables.$btn-padding-x - var(--btn-border-width, 0px));
34
- font-size: bootstrap-variables.$btn-font-size;
28
+ font-size: var(--btn-font-size);
35
29
  display: inline-flex;
36
30
  align-items: center;
37
31
  justify-content: center;
@@ -68,7 +62,8 @@ button {
68
62
  }
69
63
 
70
64
  .icon {
71
- margin-block: -#{map.get(spacers.$spacers, 2)};
65
+ font-size: var(--btn-icon-size);
66
+ margin-block: calc((var(--btn-icon-size) - var(--btn-font-size)) / -2);
72
67
  margin-inline-end: #{map.get(spacers.$spacers, 2)};
73
68
  }
74
69
  }
@@ -187,7 +182,7 @@ button {
187
182
  --btn-color: #{bootstrap-variables.$btn-link-color};
188
183
  --btn-color-hover: #{bootstrap-variables.$btn-link-hover-color};
189
184
  --btn-color-active: #{semantic-tokens.$element-action-primary-active};
190
- font-weight: typography.$si-font-weight-body;
185
+ --btn-font-weight: #{typography.$si-font-weight-body};
191
186
  justify-content: flex-start;
192
187
  text-decoration: bootstrap-variables.$link-decoration;
193
188
  padding: 0;
@@ -208,71 +203,44 @@ button {
208
203
  display: inline-flex;
209
204
  padding: 0;
210
205
  flex-shrink: 0;
206
+ font-size: var(--btn-icon-size);
207
+ aspect-ratio: 1 / 1;
208
+ block-size: calc(var(--btn-font-size) * var(--btn-line-height) + 2 * var(--btn-padding-y));
211
209
 
212
210
  .icon {
211
+ margin-block: 0;
213
212
  margin-inline: 0;
214
213
  }
215
214
  }
216
215
 
217
- .btn-icon {
218
- border-radius: semantic-tokens.$element-button-radius;
219
- }
220
-
221
216
  .btn-circle {
222
217
  border-radius: 50%;
223
218
  }
224
219
 
225
- .btn-circle,
226
- .btn-icon {
227
- & {
228
- @include button-icon-size($btn-icon-size-default, $btn-icon-font-size-default);
229
- }
230
-
231
- &.btn-lg {
232
- @include button-icon-size($btn-icon-size-lg, $btn-icon-font-size-lg);
233
- }
234
-
235
- &.btn-sm {
236
- @include button-icon-size($btn-icon-size-sm, $btn-icon-font-size-sm);
237
- }
220
+ .btn-lg {
221
+ --btn-padding-y: #{bootstrap-variables.$btn-padding-y-lg};
222
+ }
238
223
 
239
- .icon {
240
- margin-block: 0;
241
- margin-inline: 0;
242
- }
224
+ .btn-sm {
225
+ --btn-padding-y: #{bootstrap-variables.$btn-padding-y-sm};
243
226
  }
244
227
 
228
+ // this is for compatibility so that old markup looks ok-ish
245
229
  .btn-close {
230
+ --btn-font-weight: #{typography.$si-font-weight-normal};
246
231
  --btn-bg: transparent;
247
232
  --btn-bg-hover: #{semantic-tokens.$element-base-1-hover};
248
233
  --btn-bg-active: #{semantic-tokens.$element-base-1-selected};
249
234
  --btn-color: #{semantic-tokens.$element-ui-1};
250
235
  --btn-color-active: #{semantic-tokens.$element-ui-1};
251
- }
252
-
253
- .btn-close.btn-tertiary {
254
- --btn-bg-hover: #{semantic-tokens.$element-action-secondary-hover};
255
- --btn-bg-active: #{semantic-tokens.$element-action-secondary-active};
256
- --btn-color: #{semantic-tokens.$element-action-secondary-text};
257
- --btn-color-hover: #{semantic-tokens.$element-action-secondary-text-hover};
258
- --btn-color-active: #{semantic-tokens.$element-action-primary-active};
259
- }
260
-
261
- .btn-lg {
262
- font-size: bootstrap-variables.$btn-font-size-lg;
263
- line-height: 1.5;
264
- }
265
-
266
- .btn-sm {
267
- font-size: bootstrap-variables.$btn-font-size-sm;
268
- line-height: map.get(spacers.$spacers, 4);
269
- }
270
236
 
271
- // this is for compatibility so that old markup looks ok-ish
272
- .btn-close {
273
- @include button-icon-size($btn-icon-size-default, $btn-icon-font-size-default);
274
-
275
- font-weight: typography.$si-font-weight-normal;
237
+ &.btn-tertiary {
238
+ --btn-bg-hover: #{semantic-tokens.$element-action-secondary-hover};
239
+ --btn-bg-active: #{semantic-tokens.$element-action-secondary-active};
240
+ --btn-color: #{semantic-tokens.$element-action-secondary-text};
241
+ --btn-color-hover: #{semantic-tokens.$element-action-secondary-text-hover};
242
+ --btn-color-active: #{semantic-tokens.$element-action-primary-active};
243
+ }
276
244
 
277
245
  &::before {
278
246
  content: '\002715';
@@ -303,7 +271,7 @@ button {
303
271
  typography.$si-font-weight-body
304
272
  );
305
273
  padding-block: bootstrap-variables.$input-padding-y;
306
- padding-inline: 7px;
274
+ padding-inline: bootstrap-variables.$btn-padding-x - bootstrap-variables.$input-border-width;
307
275
 
308
276
  border-radius: bootstrap-variables.$input-border-radius;
309
277
  justify-content: flex-start;
@@ -117,9 +117,7 @@ button.card {
117
117
  }
118
118
 
119
119
  .card-header {
120
- font-size: typography.$si-font-size-h5;
121
- font-weight: typography.$si-font-weight-h5;
122
- min-block-size: map.get(spacers.$spacers, 9) + map.get(spacers.$spacers, 4);
120
+ min-block-size: calc(1lh + 2 * variables.$card-cap-padding-y);
123
121
  white-space: nowrap;
124
122
  text-overflow: ellipsis;
125
123
  overflow: hidden;
@@ -127,7 +125,12 @@ button.card {
127
125
  padding-inline: variables.$card-cap-padding-x;
128
126
  margin-block-end: 0; // Removes the default margin-bottom of <hN>
129
127
  color: variables.$card-cap-color;
130
- line-height: typography.$si-font-size-h5;
128
+
129
+ @include typography.si-font(
130
+ typography.$si-font-size-h5,
131
+ typography.$si-line-height-h5,
132
+ typography.$si-font-weight-h5
133
+ );
131
134
 
132
135
  + * .card-body, // for action cards, where we wrap the content
133
136
  + .card-body {
@@ -23,7 +23,6 @@
23
23
  overflow-y: auto;
24
24
  padding-block: bootstrap-variables.$dropdown-padding-y;
25
25
  padding-inline: bootstrap-variables.$dropdown-padding-x;
26
- font-size: bootstrap-variables.$dropdown-font-size;
27
26
  color: bootstrap-variables.$dropdown-color;
28
27
  list-style: none;
29
28
  background-color: bootstrap-variables.$dropdown-bg;
@@ -39,8 +38,7 @@
39
38
  }
40
39
  }
41
40
 
42
- .dropdown-menu,
43
- .dropdown-item {
41
+ :is(.dropdown-menu, .dropdown-item) {
44
42
  .icon + .item-title {
45
43
  padding-inline-start: map.get(spacers.$spacers, 4);
46
44
  }
@@ -83,11 +81,13 @@
83
81
  display: flex;
84
82
  flex-wrap: nowrap;
85
83
  align-items: center;
86
- block-size: 32px;
84
+ block-size: calc(1lh + 2 * bootstrap-variables.$dropdown-item-padding-y);
87
85
  inline-size: 100%;
88
86
  padding-block: bootstrap-variables.$dropdown-item-padding-y;
89
87
  padding-inline: bootstrap-variables.$dropdown-item-padding-x;
90
88
  color: bootstrap-variables.$dropdown-link-color;
89
+ font-size: bootstrap-variables.$dropdown-font-size;
90
+ line-height: bootstrap-variables.$dropdown-line-height;
91
91
  text-decoration: none;
92
92
  }
93
93
 
@@ -153,7 +153,7 @@
153
153
 
154
154
  .dropdown-header {
155
155
  display: block;
156
- padding-block: bootstrap-variables.$dropdown-padding-y;
156
+ padding-block: bootstrap-variables.$dropdown-item-padding-y;
157
157
  padding-inline: bootstrap-variables.$dropdown-item-padding-x;
158
158
  margin-block-end: 0; // for use with heading elements
159
159
  color: bootstrap-variables.$dropdown-header-color;
@@ -101,11 +101,11 @@
101
101
  }
102
102
 
103
103
  .list-group-lg .list-group-item {
104
- min-block-size: 64px;
104
+ min-block-size: calc(3rem + 2 * variables.$list-group-item-padding-y);
105
105
  }
106
106
 
107
107
  .list-group-md .list-group-item {
108
- min-block-size: 48px;
108
+ min-block-size: calc(2rem + 2 * variables.$list-group-item-padding-y);
109
109
  }
110
110
 
111
111
  .list-header {
@@ -2,6 +2,7 @@
2
2
  @use '../variables/typography';
3
3
  @use '../variables/zindex';
4
4
  @use '../variables/si-vars';
5
+ @use '../variables/animations';
5
6
  @use './functions';
6
7
  @use './mixins/backdrop';
7
8
  @use './mixins/breakpoints';
@@ -25,6 +26,18 @@
25
26
  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
26
27
  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
27
28
  // See also https://github.com/twbs/bootstrap/issues/17695
29
+
30
+ transition: variables.$transition-fade;
31
+ opacity: 1;
32
+
33
+ @starting-style {
34
+ opacity: 0;
35
+ }
36
+
37
+ &.dialog-leave {
38
+ opacity: 0;
39
+ transition-duration: animations.element-transition-duration(0.3s);
40
+ }
28
41
  }
29
42
 
30
43
  .modal-dialog {
@@ -36,13 +49,15 @@
36
49
  // because of :focus-visible that shouldn't be visible
37
50
  box-shadow: none !important; // stylelint-disable-line declaration-no-important
38
51
 
39
- .modal.fade & {
40
- transition: variables.$modal-transition;
52
+ transition: variables.$modal-transition;
53
+ transform: variables.$modal-show-transform;
54
+
55
+ @starting-style {
41
56
  transform: variables.$modal-fade-transform;
42
57
  }
43
58
 
44
- .modal.show & {
45
- transform: variables.$modal-show-transform;
59
+ .modal.dialog-leave & {
60
+ transform: variables.$modal-fade-transform;
46
61
  }
47
62
 
48
63
  // When trying to close, animate focus to scale
@@ -4,7 +4,7 @@
4
4
 
5
5
  @use 'sass:map';
6
6
 
7
- $nav-tabs-height: 40px;
7
+ $nav-tabs-height: calc(1lh + 2 * variables.$nav-link-padding-y);
8
8
  $nav-tabs-min-width: 100px;
9
9
 
10
10
  .nav {
@@ -29,6 +29,7 @@ $nav-tabs-min-width: 100px;
29
29
  padding-inline: variables.$nav-link-padding-x;
30
30
  font-size: variables.$nav-link-font-size;
31
31
  font-weight: variables.$nav-link-font-weight;
32
+ line-height: variables.$nav-link-line-height;
32
33
  color: variables.$nav-link-color;
33
34
 
34
35
  &:is(:hover, :focus) {
@@ -46,7 +47,6 @@ $nav-tabs-min-width: 100px;
46
47
 
47
48
  .nav-tabs {
48
49
  position: relative;
49
- block-size: $nav-tabs-height;
50
50
  line-height: 1.125rem;
51
51
  border: 0;
52
52
  flex-wrap: nowrap;
@@ -71,7 +71,6 @@ $nav-tabs-min-width: 100px;
71
71
  justify-content: center;
72
72
  block-size: $nav-tabs-height;
73
73
  min-inline-size: $nav-tabs-min-width;
74
- margin-block-end: -(variables.$nav-tabs-border-width);
75
74
  background: none;
76
75
  border-style: solid;
77
76
  border-color: transparent;
@@ -5,7 +5,7 @@
5
5
 
6
6
  @use 'sass:map';
7
7
 
8
- $page-button-size: 24px;
8
+ $page-button-size: 1.5rem;
9
9
 
10
10
  .pagination {
11
11
  display: flex;
@@ -35,7 +35,6 @@
35
35
  }
36
36
 
37
37
  .tooltip-inner {
38
- min-inline-size: 100px;
39
38
  max-inline-size: variables.$tooltip-max-width;
40
39
  padding-block: variables.$tooltip-padding-y;
41
40
  padding-inline: variables.$tooltip-padding-x;
@@ -184,8 +184,8 @@ $line-height-lg: 2 !default;
184
184
  $h1-font-size: typography.$si-font-size-h1 !default;
185
185
  $h2-font-size: typography.$si-font-size-h2 !default;
186
186
  $h3-font-size: typography.$si-font-size-h3 !default;
187
- $h4-font-size: 1rem !default;
188
- $h5-font-size: $font-size-base !default;
187
+ $h4-font-size: typography.$si-font-size-h4 !default;
188
+ $h5-font-size: typography.$si-font-size-h5 !default;
189
189
  $h6-font-size: $font-size-base !default;
190
190
 
191
191
  $font-sizes: (
@@ -290,11 +290,11 @@ $table-variants: (
290
290
  $btn-padding-y: map.get(spacers.$spacers, 4);
291
291
  $btn-padding-x: map.get(spacers.$spacers, 4);
292
292
  $btn-font-size: $font-size-base;
293
- $btn-line-height: typography.$si-line-height-h5 !default;
293
+ $btn-line-height: $line-height-base;
294
294
  $btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping
295
295
 
296
- $btn-font-size-sm: $font-size-sm;
297
- $btn-font-size-lg: $font-size-lg;
296
+ $btn-padding-y-sm: map.get(spacers.$spacers, 2);
297
+ $btn-padding-y-lg: map.get(spacers.$spacers, 5);
298
298
 
299
299
  $btn-link-color: $link-color !default;
300
300
  $btn-link-hover-color: $link-hover-color !default;
@@ -353,18 +353,18 @@ $input-plaintext-color: $body-color !default;
353
353
 
354
354
  $input-height-border: $input-border-width * 2 !default;
355
355
 
356
- $input-height-inner: functions.add($input-line-height * 1em, $input-padding-y * 2) !default;
357
- $input-height-inner-half: functions.add($input-line-height * 0.5em, $input-padding-y) !default;
358
- $input-height-inner-quarter: functions.add(
359
- $input-line-height * 0.25em,
360
- $input-padding-y * 0.5
361
- ) !default;
362
-
363
356
  $input-height: functions.add(
364
357
  $input-line-height * 1em,
365
358
  functions.add($input-padding-y * 2, $input-height-border, false)
366
359
  ) !default;
367
360
 
361
+ $input-height-inner: functions.subtract($input-height, $input-height-border, false) !default;
362
+ // Wrap in parenthesis: `*` binds tighter than `-`, so without them only the border term gets multiplied.
363
+ // DEPRECATED: Calculate it yourself using $input-height-inner
364
+ $input-height-inner-half: calc((#{$input-height-inner}) * 0.5) !default;
365
+ // DEPRECATED: Calculate it yourself using $input-height-inner
366
+ $input-height-inner-quarter: calc((#{$input-height-inner}) * 0.25) !default;
367
+
368
368
  $input-transition:
369
369
  border-color 0.15s ease-in-out,
370
370
  box-shadow 0.15s ease-in-out !default;
@@ -421,6 +421,7 @@ $nav-link-padding-y: 10px;
421
421
  $nav-link-padding-x: map.get(spacers.$spacers, 8);
422
422
  $nav-link-font-size: typography.$si-font-size-h4;
423
423
  $nav-link-font-weight: typography.$si-font-weight-h4;
424
+ $nav-link-line-height: typography.$si-line-height-h4;
424
425
  $nav-link-color: semantic-tokens.$element-text-primary !default;
425
426
  $nav-link-hover-color: $link-hover-color !default;
426
427
  $nav-link-transition: ();
@@ -441,6 +442,7 @@ $dropdown-padding-x: 0 !default;
441
442
  $dropdown-padding-y: map.get(spacers.$spacers, 4) !default;
442
443
  $dropdown-spacer: 0.125rem !default;
443
444
  $dropdown-font-size: $font-size-base !default;
445
+ $dropdown-line-height: $line-height-base;
444
446
  $dropdown-color: $body-color !default;
445
447
  $dropdown-bg: semantic-tokens.$element-base-1 !default;
446
448
  $dropdown-border-radius: semantic-tokens.$element-radius-2 !default;
@@ -449,7 +451,7 @@ $dropdown-divider-margin-y: 4px !default;
449
451
  $dropdown-box-shadow: elevation.$element-elevation-2 !default;
450
452
  $dropdown-link-color: semantic-tokens.$element-text-primary !default;
451
453
  $dropdown-link-disabled-color: semantic-tokens.$element-text-disabled !default;
452
- $dropdown-item-padding-y: 6px !default;
454
+ $dropdown-item-padding-y: map.get(spacers.$spacers, 4);
453
455
  $dropdown-item-padding-x: map.get(spacers.$spacers, 5);
454
456
  $dropdown-header-color: semantic-tokens.$element-text-primary !default;
455
457
 
@@ -522,6 +524,7 @@ $badge-color: semantic-tokens.$element-text-inverse !default;
522
524
  $badge-padding-y: map.get(spacers.$spacers, 1);
523
525
  $badge-padding-x: map.get(spacers.$spacers, 4);
524
526
  $badge-border-radius: 0.75rem;
527
+ $badge-dot-size: 0.625rem;
525
528
 
526
529
  // Modals
527
530
 
@@ -8,23 +8,23 @@
8
8
  // there's too many differences between what BS5 does and what the design system expects
9
9
  @use 'sass:map';
10
10
 
11
- $form-check-size: map.get(spacers.$spacers, 6);
12
- $form-radio-size: map.get(spacers.$spacers, 6);
13
- $form-radio-inner-size: map.get(spacers.$spacers, 3);
14
- $form-radio-offset: ($form-radio-size - $form-radio-inner-size) * 0.5 - 1px;
11
+ $form-check-size: 1rem;
12
+ $form-radio-size: 1rem;
13
+ $form-radio-inner-size: 0.375rem;
14
+ $form-radio-offset: calc((#{$form-radio-size} - #{$form-radio-inner-size}) * 0.5 - 1px);
15
15
  $form-check-padding-x: map.get(spacers.$spacers, 2);
16
16
 
17
- $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
17
+ $form-check-label-start: calc($form-check-size + map.get(spacers.$spacers, 4));
18
18
 
19
19
  %form-check-spacing {
20
20
  .form-check-input {
21
- margin-inline-start: -1 * $form-check-label-start;
21
+ margin-inline-start: calc(-1 * $form-check-label-start);
22
22
  }
23
23
  }
24
24
 
25
25
  .form-check {
26
26
  padding-block: map.get(spacers.$spacers, 1);
27
- padding-inline-start: map.get(spacers.$spacers, 8);
27
+ padding-inline-start: calc($form-check-size + map.get(spacers.$spacers, 4));
28
28
 
29
29
  @extend %form-check-spacing;
30
30
 
@@ -42,19 +42,19 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
42
42
  %form-check-base {
43
43
  position: relative;
44
44
  appearance: none;
45
- background-color: semantic-tokens.$element-ui-5;
45
+ background-color: semantic-tokens.$element-base-1;
46
46
  border: 1px solid semantic-tokens.$element-ui-1;
47
47
  flex-shrink: 0;
48
48
  float: inline-start;
49
49
 
50
50
  &:is(:hover, .hover) {
51
- border-color: semantic-tokens.$element-action-secondary-border-hover;
52
- background: semantic-tokens.$element-action-secondary-hover;
51
+ border-color: semantic-tokens.$element-ui-1;
52
+ background: semantic-tokens.$element-base-1-hover;
53
53
  }
54
54
 
55
55
  &:is(:active, .active) {
56
56
  border-color: semantic-tokens.$element-action-primary-active;
57
- background: semantic-tokens.$element-action-secondary-active;
57
+ background: semantic-tokens.$element-action-primary-active;
58
58
  }
59
59
 
60
60
  &:is([disabled], .disabled) {
@@ -67,7 +67,6 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
67
67
  inline-size: $form-check-size !important; // stylelint-disable-line declaration-no-important
68
68
  block-size: $form-check-size !important; // stylelint-disable-line declaration-no-important
69
69
  border-radius: semantic-tokens.$element-button-radius;
70
- inset-inline-start: map.get(spacers.$spacers, 1);
71
70
 
72
71
  &::after {
73
72
  content: '';
@@ -107,16 +106,17 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
107
106
  }
108
107
 
109
108
  &:indeterminate {
109
+ background-color: semantic-tokens.$element-base-1;
110
110
  border-color: semantic-tokens.$element-action-primary;
111
111
 
112
112
  &::after {
113
113
  mask-image: none;
114
114
  background-color: semantic-tokens.$element-action-primary;
115
- inline-size: 10px;
116
- block-size: 2px;
115
+ inline-size: 0.625rem;
116
+ block-size: 0.125rem;
117
117
  opacity: 1;
118
- inset-inline-start: 2px;
119
- inset-block-start: 6px;
118
+ inset-inline-start: 0.125rem;
119
+ inset-block-start: 0.375rem;
120
120
  }
121
121
 
122
122
  &:hover {
@@ -156,16 +156,18 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
156
156
 
157
157
  &:checked {
158
158
  border-color: semantic-tokens.$element-action-primary;
159
+ background-color: semantic-tokens.$element-action-primary;
159
160
 
160
161
  &::after {
161
- background-color: semantic-tokens.$element-action-primary;
162
+ background-color: semantic-tokens.$element-action-primary-text;
162
163
  }
163
164
 
164
165
  &:hover {
166
+ background-color: semantic-tokens.$element-action-primary-hover;
165
167
  border-color: semantic-tokens.$element-action-primary-hover;
166
168
 
167
169
  &::after {
168
- background-color: semantic-tokens.$element-action-primary-hover;
170
+ background-color: semantic-tokens.$element-action-primary-text;
169
171
  }
170
172
  }
171
173
 
@@ -173,7 +175,7 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
173
175
  border-color: semantic-tokens.$element-action-primary-active;
174
176
 
175
177
  &::after {
176
- background-color: semantic-tokens.$element-action-primary-active;
178
+ background-color: semantic-tokens.$element-action-primary-text;
177
179
  }
178
180
  }
179
181
 
@@ -246,7 +248,7 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
246
248
  .datatable-checkbox {
247
249
  inline-size: $form-check-size !important; // stylelint-disable-line declaration-no-important
248
250
  block-size: $form-check-size !important; // stylelint-disable-line declaration-no-important
249
- inset-block-start: 1px !important; // stylelint-disable-line declaration-no-important
251
+ inset-block-start: 0.0625rem !important; // stylelint-disable-line declaration-no-important
250
252
 
251
253
  input[type='checkbox'] {
252
254
  @extend %form-check-base;
@@ -255,7 +257,7 @@ $form-check-label-start: $form-check-size + map.get(spacers.$spacers, 4);
255
257
  }
256
258
 
257
259
  .datatable-body .datatable-checkbox {
258
- inset-block-start: 3px !important; // stylelint-disable-line declaration-no-important
260
+ inset-block-start: 0.1875rem !important; // stylelint-disable-line declaration-no-important
259
261
  }
260
262
  }
261
263
 
@@ -1,7 +1,6 @@
1
1
  @use '../../variables/focus';
2
2
  @use '../../variables/semantic-tokens';
3
3
  @use '../../variables/spacers';
4
- @use '../../variables/typography';
5
4
  @use '../../variables/utilities';
6
5
  @use '../variables';
7
6
 
@@ -9,6 +8,7 @@
9
8
 
10
9
  :is(.form-control, .form-select) {
11
10
  --border-color: #{semantic-tokens.$element-ui-2};
11
+ --si-textarea-mask: #{semantic-tokens.$element-base-1};
12
12
  --si-input-padding-inline-end: calc(
13
13
  var(--si-feedback-icon-offset, 0px) + var(--si-action-icon-offset, 0px) +
14
14
  #{variables.$input-padding-x}
@@ -22,8 +22,8 @@
22
22
  font-size: variables.$input-font-size;
23
23
  font-weight: variables.$input-font-weight;
24
24
  line-height: variables.$input-line-height;
25
- color: variables.$input-color;
26
- background-color: variables.$input-bg;
25
+ color: semantic-tokens.$element-text-primary;
26
+ background-color: semantic-tokens.$element-base-1;
27
27
  background-clip: padding-box;
28
28
  border: variables.$input-border-width solid var(--border-color);
29
29
  border-radius: variables.$input-border-radius;
@@ -48,20 +48,26 @@
48
48
 
49
49
  &:is(:focus, :hover) {
50
50
  --border-color: #{semantic-tokens.$element-ui-1};
51
+ --si-textarea-mask: #{semantic-tokens.$element-base-input-experimental};
52
+ background-color: semantic-tokens.$element-base-input-experimental;
51
53
  }
52
54
 
53
55
  &:is(.readonly, [readonly]) {
54
56
  &,
55
57
  &:is(:hover, :focus) {
56
58
  --border-color: #{semantic-tokens.$element-ui-4};
57
- background-color: variables.$input-bg;
59
+ --si-textarea-mask: transparent;
60
+ background-color: transparent;
61
+ color: semantic-tokens.$element-text-primary;
58
62
  }
59
63
  }
60
64
 
61
65
  &:is(.disabled, :disabled) {
62
66
  &,
63
67
  &:is(:hover, :focus) {
64
- --border-color: #{semantic-tokens.$element-ui-3};
68
+ --border-color: #{semantic-tokens.$element-ui-4};
69
+ --si-textarea-mask: transparent;
70
+ background-color: transparent;
65
71
  color: semantic-tokens.$element-text-disabled;
66
72
  }
67
73
 
@@ -88,7 +94,7 @@
88
94
 
89
95
  .form-control:not(textarea):not(select[multiple]) {
90
96
  // force height to fix line-height issue in firefox
91
- block-size: calc(#{typography.$si-line-height-body}em + #{2 * map.get(spacers.$spacers, 4)});
97
+ block-size: variables.$input-height;
92
98
  }
93
99
 
94
100
  .addon-second-icon {
@@ -101,9 +107,8 @@ textarea.form-control {
101
107
  padding-inline-start: calc(variables.$input-padding-x - 3px);
102
108
  padding-inline-end: calc(var(--si-input-padding-inline-end) - 3px);
103
109
  line-height: variables.$input-line-height;
104
- // prevent scrollbar overlapping rounded borders
105
110
  box-shadow: 0 0 0 1px var(--border-color);
106
- border: 3px solid variables.$input-bg !important; // stylelint-disable-line declaration-no-important
111
+ border: 3px solid var(--si-textarea-mask) !important; // stylelint-disable-line declaration-no-important
107
112
  outline-offset: 2px !important; // stylelint-disable-line declaration-no-important
108
113
  }
109
114
 
@@ -0,0 +1,16 @@
1
+ @use 'sass:map';
2
+
3
+ @use '../../variables/spacers';
4
+ @use '../../variables/typography';
5
+ @use '.././variables';
6
+
7
+ @mixin badge-text {
8
+ min-inline-size: 0.875rem;
9
+ border-radius: 0.4375rem;
10
+ font-size: typography.$si-font-size-caption;
11
+ line-height: 0.875rem;
12
+ padding-block: 0;
13
+ padding-inline: map.get(spacers.$spacers, 2);
14
+ font-family: variables.$font-family-sans-serif;
15
+ font-weight: typography.$si-font-weight-semibold;
16
+ }
@@ -36,7 +36,6 @@ body:has(.cdk-drag-preview, .ui-draggable-dragging) {
36
36
  }
37
37
 
38
38
  .cdk-drag-handle {
39
- font-size: 24px;
40
39
  color: variables.$element-ui-2;
41
40
  }
42
41
 
@@ -2,13 +2,13 @@
2
2
 
3
3
  @use 'sass:map';
4
4
 
5
- $si-switch-size: 20px !default;
5
+ $si-switch-size: 1.25rem !default;
6
6
  $si-switch-inline-size: calc(2 * #{$si-switch-size});
7
7
  $si-switch-inline-spacing: calc($si-switch-inline-size + map.get(variables.$spacers, 4));
8
8
  $si-switch-background-off-color: variables.$element-ui-4 !default;
9
9
  $si-switch-background-on-color: variables.$element-ui-0 !default;
10
10
  $si-switch-background-disabled-color: variables.$element-ui-3 !default;
11
- $si-switch-slider-margin: 4px !default;
11
+ $si-switch-slider-margin: 0.25rem !default;
12
12
  $si-switch-slider-off-color: variables.$element-ui-2 !default;
13
13
  $si-switch-slider-on-color: variables.$element-ui-5 !default;
14
14
  $si-switch-transition-length: variables.element-transition-duration(0.4s) !default;
@@ -22,13 +22,13 @@ $si-switch-knob-size: calc(#{$si-switch-size} - 2 * #{$si-switch-slider-margin})
22
22
  .form-check-input {
23
23
  cursor: pointer;
24
24
  inset: 0;
25
- margin-block: - map.get(variables.$spacers, 1);
25
+ margin-block: -0.125rem;
26
26
  margin-inline-start: calc(-1 * $si-switch-inline-spacing);
27
27
  inline-size: $si-switch-inline-size !important; // stylelint-disable-line declaration-no-important
28
28
  block-size: #{$si-switch-size} !important; // stylelint-disable-line declaration-no-important
29
- background-color: $si-switch-background-off-color;
29
+ background-color: variables.$element-base-1;
30
30
  transition: $si-switch-transition-length;
31
- border: 0;
31
+ border: 1px solid variables.$element-ui-2;
32
32
  border-radius: #{$si-switch-size};
33
33
  appearance: none;
34
34
 
@@ -37,9 +37,9 @@ $si-switch-knob-size: calc(#{$si-switch-size} - 2 * #{$si-switch-slider-margin})
37
37
  content: '';
38
38
  block-size: $si-switch-knob-size !important; // stylelint-disable-line declaration-no-important
39
39
  inline-size: $si-switch-knob-size !important; // stylelint-disable-line declaration-no-important
40
- inset-inline-start: $si-switch-slider-margin;
41
- inset-block-end: $si-switch-slider-margin;
42
- background-color: $si-switch-slider-off-color;
40
+ inset-inline-start: calc(#{$si-switch-slider-margin} - 1px);
41
+ inset-block-end: calc(#{$si-switch-slider-margin} - 1px);
42
+ background-color: variables.$element-text-secondary;
43
43
  transition: $si-switch-transition-length;
44
44
  border-radius: 50%;
45
45
  }
@@ -49,14 +49,14 @@ $si-switch-knob-size: calc(#{$si-switch-size} - 2 * #{$si-switch-slider-margin})
49
49
  }
50
50
 
51
51
  &:hover {
52
- background-color: variables.$element-ui-4;
52
+ background-color: variables.$element-base-1-hover;
53
53
  }
54
54
 
55
55
  &:is(:checked, .checked) {
56
- background-color: $si-switch-background-on-color;
56
+ background-color: variables.$element-action-primary;
57
57
 
58
58
  &:hover {
59
- background-color: variables.$element-ui-0-hover;
59
+ background-color: variables.$element-action-primary-hover;
60
60
  }
61
61
 
62
62
  &:active {
@@ -64,7 +64,8 @@ $si-switch-knob-size: calc(#{$si-switch-size} - 2 * #{$si-switch-slider-margin})
64
64
  }
65
65
 
66
66
  &:is(:disabled, .disabled) {
67
- background-color: $si-switch-background-on-color;
67
+ background-color: variables.$element-action-primary;
68
+ border-color: variables.$element-action-primary;
68
69
  }
69
70
  }
70
71
 
@@ -74,7 +75,7 @@ $si-switch-knob-size: calc(#{$si-switch-size} - 2 * #{$si-switch-slider-margin})
74
75
  }
75
76
 
76
77
  &:is(:checked, .checked)::before {
77
- inset-inline-start: calc(#{$si-switch-slider-margin} + #{$si-switch-size});
78
+ inset-inline-start: calc(#{$si-switch-slider-margin} + #{$si-switch-size} - 1px);
78
79
  background-color: $si-switch-slider-on-color;
79
80
  }
80
81
  }
@@ -1,3 +1,5 @@
1
+ @use 'sass:map';
2
+ @use './spacers';
1
3
  @use './animations';
2
4
 
3
5
  // Custom variables
@@ -9,10 +11,12 @@ $si-icon-font-size-lg: 1.5rem;
9
11
  $btn-width-normal: 80px;
10
12
 
11
13
  // Component styling
12
- $si-application-header-height: 48px;
13
14
 
14
- $si-titlebar-height: 36px;
15
- $si-system-banner-height: 20px;
15
+ $si-application-header-height: calc(1.5rem + (2 * map.get(spacers.$spacers, 5) + 1px));
16
+ $si-titlebar-padding-y: map.get(spacers.$spacers, 3);
17
+ $si-titlebar-height: calc(1.5rem + 2 * $si-titlebar-padding-y);
18
+ $si-system-banner-padding-y: map.get(spacers.$spacers, 1);
19
+ $si-system-banner-height: calc(1rem + 2 * $si-system-banner-padding-y);
16
20
 
17
21
  // allows adding a custom titlebar on top
18
22
  // stylelint-disable-next-line length-zero-no-unit