@digdir/designsystemet-css 1.0.0-next.33 → 1.0.0-next.35

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 (61) hide show
  1. package/accordion.css +23 -6
  2. package/alert.css +17 -7
  3. package/avatar.css +18 -7
  4. package/badge.css +46 -54
  5. package/breadcrumbs.css +52 -55
  6. package/button.css +13 -3
  7. package/card.css +90 -148
  8. package/chip.css +113 -152
  9. package/dist/accordion.css +1 -1
  10. package/dist/alert.css +1 -1
  11. package/dist/avatar.css +1 -1
  12. package/dist/badge.css +1 -1
  13. package/dist/breadcrumbs.css +1 -1
  14. package/dist/button.css +1 -1
  15. package/dist/card.css +1 -1
  16. package/dist/chip.css +1 -1
  17. package/dist/divider.css +1 -1
  18. package/dist/dropdown.css +1 -0
  19. package/dist/error-summary.css +1 -1
  20. package/dist/fieldset.css +1 -1
  21. package/dist/helptext.css +1 -1
  22. package/dist/index.css +1 -1
  23. package/dist/link.css +1 -1
  24. package/dist/list.css +1 -1
  25. package/dist/modal.css +1 -1
  26. package/dist/pagination.css +1 -1
  27. package/dist/popover.css +1 -1
  28. package/dist/skeleton.css +1 -1
  29. package/dist/skiplink.css +1 -1
  30. package/dist/spinner.css +1 -1
  31. package/dist/table.css +1 -1
  32. package/dist/tabs.css +1 -1
  33. package/dist/tag.css +1 -1
  34. package/dist/textarea.css +1 -1
  35. package/dist/togglegroup.css +1 -1
  36. package/dist/tooltip.css +1 -1
  37. package/dist/utilities.css +1 -1
  38. package/divider.css +2 -1
  39. package/dropdown.css +57 -0
  40. package/error-summary.css +8 -6
  41. package/fieldset.css +37 -36
  42. package/helptext.css +41 -52
  43. package/index.css +6 -9
  44. package/link.css +5 -4
  45. package/list.css +16 -10
  46. package/modal.css +58 -74
  47. package/package.json +1 -1
  48. package/pagination.css +33 -24
  49. package/popover.css +20 -9
  50. package/skeleton.css +32 -37
  51. package/skiplink.css +6 -10
  52. package/spinner.css +5 -6
  53. package/table.css +7 -0
  54. package/tabs.css +59 -58
  55. package/tag.css +6 -0
  56. package/textarea.css +1 -0
  57. package/togglegroup.css +7 -18
  58. package/tooltip.css +5 -2
  59. package/utilities.css +169 -13
  60. package/dist/dropdownmenu.css +0 -1
  61. package/dropdownmenu.css +0 -43
package/accordion.css CHANGED
@@ -4,7 +4,6 @@
4
4
  --dsc-accordion-border: 1px solid var(--ds-color-neutral-border-subtle);
5
5
  --dsc-accordion-chevron-gap: var(--ds-spacing-2);
6
6
  --dsc-accordion-chevron-size: var(--ds-spacing-6);
7
- --dsc-accordion-chevron-rotate: 0deg;
8
7
  --dsc-accordion-heading-background--hover: var(--ds-color-neutral-surface-default);
9
8
  --dsc-accordion-heading-background--open: var(--ds-color-neutral-background-subtle);
10
9
  --dsc-accordion-heading-background: var(--ds-color-neutral-background-default);
