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

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 (84) hide show
  1. package/README.md +4 -3
  2. package/accordion.css +45 -52
  3. package/alert.css +19 -43
  4. package/avatar.css +24 -61
  5. package/badge.css +15 -49
  6. package/breadcrumbs.css +4 -20
  7. package/button.css +54 -106
  8. package/card.css +28 -40
  9. package/chip.css +57 -84
  10. package/combobox.css +22 -16
  11. package/dist/accordion.css +1 -1
  12. package/dist/alert.css +1 -1
  13. package/dist/avatar.css +1 -1
  14. package/dist/badge.css +1 -1
  15. package/dist/breadcrumbs.css +1 -1
  16. package/dist/button.css +1 -1
  17. package/dist/card.css +1 -1
  18. package/dist/chip.css +1 -1
  19. package/dist/combobox.css +1 -1
  20. package/dist/dropdown.css +1 -1
  21. package/dist/error-summary.css +1 -1
  22. package/dist/field.css +1 -0
  23. package/dist/fieldset.css +1 -1
  24. package/dist/heading.css +1 -0
  25. package/dist/helptext.css +1 -1
  26. package/dist/index.css +1 -1
  27. package/dist/input.css +1 -0
  28. package/dist/label.css +1 -0
  29. package/dist/link.css +1 -1
  30. package/dist/list.css +1 -1
  31. package/dist/modal.css +1 -1
  32. package/dist/pagination.css +1 -1
  33. package/dist/paragraph.css +1 -0
  34. package/dist/popover.css +1 -1
  35. package/dist/search.css +1 -1
  36. package/dist/skeleton.css +1 -1
  37. package/dist/skiplink.css +1 -1
  38. package/dist/spinner.css +1 -1
  39. package/dist/table.css +1 -1
  40. package/dist/tabs.css +1 -1
  41. package/dist/tag.css +1 -1
  42. package/dist/textfield.css +1 -1
  43. package/dist/togglegroup.css +1 -1
  44. package/dist/tooltip.css +1 -1
  45. package/dist/validation-message.css +1 -0
  46. package/dropdown.css +20 -32
  47. package/error-summary.css +2 -1
  48. package/field.css +124 -0
  49. package/fieldset.css +10 -28
  50. package/heading.css +55 -0
  51. package/helptext.css +2 -14
  52. package/index.css +114 -11
  53. package/input.css +186 -0
  54. package/label.css +30 -0
  55. package/link.css +18 -12
  56. package/list.css +0 -14
  57. package/modal.css +6 -6
  58. package/package.json +1 -1
  59. package/pagination.css +5 -19
  60. package/paragraph.css +11 -0
  61. package/popover.css +10 -35
  62. package/search.css +82 -153
  63. package/skeleton.css +8 -1
  64. package/skiplink.css +8 -4
  65. package/spinner.css +16 -16
  66. package/table.css +22 -27
  67. package/tabs.css +22 -25
  68. package/tag.css +8 -53
  69. package/textfield.css +2 -2
  70. package/togglegroup.css +6 -1
  71. package/tooltip.css +20 -8
  72. package/validation-message.css +25 -0
  73. package/checkbox.css +0 -223
  74. package/dist/checkbox.css +0 -1
  75. package/dist/radio.css +0 -1
  76. package/dist/select.css +0 -1
  77. package/dist/switch.css +0 -1
  78. package/dist/textarea.css +0 -1
  79. package/dist/utilities.css +0 -1
  80. package/radio.css +0 -200
  81. package/select.css +0 -106
  82. package/switch.css +0 -246
  83. package/textarea.css +0 -80
  84. package/utilities.css +0 -197
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # @digdir/designsystemet-css
2
2
 
3
- CSS implementation of the Designsystemet
3
+ CSS implementation of the Designsystemet components
4
4
 
