@danske/sapphire-css 49.1.0 → 50.2.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 (28) hide show
  1. package/components/amount/amount.module.css +6 -0
  2. package/components/amount/amount.module.css.d.ts +5 -0
  3. package/components/avatar/avatar.module.css +4 -3
  4. package/components/badge/badge.module.css +5 -0
  5. package/components/bulk-actions-bar/bulk-actions-bar.module.css +17 -1
  6. package/components/button/button.module.css +12 -0
  7. package/components/button/button.module.css.d.ts +1 -1
  8. package/components/buttonGroup/buttonGroup.module.css +4 -0
  9. package/components/calendar/calendar.module.css +8 -1
  10. package/components/dateField/dateField.module.css +27 -1
  11. package/components/dateField/dateField.module.css.d.ts +4 -2
  12. package/components/dropzone/dropzone.module.css +1 -0
  13. package/components/iconButton/iconButton.module.css +6 -0
  14. package/components/list/list.module.css +5 -0
  15. package/components/listbox/listbox.module.css +4 -0
  16. package/components/modalLayout/modalLayout.module.css +15 -10
  17. package/components/progressIndicator/progressIndicator.module.css +1 -0
  18. package/components/segmentedControl/segmentedControl.module.css +1 -0
  19. package/components/select/select.module.css +14 -0
  20. package/components/select/select.module.css.d.ts +1 -0
  21. package/components/sidebar/sidebar.module.css +1 -0
  22. package/components/slider/slider.module.css +1 -0
  23. package/components/switch/switch.module.css +40 -9
  24. package/components/table/table.module.css +4 -0
  25. package/components/tabs/tabs.module.css +4 -0
  26. package/components/tag/tag.module.css +2 -0
  27. package/components/textField/textField.module.css +28 -21
  28. package/package.json +5 -4
@@ -0,0 +1,6 @@
1
+ .sapphire-amount {
2
+ display: inline-flex;
3
+ flex-direction: row;
4
+ align-items: baseline;
5
+ gap: var(--sapphire-semantic-size-spacing-3xs);
6
+ }
@@ -0,0 +1,5 @@
1
+ declare const styles: {
2
+ readonly "sapphire-amount": string;
3
+ };
4
+ export = styles;
5
+
@@ -11,7 +11,7 @@
11
11
  white-space: nowrap;
12
12
  font-family: var(--sapphire-semantic-font-name-default);
13
13
  font-weight: var(--sapphire-semantic-font-weight-default-medium);
14
- font-size: var(--sapphire-semantic-size-font-body-md);
14
+ font-size: var(--sapphire-semantic-size-font-body-sm);
15
15
  font-style: normal;
16
16
  text-transform: capitalize;
17
17
 
@@ -31,6 +31,7 @@
31
31
 
32
32
  color: var(--sapphire-semantic-color-foreground-on-decorative-neutral);
33
33
  background: var(--sapphire-semantic-color-background-decorative-neutral);
34
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
34
35
  }
35
36
 
36
37
  /* Sizes */
@@ -39,14 +40,14 @@
39
40
  height: var(--sapphire-semantic-size-height-control-sm);
40
41
  width: var(--sapphire-semantic-size-height-control-sm);
41
42
  border-radius: var(--sapphire-semantic-size-height-control-sm);
42
- font-size: var(--sapphire-semantic-size-font-body-sm);
43
+ font-size: var(--sapphire-semantic-size-font-body-xs);
43
44
  }
44
45
 
45
46
  .sapphire-avatar--lg {
46
47
  height: var(--sapphire-semantic-size-height-control-lg);
47
48
  width: var(--sapphire-semantic-size-height-control-lg);
48
49
  border-radius: var(--sapphire-semantic-size-height-control-lg);
49
- font-size: var(--sapphire-global-size-font-125);
50
+ font-size: var(--sapphire-semantic-size-font-body-md);
50
51
  }
51
52
 
52
53
  /* Colors and variants */
@@ -31,6 +31,7 @@
31
31
 
32
32
  color: var(--sapphire-semantic-color-foreground-on-decorative-neutral);
33
33
  background: var(--sapphire-semantic-color-background-decorative-neutral);
34
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
34
35
  }
35
36
 
36
37
  /* Sizes */
@@ -49,6 +50,7 @@
49
50
  .sapphire-badge--secondary-positive {
50
51
  color: var(--sapphire-semantic-color-foreground-on-positive-subtle);
51
52
  background: var(--sapphire-semantic-color-background-positive-subtle);
53
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
52
54
  }
53
55
 