@@ -62,6 +61,7 @@
62
61
  .ds-accordion__item {
63
62
  background: var(--dsc-accordion-background);
64
63
  border-block: var(--dsc-accordion-border);
64
+ box-sizing: border-box;
65
65
 
66
66
  & > :is(summary, u-summary) {
67
67
  background: var(--dsc-accordion-heading-background);
@@ -72,6 +72,9 @@
72
72
  padding-block: var(--dsc-accordion-padding);
73
73
  padding-inline: calc(var(--dsc-accordion-padding) + var(--dsc-accordion-chevron-size) + var(--dsc-accordion-chevron-gap)) var(--dsc-accordion-padding);
74
74
 
75
+ @composes ds-focus from './utilities.css';
76
+ @composes ds-body-text--sm from './utilities.css';
77
+
75
78
  &:focus-visible {
76
79
  position: relative; /* Ensure foucs outline renders on top */
77
80
  }
@@ -84,7 +87,6 @@
84
87
  mask: 50% / contain no-repeat
85
88
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.97 9.47a.75.75 0 0 1 1.06 0L12 14.44l4.97-4.97a.75.75 0 1 1 1.06 1.06l-5.5 5.5a.75.75 0 0 1-1.06 0l-5.5-5.5a.75.75 0 0 1 0-1.06'/%3E%3C/svg%3E");
86
89
  position: absolute;
87
- rotate: var(--dsc-accordion-chevron-rotate);
88
90
  margin-inline: calc(
89
91
  (var(--dsc-accordion-chevron-size) + var(--dsc-accordion-chevron-gap)) * -1
90
92
  ); /* Using margin instead of top/left to avoid position: relative and to support dir="rtl" */
@@ -104,11 +106,10 @@
104
106
 
105
107
  &[open] > :is(summary, u-summary) {
106
108
  background: var(--dsc-accordion-heading-background--open);
107
- }
108
109
 
109
- /* Make flip on click */
110
- &[open]:not([data-chevron-open='false']) {
111
- --dsc-accordion-chevron-rotate: -180deg;
110
+ &::before {
111
+ rotate: 180deg;
112
+ }
112
113
  }
113
114
 
114
115
  @media (hover: hover) and (pointer: fine) {
@@ -116,4 +117,20 @@
116
117
  background: var(--dsc-accordion-heading-background--hover);
117
118
  }
118
119
  }
120
+
121
+ @media (prefers-reduced-motion: no-preference) {
122
+ interpolate-size: allow-keywords; /* stylelint-disable-line property-no-unknown */
123
+ }
124
+
125
+ &::part(details-content) {
126
+ block-size: 0;
127
+ overflow-y: clip;
128
+ transition:
129
+ content-visibility 400ms allow-discrete,
130
+ height 400ms;
131
+ }
132
+
133
+ &[open]::part(details-content) {
134
+ height: auto;
135
+ }
119
136
  }
package/alert.css CHANGED
@@ -12,41 +12,47 @@
12
12
  background: var(--dsc-alert-background);
13
13
  border-radius: var(--dsc-alert-border-radius);
14
14
  border: 1px solid var(--dsc-alert-border-color);
15
+ box-sizing: border-box;
15
16
  color: var(--dsc-alert-color);
16
17
  padding-block: var(--dsc-alert-padding);
17
18
  padding-inline: calc(var(--dsc-alert-padding) + var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) var(--dsc-alert-padding);
18
19
 
20
+ @composes ds-body-text--md from './utilities.css';
21
+
19
22
  & > :is(h1,h2,h3,h4,h5,h6):first-child::before, /* If Alert starts with Heading, align icon to this */
20
23
  &:not(:has(> :is(h1,h2,h3,h4,h5,h6):first-child))::before /* If there is no Heading, align icon to Alert itself */ {
21
24
  background-color: var(--dsc-alert-icon-color);
22
25
  content: '';
23
26
  display: block;
24
27
  height: var(--dsc-alert-icon-size);
25
- margin-inline: calc((var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) * -1); /* Using margin instead of top/left to avoid position: relative and to support dir="rtl" */
28
+ margin-inline: calc(
29
+ (var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) * -1
30
+ ); /* Using margin instead of top/left to avoid position: relative and to support dir="rtl" */
31
+
26
32
  mask: var(--dsc-alert-icon-url) center/contain no-repeat;
27
33
  position: absolute;
28
- translate: 0 calc(.5lh - var(--dsc-alert-icon-size) / 2); /* Center icon to line height */
34
+ translate: 0 calc((1lh - var(--dsc-alert-icon-size)) / 2); /* Center icon to line height */
29
35
  width: var(--dsc-alert-icon-size);
30
36
  }