5
- - Styling for React components in `@digdir/designsystemet-react`
5
+ - Uses [@layer](https://developer.mozilla.org/en-US/docs/Web/CSS/@layer) `ds`
6
+ - Uses `@digdir/designsystemet-theme` for predefined themes
7
+ - Build your own theme on https://theme.designsystemet.no/
6
8
 
7
- _These styles are currently not intended to be used directly. They are auto-generated from css modules in react components and may change without notice_
8
9
 
9
10
  Read the Designsystemet [README](https://github.com/digdir/designsystemet) to get started.
package/accordion.css CHANGED
@@ -1,13 +1,41 @@
1
1
  .ds-accordion-group {
2
+ /* default color: neutral */
2
3
  --dsc-accordion-background: var(--ds-color-neutral-background-default);
3
- --dsc-accordion-border-radius: min(1rem, var(--ds-border-radius-md));
4
- --dsc-accordion-border: 1px solid var(--ds-color-neutral-border-subtle);
5
- --dsc-accordion-chevron-gap: var(--ds-spacing-2);
6
- --dsc-accordion-chevron-size: var(--ds-spacing-6);
7
4
  --dsc-accordion-heading-background--hover: var(--ds-color-neutral-surface-default);
8
5
  --dsc-accordion-heading-background--open: var(--ds-color-neutral-background-subtle);
9
6
  --dsc-accordion-heading-background: var(--ds-color-neutral-background-default);
10
- --dsc-accordion-padding: var(--ds-spacing-4);
7
+ --dsc-accordion-border-color: var(--ds-color-neutral-border-subtle);
8
+
9
+ &[data-color]:where(:not([data-color='subtle'])) {
10
+ --dsc-accordion-background: var(--ds-color-background-subtle);
11
+ --dsc-accordion-heading-background--hover: var(--ds-color-surface-hover);
12
+ --dsc-accordion-heading-background--open: var(--ds-color-surface-default);
13
+ --dsc-accordion-heading-background: var(--ds-color-surface-default);
14
+ --dsc-accordion-border-color: var(--ds-color-border-subtle);
15
+ }
16
+
17
+ &[data-color='neutral'] {
18
+ --dsc-accordion-background: var(--ds-color-background-default);
19
+ --dsc-accordion-heading-background--hover: var(--ds-color-surface-default);
20
+ --dsc-accordion-heading-background--open: var(--ds-color-background-subtle);
21
+ --dsc-accordion-heading-background: var(--ds-color-background-default);
22
+ }
23
+
24
+ &[data-color='subtle'] {
25
+ --dsc-accordion-background: var(--ds-color-neutral-background-subtle);
26
+ --dsc-accordion-heading-background--hover: var(--ds-color-neutral-surface-hover);
27
+ --dsc-accordion-heading-background--open: var(--ds-color-neutral-surface-default);
28
+ --dsc-accordion-heading-background: var(--ds-color-neutral-background-subtle);
29
+ }
30
+
31
+ --dsc-accordion-border: 1px solid var(--dsc-accordion-border-color);
32
+ --dsc-accordion-border-radius: var(--ds-border-radius-md);
33
+ --dsc-accordion-chevron-gap: var(--ds-spacing-2);
34
+ --dsc-accordion-chevron-size: var(--ds-spacing-6);
35
+ --dsc-accordion-chevron-url: 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");
36
+
37
+ --dsc-accordion-padding: var(--ds-spacing-2) var(--ds-spacing-4);
38
+ --dsc-accordion-size: var(--ds-sizing-14);
11
39
 
12
40
  &[data-border] > * {
13
41
  border: var(--dsc-accordion-border);
@@ -24,38 +52,6 @@
24
52
  border-bottom-right-radius: var(--dsc-accordion-border-radius);
25
53
  }
26
54
  }
27
-
28
- &[data-color='subtle'] {
29
- --dsc-accordion-background: var(--ds-color-neutral-background-subtle);
30
- --dsc-accordion-border: 1px solid var(--ds-color-neutral-border-subtle);
31
- --dsc-accordion-heading-background--hover: var(--ds-color-neutral-surface-hover);
32
- --dsc-accordion-heading-background--open: var(--ds-color-neutral-surface-default);
33
- --dsc-accordion-heading-background: var(--ds-color-neutral-background-subtle);
34
- }
35
-
36
- &[data-color='brand1'] {
37
- --dsc-accordion-background: var(--ds-color-brand1-background-subtle);
38
- --dsc-accordion-border: 1px solid var(--ds-color-brand1-border-subtle);
39
- --dsc-accordion-heading-background--hover: var(--ds-color-brand1-surface-hover);
40
- --dsc-accordion-heading-background--open: var(--ds-color-brand1-surface-default);
41
- --dsc-accordion-heading-background: var(--ds-color-brand1-surface-default);
42
- }
43
-
44
- &[data-color='brand2'] {
45
- --dsc-accordion-background: var(--ds-color-brand2-background-subtle);
46
- --dsc-accordion-border: 1px solid var(--ds-color-brand2-border-subtle);
47
- --dsc-accordion-heading-background--hover: var(--ds-color-brand2-surface-hover);
48
- --dsc-accordion-heading-background--open: var(--ds-color-brand2-surface-default);
49
- --dsc-accordion-heading-background: var(--ds-color-brand2-surface-default);
50
- }
51
-
52
- &[data-color='brand3'] {
53
- --dsc-accordion-background: var(--ds-color-brand3-background-subtle);
54
- --dsc-accordion-border: 1px solid var(--ds-color-brand3-border-subtle);
55
- --dsc-accordion-heading-background--hover: var(--ds-color-brand3-surface-hover);
56
- --dsc-accordion-heading-background--open: var(--ds-color-brand3-surface-default);
57
- --dsc-accordion-heading-background: var(--ds-color-brand3-surface-default);
58
- }
59
55
  }
60
56
 
61
57
  .ds-accordion__item {
@@ -64,16 +60,19 @@
64
60
  box-sizing: border-box;
65
61
 
66
62
  & > :is(summary, u-summary) {
63
+ align-items: center;
67
64
  background: var(--dsc-accordion-heading-background);
68
65
  box-sizing: border-box;
69
66
  cursor: pointer;
67
+ display: flex;
70
68
  list-style: none;
69
+ min-height: var(--dsc-accordion-size);
70
+ gap: var(--dsc-accordion-chevron-gap);
71
71
  outline: none;
72
- padding-block: var(--dsc-accordion-padding);
73
- padding-inline: calc(var(--dsc-accordion-padding) + var(--dsc-accordion-chevron-size) + var(--dsc-accordion-chevron-gap)) var(--dsc-accordion-padding);
72
+ padding: var(--dsc-accordion-padding);
73
+ position: relative;
74
74
 
75
- @composes ds-focus from './utilities.css';
76
- @composes ds-body-text--sm from './utilities.css';
75
+ @composes ds-focus from './base/base.css';
77
76
 
78
77
  &:focus-visible {
79
78
  position: relative; /* Ensure foucs outline renders on top */
@@ -83,14 +82,9 @@
83
82
  background: currentcolor;
84
83
  border-radius: var(--ds-border-radius-md);
85
84
  content: '';
85
+ flex-shrink: 0;
86
86
  height: var(--dsc-accordion-chevron-size);
87
- mask: 50% / contain no-repeat
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");
89
- position: absolute;
90
- margin-inline: calc(
91
- (var(--dsc-accordion-chevron-size) + var(--dsc-accordion-chevron-gap)) * -1
92
- ); /* Using margin instead of top/left to avoid position: relative and to support dir="rtl" */
93
-
87
+ mask: 50% / contain no-repeat var(--dsc-accordion-chevron-url);
94
88
  width: var(--dsc-accordion-chevron-size);
95
89
  }
96
90
  }
@@ -119,15 +113,14 @@
119
113
  }
120
114
 
121
115
  @media (prefers-reduced-motion: no-preference) {
122
- interpolate-size: allow-keywords; /* stylelint-disable-line property-no-unknown */
116
+ /* biome-ignore lint/correctness/noUnknownProperty: biome does not know about this property yet */
117
+ interpolate-size: allow-keywords;
123
118
  }
124
119
 
125
120
  &::part(details-content) {
126
121
  block-size: 0;
127
122
  overflow-y: clip;
128
- transition:
129
- content-visibility 400ms allow-discrete,
130
- height 400ms;
123
+ transition: content-visibility 400ms allow-discrete, height 400ms;
131
124
  }
132
125
 
133
126
  &[open]::part(details-content) {
package/alert.css CHANGED
@@ -1,12 +1,14 @@
1
1
  .ds-alert {
2
+ /* default color/variant: info */
2
3
  --dsc-alert-background: var(--ds-color-info-surface-default);
3
- --dsc-alert-border-color: var(--ds-color-info-border-strong);
4
- --dsc-alert-border-radius: min(1rem, var(--ds-border-radius-md));
4
+ --dsc-alert-border-color: var(--ds-color-info-border-default);
5
+ --dsc-alert-icon-color: var(--ds-color-info-text-subtle);
6
+ --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M3.25 4A.75.75 0 0 1 4 3.25h16a.75.75 0 0 1 .75.75v16a.75.75 0 0 1-.75.75H4a.75.75 0 0 1-.75-.75zM11 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0m-1.25 3a.75.75 0 0 1 .75-.75H12a.75.75 0 0 1 .75.75v4.75h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5h.75v-4h-.75a.75.75 0 0 1-.75-.75'/%3E%3C/svg%3E");
7
+
8
+ --dsc-alert-border-radius: var(--ds-border-radius-md);
5
9
  --dsc-alert-color: var(--ds-color-neutral-text-default);
6
10
  --dsc-alert-gap: var(--ds-spacing-2);
7
- --dsc-alert-icon-color: var(--ds-color-info-text-subtle);
8
11
  --dsc-alert-icon-size: var(--ds-sizing-7);
9
- --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M3.25 4A.75.75 0 0 1 4 3.25h16a.75.75 0 0 1 .75.75v16a.75.75 0 0 1-.75.75H4a.75.75 0 0 1-.75-.75zM11 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0m-1.25 3a.75.75 0 0 1 .75-.75H12a.75.75 0 0 1 .75.75v4.75h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5h.75v-4h-.75a.75.75 0 0 1-.75-.75'/%3E%3C/svg%3E");
10
12
  --dsc-alert-padding: var(--ds-spacing-6);
11
13
 
12
14
  background: var(--dsc-alert-background);
@@ -16,63 +18,37 @@
16
18
  color: var(--dsc-alert-color);
17
19
  padding-block: var(--dsc-alert-padding);
18
20
  padding-inline: calc(var(--dsc-alert-padding) + var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) var(--dsc-alert-padding);
21
+ position: relative;
19
22
 
20
- @composes ds-body-text--md from './utilities.css';
21
-
22
- & > :is(h1,h2,h3,h4,h5,h6):first-child::before, /* If Alert starts with Heading, align icon to this */
23
- &:not(:has(> :is(h1,h2,h3,h4,h5,h6):first-child))::before /* If there is no Heading, align icon to Alert itself */ {
24
- background-color: var(--dsc-alert-icon-color);
23
+ & > :is(h1, h2, h3, h4, h5, h6):first-child::before /* If Alert starts with Heading, align icon to this */,
24
+ &:not(:has(> :is(h1, h2, h3, h4, h5, h6):first-child))::before /* If there is no Heading, align icon to Alert itself */ {
25
+ background: var(--dsc-alert-icon-color);
25
26
  content: '';
26
- display: block;
27
27
  height: var(--dsc-alert-icon-size);
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
-
32
- mask: var(--dsc-alert-icon-url) center/contain no-repeat;
28
+ 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" */
29
+ mask: var(--dsc-alert-icon-url) center / contain no-repeat;
33
30
  position: absolute;
34
31
  translate: 0 calc((1lh - var(--dsc-alert-icon-size)) / 2); /* Center icon to line height */
35
32
  width: var(--dsc-alert-icon-size);
36
33
  }
37
34
 
38
35
  /**
39
- * Colors
40
- */
36
+ * Colors
37
+ */
38
+ &[data-color] {
39
+ --dsc-alert-background: var(--ds-color-surface-default);
40
+ --dsc-alert-border-color: var(--ds-color-border-default);
41
+ --dsc-alert-icon-color: var(--ds-color-text-subtle);
42
+ }
41
43
  &[data-color='warning'] {
42
- --dsc-alert-border-color: var(--ds-color-warning-border-default);
43
- --dsc-alert-icon-color: var(--ds-color-warning-text-subtle);
44
- --dsc-alert-background: var(--ds-color-warning-surface-default);
45
44
  --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");
46
45
  }
47
46
 
48
47
  &[data-color='success'] {
49
- --dsc-alert-background: var(--ds-color-success-surface-default);
50
- --dsc-alert-border-color: var(--ds-color-success-border-default);
51
- --dsc-alert-icon-color: var(--ds-color-success-text-subtle);
52
48
  --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");
53
49
  }
54
50
 
55
51
  &[data-color='danger'] {
56
- --dsc-alert-background: var(--ds-color-danger-surface-default);
57
- --dsc-alert-border-color: var(--ds-color-danger-border-default);
58
- --dsc-alert-icon-color: var(--ds-color-danger-text-subtle);
59
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='M7.74 2.47a.75.75 0 0 1 .53-.22h7.46a.75.75 0 0 1 .53.22l5.27 5.27c.14.14.22.33.22.53v7.46a.75.75 0 0 1-.22.53l-5.27 5.27a.75.75 0 0 1-.53.22H8.27a.75.75 0 0 1-.53-.22l-5.27-5.27a.75.75 0 0 1-.22-.53V8.27a.75.75 0 0 1 .22-.53zm1.29 5.5a.75.75 0 0 0-1.06 1.06L10.94 12l-2.97 2.97a.75.75 0 1 0 1.06 1.06L12 13.06l2.97 2.97a.75.75 0 1 0 1.06-1.06L13.06 12l2.97-2.97a.75.75 0 0 0-1.06-1.06L12 10.94z'/%3E%3C/svg%3E");
60
53
  }
61
-
62
- /**
63
- * Sizes
64
- */
65
- &[data-size='sm'] {
66
- --dsc-alert-icon-size: var(--ds-sizing-6);
67
- --dsc-alert-padding: var(--ds-spacing-5);
68
-
69
- @composes ds-body-text--sm from './utilities.css';
70
- }
71
-
72
- &[data-size='lg'] {
73
- --dsc-alert-icon-size: var(--ds-sizing-8);
74
- --dsc-alert-padding: var(--ds-spacing-7);
75
-
76
- @composes ds-body-text--lg from './utilities.css';
77
- }
78
54
  }
package/avatar.css CHANGED
@@ -1,49 +1,57 @@
1
1
  .ds-avatar {
2
+ --dsc-avatar-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' fill='none' viewBox='0 0 24 24' focusable='false' role='img'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M8.25 7.5a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0M12 2.25a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5M8.288 17.288A5.25 5.25 0 0 1 17.25 21a.75.75 0 0 0 1.5 0 6.75 6.75 0 0 0-13.5 0 .75.75 0 0 0 1.5 0 5.25 5.25 0 0 1 1.538-3.712' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E");
3
+
4
+ /* default color: accent */
2
5
  --dsc-avatar-background: var(--ds-color-accent-base-default);
3
6
  --dsc-avatar-color: var(--ds-color-accent-contrast-default);
7
+
8
+ &[data-color] {
9
+ --dsc-avatar-background: var(--ds-color-base-default);
10
+ --dsc-avatar-color: var(--ds-color-contrast-default);
11
+ }
12
+
4
13
  --dsc-avatar-size: var(--ds-sizing-12);
5
14
  --dsc-avatar-padding: var(--ds-spacing-2);
6
- --dsc-avatar-border-radius: 50%;
15
+ --dsc-avatar-border-radius: var(--ds-border-radius-full);
7
16
 
8
17
  align-items: center;
9
- aspect-ratio: 1 / 1;
10
18
  background: var(--dsc-avatar-background);
11
19
  border-radius: var(--dsc-avatar-border-radius);
12
20
  box-sizing: border-box;
13
21
  color: var(--dsc-avatar-color);
14
22
  display: inline-flex;
23
+ flex-shrink: 0;
24
+ font-weight: var(--ds-font-weight-medium);
15
25
  height: var(--dsc-avatar-size);
16
26
  justify-content: center;
17
27
  overflow: hidden;
18
28
  text-decoration: none;
19
29
  text-transform: uppercase;
20
30
  user-select: none;
31
+ width: var(--dsc-avatar-size);
21
32
 
22
- @composes ds-body-text--xs from './utilities.css';
23
-
24
- &:not(:has(> img)) {
33
+ &:not(:has(img)) {
25
34
  padding: var(--dsc-avatar-padding);
26
35
  }
27
36
 
28
- & img {
37
+ & img,
38
+ & svg {
29
39
  object-fit: cover;
30
40
  width: 100%;
31
41
  height: 100%;
32
42
  }
33
43
 
34
- & svg {
35
- max-width: 100%;
36
- max-height: 100%;
44
+ &[data-initials]:empty::before {
45
+ content: attr(data-initials);
46
+ font-size: round(down, 1.3em, 0.0625rem); /* Default to 130% */
37
47
  }
38
48
 
39
- &:empty::before {
49
+ &:not([data-initials]):empty::before {
40
50
  content: '';
41
51
  width: 100%;
42
52
  height: 100%;
43
- mask-repeat: no-repeat;
44
- mask-size: contain;
45
- background-color: currentcolor;
46
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' fill='none' viewBox='0 0 24 24' focusable='false' role='img'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M8.25 7.5a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0M12 2.25a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5M8.288 17.288A5.25 5.25 0 0 1 17.25 21a.75.75 0 0 0 1.5 0 6.75 6.75 0 0 0-13.5 0 .75.75 0 0 0 1.5 0 5.25 5.25 0 0 1 1.538-3.712' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E");
53
+ background: currentcolor;
54
+ mask: var(--dsc-avatar-icon-url) center / contain no-repeat;
47
55
  }
48
56
 
49
57
  &[data-variant='circle'] {
@@ -54,56 +62,11 @@
54
62
  --dsc-avatar-border-radius: var(--ds-border-radius-sm);
55
63
  }
56
64
 
57
- &[data-color='accent'] {
58
- --dsc-avatar-background: var(--ds-color-accent-base-default);
59
- --dsc-avatar-color: var(--ds-color-accent-contrast-default);
60
- }
61
-
62
- &[data-color='neutral'] {
63
- --dsc-avatar-background: var(--ds-color-neutral-base-default);
64
- --dsc-avatar-color: var(--ds-color-neutral-contrast-default);
65
- }
66
-
67
- &[data-color='brand1'] {
68
- --dsc-avatar-background: var(--ds-color-brand1-base-default);
69
- --dsc-avatar-color: var(--ds-color-brand1-contrast-default);
70
- }
71
-
72
- &[data-color='brand2'] {
73
- --dsc-avatar-background: var(--ds-color-brand2-base-default);
74
- --dsc-avatar-color: var(--ds-color-brand2-contrast-default);
75
- }
76
-
77
- &[data-color='brand3'] {
78
- --dsc-avatar-background: var(--ds-color-brand3-base-default);
79
- --dsc-avatar-color: var(--ds-color-brand3-contrast-default);
80
- }
81
-
82
65
  &[data-size='xs'] {
83
- --dsc-avatar-size: var(--ds-sizing-7);
84
- --dsc-avatar-padding: var(--ds-spacing-1);
85
-
86
- @composes ds-body-text--xs from './utilities.css';
66
+ font-size: var(--ds-font-size-1);
87
67
  }
88
68
 
89
69
  &[data-size='sm'] {
90
- --dsc-avatar-size: var(--ds-sizing-9);
91
- --dsc-avatar-padding: var(--ds-spacing-1);
92
-
93
- @composes ds-heading-text--2xs from './utilities.css';
94
- }
95
-
96
- &[data-size='md'] {
97
- --dsc-avatar-size: var(--ds-sizing-12);
98
- --dsc-avatar-padding: var(--ds-spacing-2);
99
-
100
- @composes ds-heading-text--sm from './utilities.css';
101
- }
102
-
103
- &[data-size='lg'] {
104
- --dsc-avatar-size: var(--ds-sizing-15);
105
- --dsc-avatar-padding: var(--ds-spacing-2);
106
-
107
- @composes ds-heading-text--md from './utilities.css';
70
+ font-size: var(--ds-font-size-3);
108
71
  }
109
72
  }
package/badge.css CHANGED
@@ -1,15 +1,22 @@
1
1
  .ds-badge {
2
- --dsc-badge-background: var(--ds-color-accent-base-default);
3
- --dsc-badge-color: var(--ds-color-accent-contrast-default);
2
+ /* color vars */
3
+ --dsc-badge-background: var(--ds-color-base-default);
4
+ --dsc-badge-color: var(--ds-color-contrast-default);
5
+
6
+ &[data-color='neutral'] {
7
+ --dsc-badge-background: var(--ds-color-neutral-surface-default);
8
+ --dsc-badge-color: var(--ds-color-neutral-text-default);
9
+ }
10
+
11
+ /* sizing vars */
4
12
  --dsc-badge-padding: 0 calc(var(--ds-spacing-1) + calc(var(--ds-spacing-1) / 2));
5
13
  --dsc-badge-size: calc(var(--ds-sizing-3) + calc(var(--ds-spacing-1) / 2));
6
14
 
7
15
  box-sizing: border-box;
8
16
  display: inline-flex;
17
+ line-height: var(--ds-line-height-sm);
9
18
  position: relative;
10
19
 
11
- @composes ds-body-text--short-sm from './utilities.css';
12
-
13
20
  &::before {
14
21
  content: attr(data-count);
15
22
  background: var(--dsc-badge-background);
@@ -17,57 +24,16 @@
17
24
  box-sizing: border-box;
18
25
  color: var(--dsc-badge-color);
19
26
  display: grid;
27
+ font-size: var(--ds-font-size-minus-1); /* Default to small when size is not defined */
20
28
  min-height: var(--dsc-badge-size);
21
29
  min-width: var(--dsc-badge-size);
22
30
  padding: var(--dsc-badge-padding);
23
31
  place-items: center;
24
32
  }
25
33
 
26
- &[data-size='sm'] {
27
- --dsc-badge-size: var(--ds-sizing-3);
28
- --dsc-badge-padding: 0 var(--ds-spacing-1);
29
-
30
- @composes ds-body-text--short-xs from './utilities.css';
31
-
32
- &[data-count] {
33
- --dsc-badge-size: var(--ds-sizing-5);
34
- }
35
- }
36
-
37
- &[data-size='lg'] {
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';
42
-
43
- &[data-count] {
44
- --dsc-badge-size: var(--ds-sizing-7);
45
- }
46
- }
47
-
48
- &[data-color='info'] {
49
- --dsc-badge-background: var(--ds-color-info-base-default);
50
- --dsc-badge-color: var(--ds-color-info-contrast-default);
51
- }
52
-
53
- &[data-color='success'] {
54
- --dsc-badge-background: var(--ds-color-success-base-default);
55
- --dsc-badge-color: var(--ds-color-success-contrast-default);
56
- }
57
-
58
- &[data-color='warning'] {
59
- --dsc-badge-background: var(--ds-color-warning-base-default);
60
- --dsc-badge-color: var(--ds-color-warning-contrast-default);
61
- }
62
-
63
- &[data-color='danger'] {
64
- --dsc-badge-background: var(--ds-color-danger-base-default);
65
- --dsc-badge-color: var(--ds-color-danger-contrast-default);
66
- }
67
-
68
- &[data-color='neutral'] {
69
- --dsc-badge-background: var(--ds-color-neutral-surface-default);
70
- --dsc-badge-color: var(--ds-color-neutral-text-default);
34
+ & :where(img, svg) {
35
+ flex-shrink: 0; /* Never shrink icon */
36
+ font-size: 1.25em; /* Auto scale icon based on font-size */
71
37
  }
72
38
 
73
39
  /* If placement is present, we are floating */
package/breadcrumbs.css CHANGED
@@ -1,22 +1,7 @@
1
1
  .ds-breadcrumbs {
2
2
  --dsc-breadcrumbs-spacing: var(--ds-spacing-2);
3
3
  --dsc-breadcrumbs-chevron-size: var(--ds-sizing-6);
4
-
5
- @composes ds-body-text--md from './utilities.css';
6
-
7
- &[data-size='sm'] {
8
- --dsc-breadcrumbs-spacing: var(--ds-spacing-1);
9
- --dsc-breadcrumbs-chevron-size: var(--ds-sizing-5);
10
-
11
- @composes ds-body-text--sm from './utilities.css';
12
- }
13
-
14
- &[data-size='lg'] {
15
- --dsc-breadcrumbs-spacing: var(--ds-spacing-3);
16
- --dsc-breadcrumbs-chevron-size: var(--ds-sizing-7);
17
-
18
- @composes ds-body-text--lg from './utilities.css';
19
- }
4
+ --dsc-breadcrumbs-icon-url: 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");
20
5
 
21
6
  & > :is(ol, ul) {
22
7
  display: flex;
@@ -43,8 +28,7 @@
43
28
  display: inline-block;
44
29
  height: var(--dsc-breadcrumbs-chevron-size);
45
30
  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");
31
+ mask: center / contain no-repeat var(--dsc-breadcrumbs-icon-url);
48
32
  vertical-align: middle;
49
33
  width: var(--dsc-breadcrumbs-chevron-size);
50
34
  }
@@ -55,13 +39,13 @@
55
39
  rotate: 180deg;
56
40
  }
57
41
 
58
- @media (max-width: 650px) {
42
+ @media (width < 650px) {
59
43
  & > :is(ol, ul):not(:only-child) {
60
44
  display: none; /* Hide list when mobile and having back link */
61
45
  }
62
46
  }
63
47
 
64
- @media (min-width: 651px) {
48
+ @media (min-width: 650px) {
65
49
  & > :is(:not(ol, ul)):not(:only-child) {
66
50
  display: none; /* Hide back link when desktop and having list */
67
51
  }