54
56
  .sapphire-badge--primary-negative {
@@ -59,6 +61,7 @@
59
61
  .sapphire-badge--secondary-negative {
60
62
  color: var(--sapphire-semantic-color-foreground-on-negative-subtle);
61
63
  background: var(--sapphire-semantic-color-background-negative-subtle);
64
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
62
65
  }
63
66
 
64
67
  .sapphire-badge--primary-warning {
@@ -69,6 +72,7 @@
69
72
  .sapphire-badge--secondary-warning {
70
73
  color: var(--sapphire-semantic-color-foreground-on-warning-subtle);
71
74
  background: var(--sapphire-semantic-color-background-warning-subtle);
75
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
72
76
  }
73
77
 
74
78
  .sapphire-badge--primary-informative {
@@ -79,6 +83,7 @@
79
83
  .sapphire-badge--secondary-informative {
80
84
  color: var(--sapphire-semantic-color-foreground-on-accent-subtle);
81
85
  background: var(--sapphire-semantic-color-background-accent-subtle);
86
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
82
87
  }
83
88
 
84
89
  /* decorative badges */
@@ -6,10 +6,26 @@
6
6
  justify-content: space-between;
7
7
  padding: var(--sapphire-semantic-size-spacing-md)
8
8
  var(--sapphire-semantic-size-spacing-xl);
9
- /* the bg color here is a hack until the design of this changes */
10
9
  background: var(--sapphire-semantic-color-background-neutral-subtle);
10
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
11
+
11
12
  position: sticky;
12
13
  top: 0;
13
14
  left: 0;
14
15
  z-index: 3;
15
16
  }
17
+
18
+ /* Firefox: backdrop-filter doesn't work on sticky elements inside overflow containers */
19
+ @supports (-moz-appearance: none) {
20
+ .sapphire-bulk-actions-bar {
21
+ background-color: var(--sapphire-semantic-color-background-surface);
22
+ }
23
+
24
+ .sapphire-bulk-actions-bar::before {
25
+ content: '';
26
+ position: absolute;
27
+ inset: 0;
28
+ z-index: -1;
29
+ background: var(--sapphire-semantic-color-background-neutral-subtle);
30
+ }
31
+ }
@@ -80,6 +80,11 @@
80
80
  flex-grow: 1;
81
81
  }
82
82
 
83
+ .sapphire-button--stretch:not(:has(.sapphire-button__icon)),
84
+ .sapphire-button--stretch-left-align:not(:has(.sapphire-button__icon)) {
85
+ padding: 0 var(--sapphire-semantic-size-spacing-xs);
86
+ }
87
+
83
88
  .sapphire-button--stretch-left-align .sapphire-button__content {
84
89
  text-align: start;
85
90
  }
@@ -153,6 +158,8 @@ a.sapphire-button {
153
158
  --sapphire-semantic-color-background-action-secondary-default
154
159
  );
155
160
  color: var(--sapphire-semantic-color-foreground-action-on-secondary-default);
161
+
162
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
156
163
  }
157
164
 
158
165
  .sapphire-button--secondary:not(:disabled):not(.is-disabled):not(:active):not(
@@ -196,6 +203,7 @@ a.sapphire-button {
196
203
  ).is-hover {
197
204
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
198
205
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-hover);
206
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
199
207
  }
200
208
 
201
209
  .sapphire-button--tertiary.is-focus,
@@ -211,6 +219,7 @@ a.sapphire-button {
211
219
  ):focus-visible:active {
212
220
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
213
221
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-active);
222
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
214
223
  }
215
224
 
216
225
  /* ## text */
@@ -277,6 +286,7 @@ a.sapphire-button {
277
286
  color: var(
278
287
  --sapphire-semantic-color-foreground-action-on-danger-secondary-default
279
288
  );
289
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
280
290
  }
281
291
 