31
37
 
32
38
  /**
33
39
  * Colors
34
40
  */
35
- &[data-color="warning"] {
41
+ &[data-color='warning'] {
36
42
  --dsc-alert-border-color: var(--ds-color-warning-border-default);
37
43
  --dsc-alert-icon-color: var(--ds-color-warning-text-subtle);
38
44
  --dsc-alert-background: var(--ds-color-warning-surface-default);
39
45
  --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 2.25a.75.75 0 0 1 .66.39l9.52 17.25a.75.75 0 0 1-.65 1.11H2.47a.75.75 0 0 1-.65-1.11l9.52-17.25a.75.75 0 0 1 .66-.39m0 6.5a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75m-1 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0'/%3E%3C/svg%3E");
40
46
  }
41
47
 
42
- &[data-color="success"] {
48
+ &[data-color='success'] {
43
49
  --dsc-alert-background: var(--ds-color-success-surface-default);
44
50
  --dsc-alert-border-color: var(--ds-color-success-border-default);
45
51
  --dsc-alert-icon-color: var(--ds-color-success-text-subtle);
46
52
  --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 21.75a9.75 9.75 0 1 0 0-19.5 9.75 9.75 0 0 0 0 19.5m4.95-12.47a.81.81 0 0 0-1.24-1.05l-5.39 6.36-2.62-2.62a.81.81 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.2-.05z'/%3E%3C/svg%3E");
47
53
  }
48
54
 
49
- &[data-color="danger"] {
55
+ &[data-color='danger'] {
50
56
  --dsc-alert-background: var(--ds-color-danger-surface-default);
51
57
  --dsc-alert-border-color: var(--ds-color-danger-border-default);
52
58
  --dsc-alert-icon-color: var(--ds-color-danger-text-subtle);
@@ -56,13 +62,17 @@
56
62
  /**
57
63
  * Sizes
58
64
  */
59
- &[data-size="sm"] {
65
+ &[data-size='sm'] {
60
66
  --dsc-alert-icon-size: var(--ds-sizing-6);
61
67
  --dsc-alert-padding: var(--ds-spacing-5);
68
+
69
+ @composes ds-body-text--sm from './utilities.css';
62
70
  }
63
71
 
64
- &[data-size="lg"] {
72
+ &[data-size='lg'] {
65
73
  --dsc-alert-icon-size: var(--ds-sizing-8);
66
74
  --dsc-alert-padding: var(--ds-spacing-7);
75
+
76
+ @composes ds-body-text--lg from './utilities.css';
67
77
  }
68
78
  }
package/avatar.css CHANGED
@@ -5,18 +5,21 @@
5
5
  --dsc-avatar-padding: var(--ds-spacing-2);
6
6
  --dsc-avatar-border-radius: 50%;
7
7
 
8
- background: var(--dsc-avatar-background);
9
- height: var(--dsc-avatar-size);
8
+ align-items: center;
10
9
  aspect-ratio: 1 / 1;
11
- color: var(--dsc-avatar-color);
10
+ background: var(--dsc-avatar-background);
12
11
  border-radius: var(--dsc-avatar-border-radius);
13
- overflow: hidden;
12
+ box-sizing: border-box;
13
+ color: var(--dsc-avatar-color);
14
14
  display: inline-flex;
15
+ height: var(--dsc-avatar-size);
15
16
  justify-content: center;
16
- align-items: center;
17
- user-select: none;
18
- text-transform: uppercase;
17
+ overflow: hidden;
19
18
  text-decoration: none;
19
+ text-transform: uppercase;
20
+ user-select: none;
21
+
22
+ @composes ds-body-text--xs from './utilities.css';
20
23
 
21
24
  &:not(:has(> img)) {
22
25
  padding: var(--dsc-avatar-padding);
@@ -79,20 +82,28 @@
79
82
  &[data-size='xs'] {
80
83
  --dsc-avatar-size: var(--ds-sizing-7);
81
84
  --dsc-avatar-padding: var(--ds-spacing-1);
85
+
86
+ @composes ds-body-text--xs from './utilities.css';
82
87
  }
83
88
 
84
89
  &[data-size='sm'] {
85
90
  --dsc-avatar-size: var(--ds-sizing-9);
86
91
  --dsc-avatar-padding: var(--ds-spacing-1);
92
+
93
+ @composes ds-heading-text--2xs from './utilities.css';
87
94
  }
88
95
 
89
96
  &[data-size='md'] {
90
97
  --dsc-avatar-size: var(--ds-sizing-12);
91
98
  --dsc-avatar-padding: var(--ds-spacing-2);
99
+
100
+ @composes ds-heading-text--sm from './utilities.css';
92
101
  }
93
102
 
94
103
  &[data-size='lg'] {
95
104
  --dsc-avatar-size: var(--ds-sizing-15);
96
105
  --dsc-avatar-padding: var(--ds-spacing-2);
106
+
107
+ @composes ds-heading-text--md from './utilities.css';
97
108
  }
98
109
  }
package/badge.css CHANGED
@@ -2,43 +2,46 @@
2
2
  --dsc-badge-background: var(--ds-color-accent-base-default);
3
3
  --dsc-badge-color: var(--ds-color-accent-contrast-default);
4
4
  --dsc-badge-padding: 0 calc(var(--ds-spacing-1) + calc(var(--ds-spacing-1) / 2));
5
- --dsc-badge-height: calc(var(--ds-sizing-3) + calc(var(--ds-spacing-1) / 2));
6
- --dsc-badge-width: calc(var(--ds-sizing-3) + calc(var(--ds-spacing-1) / 2));
5
+ --dsc-badge-size: calc(var(--ds-sizing-3) + calc(var(--ds-spacing-1) / 2));
7
6
 
8
- background-color: var(--dsc-badge-background);
9
- color: var(--dsc-badge-color);
10
- border-radius: var(--ds-border-radius-full);
11
- display: grid;
12
- place-items: center;
13
- padding: var(--dsc-badge-padding);
14
- height: var(--dsc-badge-height);
15
- width: var(--dsc-badge-width);
7
+ box-sizing: border-box;
8
+ display: inline-flex;
9
+ position: relative;
10
+
11
+ @composes ds-body-text--short-sm from './utilities.css';
16
12
 
17
- &.ds-badge--count {
18
- --dsc-badge-height: var(--ds-sizing-6);
19
- --dsc-badge-width: auto;
20
- --dsc-badge-padding: 0 calc(var(--ds-spacing-1) + calc(var(--ds-spacing-1) / 2));
13
+ &::before {
14
+ content: attr(data-count);
15
+ background: var(--dsc-badge-background);
16
+ border-radius: var(--ds-border-radius-full);
17
+ box-sizing: border-box;
18
+ color: var(--dsc-badge-color);
19
+ display: grid;
20
+ min-height: var(--dsc-badge-size);
21
+ min-width: var(--dsc-badge-size);
22
+ padding: var(--dsc-badge-padding);
23
+ place-items: center;
21
24
  }
22
25
 
23
26
  &[data-size='sm'] {
24
- --dsc-badge-height: var(--ds-sizing-3);
25
- --dsc-badge-width: var(--ds-sizing-3);
27
+ --dsc-badge-size: var(--ds-sizing-3);
28
+ --dsc-badge-padding: 0 var(--ds-spacing-1);
26
29
 
27
- &.ds-badge--count {
28
- --dsc-badge-height: var(--ds-sizing-5);
29
- --dsc-badge-width: auto;
30
- --dsc-badge-padding: 0 var(--ds-spacing-1);
30
+ @composes ds-body-text--short-xs from './utilities.css';
31
+
32
+ &[data-count] {
33
+ --dsc-badge-size: var(--ds-sizing-5);
31
34
  }
32
35
  }
33
36
 
34
37
  &[data-size='lg'] {
35
- --dsc-badge-height: var(--ds-sizing-4);
36
- --dsc-badge-width: var(--ds-sizing-4);
38
+ --dsc-badge-size: var(--ds-sizing-4);
39
+ --dsc-badge-padding: 0 var(--ds-spacing-2);
40
+
41
+ @composes ds-body-text--short-md from './utilities.css';
37
42
 
38
- &.ds-badge--count {
39
- --dsc-badge-height: var(--ds-sizing-7);
40
- --dsc-badge-width: auto;
41
- --dsc-badge-padding: 0 var(--ds-spacing-2);
43
+ &[data-count] {
44
+ --dsc-badge-size: var(--ds-sizing-7);
42
45
  }
43
46
  }
44
47
 
@@ -68,66 +71,55 @@
68
71
  }
69
72
 
70
73
  /* If placement is present, we are floating */
71
- &[data-placement] {
72
- transform-origin: center;
74
+ &[data-placement]::before {
73
75
  position: absolute;
74
76
  }
75
77
 
76
- &[data-placement='top-right'][data-overlap='rectangle'] {
78
+ &[data-placement='top-right']::before {
77
79
  top: 0;
78
80
  right: 0;
79
- transform: translateX(50%) translateY(-50%);
81
+ translate: 50% -50%;
80
82
  }
81
83
 
82
- &[data-placement='top-left'][data-overlap='rectangle'] {
84
+ &[data-placement='top-left']::before {
83
85
  top: 0;
84
86
  left: 0;
85
- transform: translateX(-50%) translateY(-50%);
87
+ translate: -50% -50%;
86
88
  }
87
89
 
88
- &[data-placement='bottom-right'][data-overlap='rectangle'] {
90
+ &[data-placement='bottom-right']::before {
89
91
  bottom: 0;
90
92
  right: 0;
91
- transform: translateX(50%) translateY(50%);
93
+ translate: 50% 50%;
92
94
  }
93
95
 
94
- &[data-placement='bottom-left'][data-overlap='rectangle'] {
96
+ &[data-placement='bottom-left']::before {
95
97
  bottom: 0;
96
98
  left: 0;
97
- transform: translateX(-50%) translateY(50%);
99
+ translate: -50% 50%;
98
100
  }
99
101
 
100
- &[data-placement='top-right'][data-overlap='circle'] {
102
+ &[data-placement='top-right'][data-overlap='circle']::before {
101
103
  top: 14%;
102
104
  right: 14%;
103
- transform: translateX(50%) translateY(-50%);
105
+ translate: 50% -50%;
104
106
  }
105
107
 
106
- &[data-placement='top-left'][data-overlap='circle'] {
108
+ &[data-placement='top-left'][data-overlap='circle']::before {
107
109
  top: 14%;
108
110
  left: 14%;
109
- transform: translateX(-50%) translateY(-50%);
111
+ translate: -50% -50%;
110
112
  }
111
113
 
112
- &[data-placement='bottom-right'][data-overlap='circle'] {
114
+ &[data-placement='bottom-right'][data-overlap='circle']::before {
113
115
  bottom: 14%;
114
116
  right: 14%;
115
- transform: translateX(50%) translateY(50%);
117
+ translate: 50% 50%;
116
118
  }
117
119
 
118
- &[data-placement='bottom-left'][data-overlap='circle'] {
120
+ &[data-placement='bottom-left'][data-overlap='circle']::before {
119
121
  bottom: 14%;
120
122
  left: 14%;
121
- transform: translateX(-50%) translateY(50%);
123
+ translate: -50% 50%;
122
124
  }
123
125
  }
124
-
125
- .ds-badge__wrapper {
126
- display: inline-flex;
127
- position: relative;
128
- width: fit-content;
129
- height: fit-content;
130
- flex-shrink: 0;
131
- align-items: center;
132
- justify-content: center;
133
- }
package/breadcrumbs.css CHANGED
@@ -1,72 +1,69 @@
1
1
  .ds-breadcrumbs {
2
2
  --dsc-breadcrumbs-spacing: var(--ds-spacing-2);
3
3
  --dsc-breadcrumbs-chevron-size: var(--ds-sizing-6);
4
- --dsc-breadcrumbs-link-color: inherit;
5
- }
6
4
 
7
- .ds-breadcrumbs--sm {
8
- --dsc-breadcrumbs-spacing: var(--ds-spacing-1);
9
- --dsc-breadcrumbs-chevron-size: var(--ds-sizing-5);
10
- }
5
+ @composes ds-body-text--md from './utilities.css';
11
6
 
12
- .ds-breadcrumbs--md {
13
- --dsc-breadcrumbs-spacing: var(--ds-spacing-2);
14
- --dsc-breadcrumbs-chevron-size: var(--ds-sizing-6);
15
- }
7
+ &[data-size='sm'] {
8
+ --dsc-breadcrumbs-spacing: var(--ds-spacing-1);
9
+ --dsc-breadcrumbs-chevron-size: var(--ds-sizing-5);
16
10
 
17
- .ds-breadcrumbs--lg {
18
- --dsc-breadcrumbs-spacing: var(--ds-spacing-3);
19
- --dsc-breadcrumbs-chevron-size: var(--ds-sizing-7);
20
- }
11
+ @composes ds-body-text--sm from './utilities.css';
12
+ }
21
13
 
22
- .ds-breadcrumbs__list {
23
- display: flex;
24
- flex-wrap: wrap;
25
- list-style-type: none;
26
- margin: 0;
27
- padding: 0;
28
- gap: var(--dsc-breadcrumbs-spacing) 0;
29
- }
14
+ &[data-size='lg'] {
15
+ --dsc-breadcrumbs-spacing: var(--ds-spacing-3);
16
+ --dsc-breadcrumbs-chevron-size: var(--ds-sizing-7);
30
17
 
31
- .ds-breadcrumbs__item:where(:not(:last-child))::after,
32
- .ds-breadcrumbs > .ds-breadcrumbs__link::before {
33
- background: currentcolor;
34
- content: '';
35
- display: inline-block;
36
- height: var(--dsc-breadcrumbs-chevron-size);
37
- margin-inline: var(--dsc-breadcrumbs-spacing);
38
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Cpath d='M9.47 5.97a.75.75 0 0 1 1.06 0l5.5 5.5a.75.75 0 0 1 0 1.06l-5.5 5.5a.75.75 0 1 1-1.06-1.06L14.44 12 9.47 7.03a.75.75 0 0 1 0-1.06'/%3E%3C/svg%3E")
39
- 50% / contain no-repeat;
40
- vertical-align: middle;
41
- width: var(--dsc-breadcrumbs-chevron-size);
42
- }
18
+ @composes ds-body-text--lg from './utilities.css';
19
+ }
43
20
 
44
- /* When link is direct child of Breadcrumbs, make it back button */
45
- .ds-breadcrumbs > .ds-breadcrumbs__link::before {
46
- margin: 0;
47
- rotate: 180deg;
48
- }
21
+ & > :is(ol, ul) {
22
+ display: flex;
23
+ flex-wrap: wrap;
24
+ list-style-type: none;
25
+ margin: 0;
26
+ padding: 0;
27
+ gap: var(--dsc-breadcrumbs-spacing) 0;
28
+ }
49
29
 
50
- .ds-breadcrumbs__link {
51
- --dsc-link-color: var(--dsc-breadcrumbs-link-color);
52
- --dsc-link-color-visited: var(--dsc-breadcrumbs-link-color);
53
- }
30
+ & a:not(:focus-visible) {
31
+ color: inherit;
32
+ }
54
33
 
55
- .ds-breadcrumbs__link[aria-current='page'] {
56
- text-decoration: none;
57
- }
34
+ & a[aria-current='page'] {
35
+ text-decoration: none;
36
+ }
58
37
 
59
- .ds-breadcrumbs > .ds-breadcrumbs__link:where(:not(:only-child)) {
60
- display: none;
61
- }
38
+ /* Draw chevron between items and before back link */
39
+ & li:where(:not(:last-child))::after,
40
+ & > :not(ol, ul)::before {
41
+ background: currentcolor;
42
+ content: '';
43
+ display: inline-block;
44
+ height: var(--dsc-breadcrumbs-chevron-size);
45
+ margin-inline: var(--dsc-breadcrumbs-spacing);
46
+ mask: center / contain no-repeat
47
+ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Cpath d='M9.47 5.97a.75.75 0 0 1 1.06 0l5.5 5.5a.75.75 0 0 1 0 1.06l-5.5 5.5a.75.75 0 1 1-1.06-1.06L14.44 12 9.47 7.03a.75.75 0 0 1 0-1.06'/%3E%3C/svg%3E");
48
+ vertical-align: middle;
49
+ width: var(--dsc-breadcrumbs-chevron-size);
50
+ }
51
+
52
+ /* When link is direct child of Breadcrumbs, make it back button */
53
+ & > :not(ol, ul)::before {
54
+ margin: 0;
55
+ rotate: 180deg;
56
+ }
62
57
 
63
- @media (max-width: 650px) {
64
- .ds-breadcrumbs > .ds-breadcrumbs__nav:where(:not(:only-child)) {
65
- display: none;
58
+ @media (max-width: 650px) {
59
+ & > :is(ol, ul):not(:only-child) {
60
+ display: none; /* Hide list when mobile and having back link */
61
+ }
66
62
  }
67
63
 
68
- .ds-breadcrumbs > .ds-breadcrumbs__link {
69
- display: block;
70
- width: fit-content;
64
+ @media (min-width: 651px) {
65
+ & > :is(:not(ol, ul)):not(:only-child) {
66
+ display: none; /* Hide back link when desktop and having list */
67
+ }
71
68
  }
72
69
  }
package/button.css CHANGED
@@ -9,6 +9,7 @@
9
9
  --dsc-button-padding-inline: var(--ds-spacing-4);
10
10
  --dsc-button-size: var(--ds-sizing-12);
11
11
 
12
+ @composes ds-body-text--short-md from './utilities.css';
12
13
  @composes ds-focus from './utilities.css';
13
14
 
14
15
  align-items: center;
@@ -28,6 +29,10 @@
28
29
  text-align: inherit;
29
30
  text-decoration: none;
30
31
 
32
+ &:focus-visible {
33
+ position: relative; /* Place focusring on top */
34
+ }
35
+
31
36
  &:not([hidden]) {
32
37
  display: flex;
33
38
  }
@@ -37,12 +42,16 @@
37
42
  --dsc-button-padding-block: var(--ds-spacing-2);
38
43
  --dsc-button-padding-inline: var(--ds-spacing-3);
39
44
  --dsc-button-size: var(--ds-sizing-10);
45
+
46
+ @composes ds-body-text--short-sm from './utilities.css';
40
47
  }
41
48
 
42
49
  &[data-size='lg'] {
43
50
  --dsc-button-padding-block: var(--ds-spacing-3);
44
51
  --dsc-button-padding-inline: var(--ds-spacing-5);
45
52
  --dsc-button-size: var(--ds-sizing-14);
53
+
54
+ @composes ds-body-text--short-lg from './utilities.css';
46
55
  }
47
56
 
48
57
  &[data-icon] {
@@ -137,8 +146,8 @@
137
146
  */
138
147
 
139
148
  @media (hover: hover) and (pointer: fine) {
140
- /* Only use hover for non-touch devices to prevent sticky-hovering */
141
- &:not(:disabled, [aria-disabled='true'], [aria-busy='true']):hover {
149
+ /* Only use hover for non-touch devices to prevent sticky-hovering, using :where to prevent adding specificity */
150
+ &:where(:not(:disabled, [aria-disabled='true'], [aria-busy='true'])):hover {
142
151
  background: var(--dsc-button-background--hover);
143
152
  }
144
153
  }
@@ -152,7 +161,8 @@
152
161
  opacity: var(--ds-disabled-opacity);
153
162
  }
154
163
 
155
- &:not(:disabled, [aria-disabled='true'], [aria-busy='true']):active {
164
+ /* Using :where to prevent adding specificity */
165
+ &:where(:not(:disabled, [aria-disabled='true'], [aria-busy='true'])):active {
156
166
  background-color: var(--dsc-button-background--active);
157
167
  }
158
168
  }