282
292
  .sapphire-button--danger-secondary:not(:disabled):not(.is-disabled):not(
@@ -338,6 +348,7 @@ a.sapphire-button {
338
348
  color: var(
339
349
  --sapphire-semantic-color-foreground-action-on-danger-tertiary-hover
340
350
  );
351
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
341
352
  }
342
353
 
343
354
  .sapphire-button--danger-tertiary.is-focus,
@@ -361,6 +372,7 @@ a.sapphire-button {
361
372
  color: var(
362
373
  --sapphire-semantic-color-foreground-action-on-danger-tertiary-active
363
374
  );
375
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
364
376
  }
365
377
 
366
378
  /* ## Danger text */
@@ -3,6 +3,7 @@ declare const styles: {
3
3
  readonly "sapphire-button__content": string;
4
4
  readonly "sapphire-button--stretch": string;
5
5
  readonly "sapphire-button--stretch-left-align": string;
6
+ readonly "sapphire-button__icon": string;
6
7
  readonly "is-disabled": string;
7
8
  readonly "is-focus": string;
8
9
  readonly "js-focus": string;
@@ -21,7 +22,6 @@ declare const styles: {
21
22
  readonly "sapphire-button--danger-text": string;
22
23
  readonly "sapphire-button--selected": string;
23
24
  readonly "sapphire-button--unselected": string;
24
- readonly "sapphire-button__icon": string;
25
25
  readonly "sapphire-button--lg": string;
26
26
  readonly "sapphire-button--sm": string;
27
27
  };
@@ -56,6 +56,10 @@
56
56
  width: auto !important;
57
57
  }
58
58
 
59
+ .sapphire-button-group--stretch.sapphire-button-group--vertical > * {
60
+ width: auto !important;
61
+ }
62
+
59
63
  .sapphire-button-group--stretch.sapphire-button-group--stretch-auto-vertical.sapphire-button-group:has(
60
64
  > *:nth-child(3)
61
65
  ) {
@@ -123,6 +123,10 @@
123
123
  margin-left: var(--sapphire-semantic-size-spacing-sm);
124
124
  padding-top: var(--sapphire-semantic-size-spacing-2xs);
125
125
  padding-left: var(--sapphire-semantic-size-spacing-lg);
126
+ padding-right: var(--sapphire-semantic-size-spacing-lg);
127
+ }
128
+
129
+ .sapphire-calendar__table-container--md .sapphire-calendar__custom-ranges {
126
130
  padding-right: var(--sapphire-semantic-size-spacing-4xs);
127
131
  }
128
132
 
@@ -227,6 +231,7 @@
227
231
  .sapphire-calendar__button-text {
228
232
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
229
233
  transition-duration: var(--sapphire-semantic-time-fade-quick);
234
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
230
235
  }
231
236
 
232
237
  .sapphire-calendar__button:not(:disabled):not(.is-disabled).is-active
@@ -237,6 +242,7 @@
237
242
  .sapphire-calendar__button-text {
238
243
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
239
244
  transition-duration: var(--sapphire-semantic-time-fade-quick);
245
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
240
246
  }
241
247
 
242
248
  .sapphire-calendar__table[aria-readonly='true'] .sapphire-calendar__button {
@@ -255,6 +261,7 @@
255
261
  background: var(
256
262
  --sapphire-semantic-color-background-action-select-secondary-default
257
263
  );
264
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
258
265
  }
259
266
 
260
267
  .sapphire-calendar__button.sapphire-calendar__button--range-selection:not(
@@ -420,7 +427,7 @@
420
427
 
421
428
  .sapphire-calendar__table-container--md
422
429
  .sapphire-calendar__button.sapphire-calendar__button--current::after {
423
- bottom: var(--sapphire-global-size-generic-10);
430
+ bottom: var(--sapphire-semantic-size-spacing-2xs);
424
431
  }
425
432
 
426
433
  .sapphire-calendar__button.sapphire-calendar__button--selected:not(
@@ -46,6 +46,12 @@
46
46
  var(--sapphire-dateField-icon-size);
47
47
  }
48
48
 
49
+ .sapphire-date-field--align-right.sapphire-date-field--no-calendar {
50
+ grid-template-columns:
51
+ var(--sapphire-dateField-icon-size)
52
+ auto;
53
+ }
54
+
49
55
  .sapphire-date-field--no-calendar {
50
56
  padding-left: var(--sapphire-semantic-size-spacing-control-horizontal-lg);
51
57
  }
@@ -56,6 +62,20 @@
56
62
  auto;
57
63
  }
58
64
 
65
+ .sapphire-date-field--align-right.sapphire-date-field--no-clear-button {
66
+ grid-template-columns:
67
+ auto
68
+ var(--sapphire-dateField-icon-size);
69
+ }
70
+
71
+ .sapphire-date-field--align-right .sapphire-date-field__input {
72
+ grid-column: 2;
73
+ }
74
+
75
+ .sapphire-date-field--align-right > .sapphire-date-field__button:last-child {
76
+ grid-column: 3;
77
+ }
78
+
59
79
  .sapphire-date-field--no-clear-button.sapphire-date-field--no-calendar {
60
80
  grid-template-columns: 1fr;
61
81
  }
@@ -66,7 +86,9 @@
66
86
 
67
87
  .sapphire-date-field__input-group {
68
88
  display: grid;
69
- grid-template-columns: min-content var(--sapphire-dateField-icon-size) min-content;
89
+ grid-template-columns:
90
+ min-content var(--sapphire-dateField-icon-size)
91
+ min-content;
70
92
  align-items: center;
71
93
  }
72
94
 
@@ -79,6 +101,10 @@
79
101
  font-weight: var(--sapphire-semantic-font-weight-default-regular);
80
102
  }
81
103
 
104
+ .sapphire-date-field__input--align-right {
105
+ justify-content: flex-end;
106
+ }
107
+
82
108
  .sapphire-date-field__range-separator {
83
109
  color: var(--sapphire-semantic-color-foreground-secondary);
84
110
  text-align: center;
@@ -1,10 +1,13 @@
1
1
  declare const styles: {
2
2
  readonly "sapphire-date-field": string;
3
3
  readonly "sapphire-date-field--no-calendar": string;
4
+ readonly "sapphire-date-field--align-right": string;
4
5
  readonly "sapphire-date-field--no-clear-button": string;
6
+ readonly "sapphire-date-field__input": string;
7
+ readonly "sapphire-date-field__button": string;
5
8
  readonly "sapphire-date-field--range": string;
6
9
  readonly "sapphire-date-field__input-group": string;
7
- readonly "sapphire-date-field__input": string;
10
+ readonly "sapphire-date-field__input--align-right": string;
8
11
  readonly "sapphire-date-field__range-separator": string;
9
12
  readonly "sapphire-date-field--md": string;
10
13
  readonly "is-disabled": string;
@@ -15,7 +18,6 @@ declare const styles: {
15
18
  readonly "sapphire-date-field--error": string;
16
19
  readonly "is-hover": string;
17
20
  readonly "js-hover": string;
18
- readonly "sapphire-date-field__button": string;
19
21
  readonly "sapphire-date-field__button--clear": string;
20
22
  readonly "sapphire-date-field__icon": string;
21
23
  readonly "is-active": string;
@@ -110,6 +110,7 @@
110
110
 
111
111
  .sapphire-dropzone--dropping {
112
112
  background: var(--sapphire-semantic-color-background-accent-subtle);
113
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
113
114
  }
114
115
 
115
116
  .sapphire-dropzone.sapphire-dropzone--dropping::before {
@@ -115,6 +115,7 @@ a.sapphire-icon-button {
115
115
  --sapphire-semantic-color-background-action-secondary-default
116
116
  );
117
117
  color: var(--sapphire-semantic-color-foreground-action-on-secondary-default);
118
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
118
119
  }
119
120
 
120
121
  .sapphire-icon-button--secondary:not(:disabled):not(.is-disabled):not(
@@ -158,6 +159,7 @@ a.sapphire-icon-button {
158
159
  ):not(.is-active).is-hover {
159
160
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
160
161
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-hover);
162
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
161
163
  }
162
164
 
163
165
  .sapphire-icon-button--tertiary.is-focus,
@@ -173,6 +175,7 @@ a.sapphire-icon-button {
173
175
  ):focus-visible:active {
174
176
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
175
177
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-active);
178
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
176
179
  }
177
180
 
178
181
  /* Danger */
@@ -214,6 +217,7 @@ a.sapphire-icon-button {
214
217
  color: var(
215
218
  --sapphire-semantic-color-foreground-action-on-danger-secondary-default
216
219
  );
220
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
217
221
  }
218
222
 
219
223
  .sapphire-icon-button--danger-secondary:not(:disabled):not(.is-disabled):not(
@@ -277,6 +281,7 @@ a.sapphire-icon-button {
277
281
  color: var(
278
282
  --sapphire-semantic-color-foreground-action-on-danger-tertiary-hover
279
283
  );
284
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
280
285
  }
281
286
 
282
287
  .sapphire-icon-button--danger-tertiary.is-focus,
@@ -302,6 +307,7 @@ a.sapphire-icon-button {
302
307
  color: var(
303
308
  --sapphire-semantic-color-foreground-action-on-danger-tertiary-active
304
309
  );
310
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
305
311
  }
306
312
 
307
313
  /**
@@ -91,6 +91,7 @@ instead of being applied on the list item itself */
91
91
  background: var(
92
92
  --sapphire-semantic-color-background-action-select-secondary-default
93
93
  );
94
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
94
95
  }
95
96
 
96
97
  .sapphire-list--negative-margin-self {
@@ -167,6 +168,7 @@ instead of being applied on the list item itself */
167
168
  [aria-disabled='true']
168
169
  ):not(:disabled):not(:active):not(:has(:focus-within)):hover {
169
170
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
171
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
170
172
  }
171
173
 
172
174
  .sapphire-list__item--selected.is-hover:not(.is-active):not(:has(.is-hover)),
@@ -176,6 +178,7 @@ instead of being applied on the list item itself */
176
178
  background: var(
177
179
  --sapphire-semantic-color-background-action-select-secondary-hover
178
180
  );
181
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
179
182
  }
180
183
 
181
184
  /*
@@ -208,6 +211,7 @@ the contentRight button, when it triggers a menu, does not get the active state.
208
211
  background-color: var(
209
212
  --sapphire-semantic-color-background-action-secondary-hover
210
213
  );
214
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
211
215
  }
212
216
 
213
217
  .sapphire-list__item--selected:not(.is-disabled).is-active:not(
@@ -219,6 +223,7 @@ the contentRight button, when it triggers a menu, does not get the active state.
219
223
  background-color: var(
220
224
  --sapphire-semantic-color-background-action-select-secondary-active
221
225
  );
226
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
222
227
  }
223
228
 
224
229
  .sapphire-list__item[aria-disabled='true']
@@ -232,6 +232,7 @@ Hence a separate class for checkmark icon to be used in the alignment styles */
232
232
  .sapphire-listbox__content {
233
233
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-hover);
234
234
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
235
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
235
236
  }
236
237
 
237
238
  .sapphire-listbox__item--danger:not(.is-disabled):not(.is-active).is-hover
@@ -243,6 +244,7 @@ Hence a separate class for checkmark icon to be used in the alignment styles */
243
244
  background: var(
244
245
  --sapphire-semantic-color-background-action-danger-tertiary-hover
245
246
  );
247
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
246
248
  }
247
249
 
248
250
  .sapphire-listbox__item--danger:not(.is-disabled):not(.is-active).is-hover
@@ -267,6 +269,7 @@ Hence a separate class for checkmark icon to be used in the alignment styles */
267
269
  .sapphire-listbox__item:not(.is-disabled).is-active .sapphire-listbox__content {
268
270
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-active);
269
271
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
272
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
270
273
  }
271
274
 
272
275
  .sapphire-listbox__item--danger:not(.is-disabled).is-active
@@ -274,6 +277,7 @@ Hence a separate class for checkmark icon to be used in the alignment styles */
274
277
  background: var(
275
278
  --sapphire-semantic-color-background-action-danger-tertiary-active
276
279
  );
280
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
277
281
  }
278
282
 
279
283
  .sapphire-listbox__item--danger:not(.is-disabled).is-active
@@ -123,20 +123,25 @@
123
123
  );
124
124
  padding: 0 var(--sapphire-semantic-size-spacing-container-horizontal-md);
125
125
  min-height: var(--sapphire-global-size-generic-100);
126
- background-color: var(--sapphire-semantic-color-background-surface);
126
+ background: var(--sapphire-semantic-color-background-neutral-subtle);
127
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
127
128
  display: flex;
128
129
  align-items: center;
129
130
  position: sticky;
130
131
  top: 0;
131
132
  }
132
133
 
133
- /*
134
- * Fix for section semi-transparent background not looking good when scrolled.
135
- */
136
- .sapphire-modal-layout__section-title::before {
137
- content: '';
138
- background: var(--sapphire-semantic-color-background-neutral-subtle);
139
- position: absolute;
140
- inset: 0;
141
- z-index: -1;
134
+ /* Firefox: backdrop-filter doesn't work on sticky elements inside overflow containers */
135
+ @supports (-moz-appearance: none) {
136
+ .sapphire-modal-layout__section-title {
137
+ background-color: var(--sapphire-semantic-color-background-surface);
138
+ }
139
+
140
+ .sapphire-modal-layout__section-title::before {
141
+ content: '';
142
+ position: absolute;
143
+ inset: 0;
144
+ z-index: -1;
145
+ background: var(--sapphire-semantic-color-background-neutral-subtle);
146
+ }
142
147
  }
@@ -4,6 +4,7 @@
4
4
  width: 100%;
5
5
  overflow: hidden;
6
6
  background: var(--sapphire-semantic-color-background-progress-track);
7
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
7
8
  position: relative;
8
9
  }
9
10
 
@@ -20,6 +20,7 @@
20
20
  position: relative;
21
21
  height: 100%;
22
22
  background: var(--sapphire-semantic-color-background-segmented-control-track);
23
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
23
24
  border-radius: var(--sapphire-semantic-size-height-control-lg);
24
25
  padding: var(--sapphire-global-size-static-5);
25
26
  box-sizing: border-box;
@@ -73,6 +73,7 @@
73
73
  line-height: 0;
74
74
  width: var(--sapphire-semantic-size-icon-md);
75
75
  height: var(--sapphire-semantic-size-icon-md);
76
+ color: var(--sapphire-semantic-color-foreground-secondary);
76
77
  }
77
78
 
78
79
  .sapphire-select--md .sapphire-select__icon-container {
@@ -145,6 +146,12 @@
145
146
  var(--sapphire-semantic-color-border-field-hover);
146
147
  }
147
148
 
149
+ .sapphire-select:not(.is-disabled).is-hover .sapphire-select__icon-container,
150
+ .sapphire-select:not(.is-disabled):not(.js-hover):hover
151
+ .sapphire-select__icon-container {
152
+ color: var(--sapphire-semantic-color-foreground-primary);
153
+ }
154
+
148
155
  /**
149
156
  * Focus
150
157
  */
@@ -162,3 +169,10 @@
162
169
  cursor: not-allowed;
163
170
  opacity: var(--sapphire-semantic-opacity-disabled);
164
171
  }
172
+
173
+ /**
174
+ * Open state
175
+ */
176
+ .sapphire-select--open .sapphire-select__icon-container {
177
+ color: var(--sapphire-semantic-color-foreground-primary);
178
+ }
@@ -13,6 +13,7 @@ declare const styles: {
13
13
  readonly "is-focus": string;
14
14
  readonly "is-hover": string;
15
15
  readonly "js-hover": string;
16
+ readonly "sapphire-select--open": string;
16
17
  };
17
18
  export = styles;
18
19
 
@@ -82,6 +82,7 @@
82
82
  top: 0;
83
83
  left: 100%;
84
84
  height: 100%;
85
+ z-index: 10;
85
86
  border-right: var(--sapphire-semantic-size-border-sm) solid
86
87
  var(--sapphire-semantic-color-border-secondary);
87
88
  }
@@ -19,6 +19,7 @@
19
19
  display: block;
20
20
  position: absolute;
21
21
  background: var(--sapphire-semantic-color-background-progress-track);
22
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
22
23
  height: var(--sapphire-global-size-generic-10);
23
24
  border-radius: var(--sapphire-semantic-size-radius-sm);
24
25
  width: var(--sapphire-semantic-size-width-field);
@@ -80,11 +80,12 @@
80
80
  * knob track
81
81
  */
82
82
  .sapphire-switch-track {
83
- background: var(--sapphire-semantic-color-background-switch-default);
84
83
  box-sizing: border-box;
85
84
  position: relative;
86
85
  width: var(--sapphire-global-size-generic-110);
87
- transition: background var(--sapphire-semantic-time-motion-quick)
86
+ box-shadow: inset 0 0 0 var(--sapphire-semantic-size-border-sm)
87
+ var(--sapphire-semantic-color-border-field-default);
88
+ transition: box-shadow var(--sapphire-semantic-time-motion-quick)
88
89
  var(--sapphire-semantic-transitions-fade);
89
90
  height: var(--sapphire-semantic-size-height-control-xs);
90
91
  border-radius: calc(var(--sapphire-semantic-size-height-control-xs) / 2);
@@ -97,7 +98,8 @@
97
98
  .sapphire-switch-input:not(:disabled)
98
99
  ~ .sapphire-switch-track,
99
100
  .sapphire-switch:not(:active):not(.is-active).is-hover .sapphire-switch-track {
100
- background: var(--sapphire-semantic-color-background-switch-hover);
101
+ box-shadow: inset 0 0 0 var(--sapphire-semantic-size-border-sm)
102
+ var(--sapphire-semantic-color-border-field-hover);
101
103
  }
102
104
 
103
105
  /* active (unchecked) */
@@ -107,12 +109,14 @@
107
109
  .sapphire-switch.is-active
108
110
  .sapphire-switch-input:not(:disabled)
109
111
  ~ .sapphire-switch-track {
110
- background: var(--sapphire-semantic-color-background-switch-active);
112
+ box-shadow: inset 0 0 0 var(--sapphire-semantic-size-border-sm)
113
+ var(--sapphire-semantic-color-border-field-active);
111
114
  }
112
115
 
113
- /* default (unchecked) */
116
+ /* default (checked) */
114
117
  .sapphire-switch-input:checked ~ .sapphire-switch-track {
115
118
  background: var(--sapphire-semantic-color-background-action-select-default);
119
+ box-shadow: none;
116
120
  }
117
121
 
118
122
  /* hover (checked) */
@@ -123,6 +127,7 @@
123
127
  .sapphire-switch-input:checked
124
128
  ~ .sapphire-switch-track {
125
129
  background: var(--sapphire-semantic-color-background-action-select-hover);
130
+ box-shadow: none;
126
131
  }
127
132
 
128
133
  /* active (checked) */
@@ -133,6 +138,7 @@
133
138
  .sapphire-switch-input:not(:disabled):checked
134
139
  ~ .sapphire-switch-track {
135
140
  background: var(--sapphire-semantic-color-background-action-select-active);
141
+ box-shadow: none;
136
142
  }
137
143
 
138
144
  /* disabled */
@@ -158,16 +164,41 @@
158
164
  height: 100%;
159
165
  aspect-ratio: 1/1;
160
166
  border-radius: 50%;
161
- background: var(
162
- --sapphire-semantic-color-foreground-action-on-select-default
163
- );
167
+ background-color: var(--sapphire-semantic-color-border-field-default);
164
168
  background-clip: content-box;
165
169
  left: 0;
166
170
  transition: left var(--sapphire-semantic-time-motion-quick)
167
- var(--sapphire-semantic-transitions-dynamic);
171
+ var(--sapphire-semantic-transitions-dynamic),
172
+ background-color var(--sapphire-semantic-time-motion-quick)
173
+ var(--sapphire-semantic-transitions-fade);
174
+ }
175
+
176
+ /* hover (unchecked) */
177
+ .sapphire-switch:not(:active):not(.is-active):not(.js-hover):hover
178
+ .sapphire-switch-input:not(:disabled)
179
+ ~ .sapphire-switch-track::after,
180
+ .sapphire-switch:not(:active):not(.is-active).is-hover
181
+ .sapphire-switch-track::after {
182
+ background-color: var(--sapphire-semantic-color-border-field-hover);
168
183
  }
184
+
185
+ /* active (unchecked) */
186
+ .sapphire-switch:active
187
+ .sapphire-switch-input:not(:disabled)
188
+ ~ .sapphire-switch-track::after,
189
+ .sapphire-switch.is-active
190
+ .sapphire-switch-input:not(:disabled)
191
+ ~ .sapphire-switch-track::after {
192
+ background-color: var(--sapphire-semantic-color-border-field-active);
193
+ }
194
+
169
195
  .sapphire-switch-input:checked ~ .sapphire-switch-track::after {
170
196
  left: calc(100% - var(--sapphire-semantic-size-height-control-xs));
197
+
198
+ /* override hover and active states from unchecked state style */
199
+ background-color: var(
200
+ --sapphire-semantic-color-foreground-action-on-select-default
201
+ ) !important;
171
202
  }
172
203
 
173
204
  .sapphire-switch--md .sapphire-switch-track {
@@ -330,6 +330,7 @@ th.sapphire-table__selectionCell:first-child {
330
330
  --sapphire-table-row-bg-active: var(
331
331
  --sapphire-semantic-color-background-action-tertiary-active
332
332
  );
333
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
333
334
  }
334
335
 
335
336
  .sapphire-table--interactive
@@ -344,6 +345,7 @@ th.sapphire-table__selectionCell:first-child {
344
345
  --sapphire-table-row-bg: var(
345
346
  --sapphire-semantic-color-background-action-select-secondary-default
346
347
  );
348
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
347
349
  }
348
350
 
349
351
  /**
@@ -400,6 +402,7 @@ th.sapphire-table__selectionCell:first-child {
400
402
  );
401
403
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-hover);
402
404
  cursor: pointer;
405
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
403
406
  }
404
407
 
405
408
  .sapphire-table--interactive
@@ -419,6 +422,7 @@ th.sapphire-table__selectionCell:first-child {
419
422
  --sapphire-table-row-bg: var(
420
423
  --sapphire-semantic-color-background-action-highlight
421
424
  );
425
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
422
426
  }
423
427
 
424
428
  /* TODO remove tbody in v6 */
@@ -171,6 +171,7 @@
171
171
  .is-active
172
172
  ):not(.sapphire-tabs__tab--active).is-hover {
173
173
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
174
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
174
175
  }
175
176
 
176
177
  .sapphire-tabs__tab--active:not(:disabled):not(.is-disabled):not(
@@ -178,11 +179,13 @@
178
179
  ):hover,
179
180
  .sapphire-tabs__tab--active:not(:disabled):not(.is-disabled).is-hover {
180
181
  background: var(--sapphire-semantic-color-state-accent-subtle-hover);
182
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
181
183
  }
182
184
 
183
185
  .sapphire-tabs__tab:not(:disabled):not(.is-disabled):active,
184
186
  .sapphire-tabs__tab:not(:disabled):not(.is-disabled):focus-visible:active {
185
187
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
188
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
186
189
  }
187
190
 
188
191
  .sapphire-tabs__tab--active:active:not(:disabled):not(.is-disabled):not(
@@ -190,6 +193,7 @@
190
193
  ):hover,
191
194
  .sapphire-tabs__tab--active:active:not(:disabled):not(.is-disabled).is-hover {
192
195
  background: var(--sapphire-semantic-color-state-accent-subtle-active);
196
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
193
197
  }
194
198
 
195
199
  .sapphire-tabs__tab.js-focus.is-focus,
@@ -81,12 +81,14 @@
81
81
  background: var(--sapphire-semantic-color-background-action-tertiary-hover);
82
82
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-hover);
83
83
  cursor: pointer;
84
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
84
85
  }
85
86
 
86
87
  .sapphire-tag--actionable.is-active {
87
88
  background: var(--sapphire-semantic-color-background-action-tertiary-active);
88
89
  color: var(--sapphire-semantic-color-foreground-action-on-tertiary-active);
89
90
  cursor: pointer;
91
+ backdrop-filter: var(--sapphire-semantic-backdrop-filter-blur);
90
92
  }
91
93
 
92
94
  .sapphire-tag:disabled,
@@ -162,8 +162,7 @@
162
162
  );
163
163
  }
164
164
 
165
- .sapphire-text-field--md
166
- .sapphire-text-field--multiline
165
+ .sapphire-text-field--md.sapphire-text-field--multiline
167
166
  .sapphire-text-field__input {
168
167
  padding: var(--sapphire-semantic-size-spacing-control-vertical-md)
169
168
  var(--sapphire-semantic-size-spacing-control-horizontal-md);
@@ -180,6 +179,15 @@
180
179
  resize: vertical;
181
180
  }
182
181
 
182
+ .sapphire-text-field--multiline.sapphire-text-field--resizable
183
+ .sapphire-text-field__input::-webkit-resizer {
184
+ -webkit-appearance: none;
185
+ background-image: url("data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.81501 0.184985C8.06166 0.431632 8.06166 0.831526 7.81501 1.07817L1.07817 7.81501C0.831526 8.06166 0.431632 8.06166 0.184985 7.81501C-0.0616617 7.56837 -0.0616617 7.16847 0.184985 6.92183L6.92183 0.184985C7.16847 -0.0616617 7.56837 -0.0616617 7.81501 0.184985ZM7.81501 4.39551C8.06166 4.64216 8.06166 5.04205 7.81501 5.2887L5.2887 7.81501C5.04205 8.06166 4.64216 8.06166 4.39551 7.81501C4.14886 7.56837 4.14886 7.16847 4.39551 6.92183L6.92183 4.39551C7.16847 4.14886 7.56837 4.14886 7.81501 4.39551Z' fill='%23002346' fill-opacity='0.64'/%3E%3C/svg%3E");
186
+ background-repeat: no-repeat;
187
+ background-position: right var(--sapphire-semantic-size-spacing-3xs) bottom
188
+ var(--sapphire-semantic-size-spacing-3xs);
189
+ }
190
+
183
191
  .sapphire-text-field__counter {
184
192
  color: var(--sapphire-semantic-color-foreground-secondary);
185
193
  margin-left: auto;
@@ -197,7 +205,8 @@
197
205
  /**
198
206
  * Disabled
199
207
  */
200
- .sapphire-text-field:has([disabled]) {
208
+ .sapphire-text-field:has(input[disabled]),
209
+ .sapphire-text-field:has(textarea[disabled]) {
201
210
  cursor: not-allowed;
202
211
  opacity: var(--sapphire-semantic-opacity-disabled);
203
212
  }
@@ -205,12 +214,14 @@
205
214
  /**
206
215
  * Hover
207
216
  */
208
- .sapphire-text-field:not(:has([disabled])):not(.sapphire-text-field--error):not(
209
- .is-focus
210
- ):not(:focus-within).is-hover,
211
- .sapphire-text-field:not(:has([disabled])):not(.sapphire-text-field--error):not(
212
- .is-focus
213
- ):not(:focus-within):not(.js-hover):hover {
217
+ .sapphire-text-field:not(:has(input[disabled])):not(
218
+ :has(textarea[disabled])
219
+ ):not(.sapphire-text-field--error):not(.is-focus):not(:focus-within).is-hover,
220
+ .sapphire-text-field:not(:has(input[disabled])):not(
221
+ :has(textarea[disabled])
222
+ ):not(.sapphire-text-field--error):not(.is-focus):not(:focus-within):not(
223
+ .js-hover
224
+ ):hover {
214
225
  outline: solid var(--sapphire-semantic-size-border-sm)
215
226
  var(--sapphire-semantic-color-border-field-hover);
216
227
  }
@@ -255,14 +266,14 @@
255
266
  */
256
267
  .sapphire-text-field__stepper {
257
268
  display: flex;
258
- flex-direction: column;
269
+ flex-direction: row;
259
270
  justify-items: stretch;
260
- padding: var(--sapphire-semantic-size-spacing-4xs)
271
+ padding: var(--sapphire-semantic-size-spacing-sm)
261
272
  calc(
262
- var(--sapphire-semantic-size-spacing-4xs) +
273
+ var(--sapphire-semantic-size-spacing-sm) +
263
274
  var(--sapphire-semantic-size-border-sm)
264
275
  );
265
- gap: var(--sapphire-semantic-size-spacing-4xs);
276
+ gap: var(--sapphire-semantic-size-spacing-sm);
266
277
  }
267
278
 
268
279
  .sapphire-text-field:has(.sapphire-text-field__stepper)
@@ -301,24 +312,20 @@
301
312
  cursor: pointer;
302
313
 
303
314
  /* color */
304
- background: var(
305
- --sapphire-semantic-color-background-action-secondary-default
306
- );
307
- color: var(--sapphire-semantic-color-foreground-action-on-secondary-default);
315
+ background: none;
316
+ color: var(--sapphire-semantic-color-foreground-secondary);
308
317
  }
309
318
 
310
319
  .sapphire-text-field__stepper-button:not(:active):not(.is-active):not(
311
320
  .js-hover
312
321
  ):hover,
313
322
  .sapphire-text-field__stepper-button:not(:active):not(.is-active).is-hover {
314
- background: var(--sapphire-semantic-color-background-action-secondary-hover);
315
- color: var(--sapphire-semantic-color-foreground-action-on-secondary-hover);
323
+ color: var(--sapphire-semantic-color-foreground-primary);
316
324
  }
317
325
 
318
326
  .sapphire-text-field__stepper-button.is-active,
319
327
  .sapphire-text-field__stepper-button:active {
320
- background: var(--sapphire-semantic-color-background-action-secondary-active);
321
- color: var(--sapphire-semantic-color-foreground-action-on-secondary-active);
328
+ color: var(--sapphire-semantic-color-foreground-primary);
322
329
  }
323
330
 
324
331
  .sapphire-text-field--md.sapphire-text-field__stepper-button {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danske/sapphire-css",
3
- "version": "49.1.0",
3
+ "version": "50.2.1",
4
4
  "description": "CSS implementation of the Sapphire Design System from Danske Bank A/S",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "sideEffects": false,
@@ -38,7 +38,8 @@
38
38
  "build:themes": "yarn build:themes:esm && yarn build:themes:cjs",
39
39
  "build:themes:esm": "tsc -p tsconfig.themes.json --module ES2020 --outDir build/themes/esm && tsc -p tsconfig.themes.json --module ES2020 --outDir themes",
40
40
  "build:themes:cjs": "tsc -p tsconfig.themes.json --module CommonJS --outDir build/themes/cjs && tsc -p tsconfig.themes.json --module CommonJS",
41
- "prepare": "yarn run build"
41
+ "prepare": "yarn run build",
42
+ "postpublish": "node ../../../scripts/append-release-notes.js"
42
43
  },
43
44
  "devDependencies": {
44
45
  "@babel/core": "^7.20.12",
@@ -67,7 +68,7 @@
67
68
  "typescript": "~4.6.4"
68
69
  },
69
70
  "dependencies": {
70
- "@danske/sapphire-design-tokens": "^42.3.0"
71
+ "@danske/sapphire-design-tokens": "^42.5.0"
71
72
  },
72
- "gitHead": "88e11202ab17bb9830ba1f261d631ab24edf57d2"
73
+ "gitHead": "468518f32524d0aa811f5d273a5c4d4a6b1dcf62"
73
74
  }