@amsterdam/design-system-css 3.2.1 → 4.0.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.
Files changed (116) hide show
  1. package/CHANGELOG.md +51 -2
  2. package/README.md +10 -6
  3. package/dist/accordion/accordion.css +1 -1
  4. package/dist/accordion/accordion.css.map +1 -1
  5. package/dist/alert/alert.css +1 -1
  6. package/dist/alert/alert.css.map +1 -1
  7. package/dist/avatar/avatar.css +1 -1
  8. package/dist/avatar/avatar.css.map +1 -1
  9. package/dist/badge/badge.css +1 -1
  10. package/dist/badge/badge.css.map +1 -1
  11. package/dist/body/body.css +1 -0
  12. package/dist/body/body.css.map +1 -0
  13. package/dist/breakout/breakout.css +1 -1
  14. package/dist/breakout/breakout.css.map +1 -1
  15. package/dist/button/button.css +1 -1
  16. package/dist/button/button.css.map +1 -1
  17. package/dist/call-to-action-link/call-to-action-link.css +1 -1
  18. package/dist/call-to-action-link/call-to-action-link.css.map +1 -1
  19. package/dist/checkbox/checkbox.css +1 -1
  20. package/dist/checkbox/checkbox.css.map +1 -1
  21. package/dist/description-list/description-list.css +1 -1
  22. package/dist/description-list/description-list.css.map +1 -1
  23. package/dist/dialog/dialog.css +1 -1
  24. package/dist/dialog/dialog.css.map +1 -1
  25. package/dist/field-set/field-set.css.map +1 -1
  26. package/dist/grid/grid.css +1 -1
  27. package/dist/grid/grid.css.map +1 -1
  28. package/dist/heading/heading.css +1 -1
  29. package/dist/heading/heading.css.map +1 -1
  30. package/dist/icon/icon.css +1 -1
  31. package/dist/icon/icon.css.map +1 -1
  32. package/dist/image-slider/image-slider.css +1 -1
  33. package/dist/image-slider/image-slider.css.map +1 -1
  34. package/dist/index.css +1 -1
  35. package/dist/index.css.map +1 -1
  36. package/dist/label/label.css.map +1 -1
  37. package/dist/menu/menu.css +1 -1
  38. package/dist/menu/menu.css.map +1 -1
  39. package/dist/page-footer/page-footer.css +1 -1
  40. package/dist/page-footer/page-footer.css.map +1 -1
  41. package/dist/page-header/page-header.css +1 -1
  42. package/dist/page-header/page-header.css.map +1 -1
  43. package/dist/pagination/pagination.css +1 -1
  44. package/dist/pagination/pagination.css.map +1 -1
  45. package/dist/paragraph/paragraph.css.map +1 -1
  46. package/dist/progress-list/progress-list.css +1 -1
  47. package/dist/progress-list/progress-list.css.map +1 -1
  48. package/dist/prose/prose.css +1 -0
  49. package/dist/prose/prose.css.map +1 -0
  50. package/dist/radio/radio.css +1 -1
  51. package/dist/radio/radio.css.map +1 -1
  52. package/dist/search-field/search-field.css +1 -1
  53. package/dist/search-field/search-field.css.map +1 -1
  54. package/dist/spotlight/spotlight.css +1 -1
  55. package/dist/spotlight/spotlight.css.map +1 -1
  56. package/dist/switch/switch.css +1 -1
  57. package/dist/switch/switch.css.map +1 -1
  58. package/dist/tab-navigation/tab-navigation.css +1 -0
  59. package/dist/tab-navigation/tab-navigation.css.map +1 -0
  60. package/dist/table/table.css +1 -1
  61. package/dist/table/table.css.map +1 -1
  62. package/package.json +4 -4
  63. package/src/common/hide-input.scss +1 -0
  64. package/src/common/print-exact.scss +16 -0
  65. package/src/components/accordion/accordion.scss +1 -5
  66. package/src/components/alert/alert.scss +4 -0
  67. package/src/components/aspect-ratio/README.md +8 -10
  68. package/src/components/avatar/avatar.scss +4 -0
  69. package/src/components/badge/badge.scss +2 -0
  70. package/src/components/body/README.md +15 -0
  71. package/src/components/{document/document.scss → body/body.scss} +2 -1
  72. package/src/components/breadcrumb/README.md +6 -7
  73. package/src/components/breakout/breakout.scss +20 -8
  74. package/src/components/button/button.scss +2 -0
  75. package/src/components/call-to-action-link/call-to-action-link.scss +2 -0
  76. package/src/components/description-list/description-list.scss +44 -9
  77. package/src/components/dialog/dialog.scss +32 -11
  78. package/src/components/field-set/field-set.scss +1 -5
  79. package/src/components/gap/README.md +4 -3
  80. package/src/components/grid/README.md +4 -0
  81. package/src/components/grid/_mixins.scss +49 -11
  82. package/src/components/grid/grid.scss +49 -3
  83. package/src/components/heading/heading.scss +1 -10
  84. package/src/components/icon/icon.scss +0 -7
  85. package/src/components/image-slider/image-slider.scss +1 -1
  86. package/src/components/index.scss +3 -3
  87. package/src/components/label/label.scss +1 -5
  88. package/src/components/logo/README.md +2 -1
  89. package/src/components/margin/README.md +3 -1
  90. package/src/components/menu/menu.scss +32 -29
  91. package/src/components/page-footer/page-footer.scss +16 -4
  92. package/src/components/page-header/README.md +8 -24
  93. package/src/components/page-header/page-header.scss +37 -23
  94. package/src/components/pagination/pagination.scss +4 -0
  95. package/src/components/paragraph/paragraph.scss +1 -5
  96. package/src/components/progress-list/README.md +2 -1
  97. package/src/components/progress-list/progress-list.scss +90 -10
  98. package/src/components/prose/README.md +15 -0
  99. package/src/components/prose/prose.scss +104 -0
  100. package/src/components/search-field/search-field.scss +2 -0
  101. package/src/components/spotlight/spotlight.scss +4 -0
  102. package/src/components/standalone-link/standalone-link.scss +0 -5
  103. package/src/components/tab-navigation/README.md +13 -0
  104. package/src/components/tab-navigation/tab-navigation.scss +101 -0
  105. package/src/components/table/README.md +4 -5
  106. package/src/components/table/table.scss +1 -0
  107. package/src/components/tabs/README.md +9 -27
  108. package/dist/document/document.css +0 -1
  109. package/dist/document/document.css.map +0 -1
  110. package/dist/icon/icon.deprecated.css +0 -1
  111. package/dist/icon/icon.deprecated.css.map +0 -1
  112. package/dist/page-heading/page-heading.deprecated.css +0 -1
  113. package/dist/page-heading/page-heading.deprecated.css.map +0 -1
  114. package/src/components/icon/icon.deprecated.scss +0 -12
  115. package/src/components/page-heading/README.md +0 -3
  116. package/src/components/page-heading/page-heading.deprecated.scss +0 -32
@@ -2,16 +2,15 @@
2
2
 
3
3
  # Breadcrumb
4
4
 
5
- The breadcrumb is a secondary navigation pattern that helps a user understand the structure between levels in the website up to the current page.
6
- Users can use it to navigate.
5
+ Shows the location of the page within the hierarchy of a website and allows navigating between levels.
7
6
 
8
7
  ## Guidelines
9
8
 
10
- - Only use the breadcrumb trail if it adds something functional for the user and the structure is ‘static’.
11
- - Do not display the breadcrumb trail on a form page.
12
- It distracts the user from their task, or one can accidentally interpret it as a Progress Indicator.
13
- - This is a secondary navigation pattern.
14
- It can’t replace the main navigation.
9
+ - Do not use a breadcrumb on pages that have forms.
10
+ A breadcrumb on a page with a form can distract users from completing the form, or be confused with a progress indicator.
11
+ - A breadcrumb should not have more than 5 items.
12
+ - The first item links to the home page, with ‘Home’ as its text.
13
+ This applies to Dutch websites as well.
15
14
 
16
15
  ### Using links with routing libraries
17
16
 
@@ -82,7 +82,7 @@ $ams-breakout-row-span-max: 4;
82
82
  }
83
83
  }
84
84
 
85
- @media screen and (min-width: $ams-breakpoint-medium) {
85
+ @media (min-width: $ams-breakpoint-medium) {
86
86
  @for $i from 1 through $ams-grid-column-count {
87
87
  .ams-breakout__cell--col-span-#{$i}-medium {
88
88
  @include ams-grid__cell--span-medium($i);
@@ -94,7 +94,7 @@ $ams-breakout-row-span-max: 4;
94
94
  }
95
95
  }
96
96
 
97
- @media screen and (min-width: $ams-breakpoint-wide) {
97
+ @media (min-width: $ams-breakpoint-wide) {
98
98
  @for $i from 1 through $ams-grid-column-count {
99
99
  .ams-breakout__cell--col-span-#{$i}-wide {
100
100
  @include ams-grid__cell--span-wide($i);
@@ -117,12 +117,24 @@ $ams-breakout-row-span-max: 4;
117
117
  margin-block: calc(var(--ams-space-xl) * -1);
118
118
  margin-inline: calc(var(--ams-grid-padding-inline) * -1);
119
119
 
120
- @media screen and (min-width: $ams-breakpoint-medium) {
121
- margin-inline: calc(var(--ams-grid-medium-padding-inline) * -1);
120
+ @media (min-width: $ams-breakpoint-medium) {
121
+ margin-inline: calc(
122
+ var(
123
+ --ams-grid-medium-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
124
+ var(--ams-grid-vi-medium-padding-inline)
125
+ ) *
126
+ -1
127
+ );
122
128
  }
123
129
 
124
- @media screen and (min-width: $ams-breakpoint-wide) {
125
- margin-inline: calc(var(--ams-grid-wide-padding-inline) * -1);
130
+ @media (min-width: $ams-breakpoint-wide) {
131
+ margin-inline: calc(
132
+ var(
133
+ --ams-grid-wide-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
134
+ var(--ams-grid-vi-wide-padding-inline)
135
+ ) *
136
+ -1
137
+ );
126
138
  }
127
139
 
128
140
  .ams-breakout--gap-vertical--small > & {
@@ -146,7 +158,7 @@ $ams-breakout-row-span-max: 4;
146
158
  }
147
159
  }
148
160
 
149
- @media screen and (min-width: $ams-breakpoint-medium) {
161
+ @media (min-width: $ams-breakpoint-medium) {
150
162
  @for $i from 1 through $ams-breakout-row-span-max {
151
163
  .ams-breakout__cell--row-span-#{$i}-medium {
152
164
  grid-row-end: span $i;
@@ -158,7 +170,7 @@ $ams-breakout-row-span-max: 4;
158
170
  }
159
171
  }
160
172
 
161
- @media screen and (min-width: $ams-breakpoint-wide) {
173
+ @media (min-width: $ams-breakpoint-wide) {
162
174
  @for $i from 1 through $ams-breakout-row-span-max {
163
175
  .ams-breakout__cell--row-span-#{$i}-wide {
164
176
  grid-row-end: span $i;
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  @use "../../common/hyphenation" as *;
7
+ @use "../../common/print-exact" as *;
7
8
  @use "../../common/resets" as *;
8
9
  @use "../../common/text-rendering" as *;
9
10
 
@@ -29,6 +30,7 @@
29
30
  touch-action: manipulation;
30
31
 
31
32
  @include hyphenation;
33
+ @include print-exact;
32
34
  @include text-rendering;
33
35
 
34
36
  &:disabled,
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  @use "../../common/hyphenation" as *;
7
+ @use "../../common/print-exact" as *;
7
8
  @use "../../common/text-rendering" as *;
8
9
 
9
10
  .ams-call-to-action-link {
@@ -22,6 +23,7 @@
22
23
  touch-action: manipulation;
23
24
 
24
25
  @include hyphenation;
26
+ @include print-exact;
25
27
  @include text-rendering;
26
28
 
27
29
  &:hover {
@@ -15,33 +15,49 @@
15
15
  font-family: var(--ams-description-list-font-family);
16
16
  font-size: var(--ams-description-list-font-size);
17
17
  line-height: var(--ams-description-list-line-height);
18
+ row-gap: var(--ams-description-list-row-gap); /* This token is @deprecated. Will be removed on or after 2026-10-20. */
18
19
 
19
20
  @include hyphenation;
20
21
  @include text-rendering;
21
22
  }
22
23
 
23
- @media screen and (min-width: $ams-breakpoint-medium) {
24
+ @media (min-width: $ams-breakpoint-medium) {
24
25
  .ams-description-list,
25
26
  .ams-description-list__section {
26
27
  align-items: start;
27
- column-gap: var(--ams-description-list-column-gap);
28
+ column-gap: var(
29
+ --ams-description-list-column-gap /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
30
+ var(--ams-description-list-vi-medium-column-gap)
31
+ );
28
32
  display: grid;
29
33
  grid-template-columns: auto 1fr;
30
34
  }
31
35
 
32
36
  .ams-description-list--narrow,
33
37
  .ams-description-list--narrow .ams-description-list__section {
34
- grid-template-columns: var(--ams-description-list-narrow-grid-template-columns);
38
+ grid-template-columns: var(
39
+ --ams-description-list-narrow-grid-template-columns
40
+ /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
41
+ var(--ams-description-list-vi-medium-narrow-grid-template-columns)
42
+ );
35
43
  }
36
44
 
37
45
  .ams-description-list--medium,
38
46
  .ams-description-list--medium .ams-description-list__section {
39
- grid-template-columns: var(--ams-description-list-medium-grid-template-columns);
47
+ grid-template-columns: var(
48
+ --ams-description-list-medium-grid-template-columns
49
+ /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
50
+ var(--ams-description-list-vi-medium-medium-grid-template-columns)
51
+ );
40
52
  }
41
53
 
42
54
  .ams-description-list--wide,
43
55
  .ams-description-list--wide .ams-description-list__section {
44
- grid-template-columns: var(--ams-description-list-wide-grid-template-columns);
56
+ grid-template-columns: var(
57
+ --ams-description-list-wide-grid-template-columns
58
+ /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
59
+ var(--ams-description-list-vi-medium-wide-grid-template-columns)
60
+ );
45
61
  }
46
62
  }
47
63
 
@@ -50,14 +66,33 @@
50
66
  }
51
67
 
52
68
  .ams-description-list__term {
69
+ font-size: var(--ams-description-list-term-font-size);
53
70
  font-weight: var(--ams-description-list-term-font-weight);
71
+ line-height: var(--ams-description-list-term-line-height);
54
72
  margin-block-end: var(--ams-description-list-term-margin-block-end);
55
73
 
56
- @media screen and (min-width: $ams-breakpoint-medium) {
74
+ /* stylelint-disable-next-line plugin/use-baseline -- Unbalanced line lengths in non-supporting browsers are acceptable */
75
+ text-wrap: var(--ams-description-list-term-text-wrap);
76
+
77
+ @media (min-width: $ams-breakpoint-medium) {
57
78
  grid-column-start: 1;
58
79
 
59
80
  // Add margin for Terms that are longer than their Description(s)
60
81
  margin-block-end: var(--ams-description-list-term-vi-medium-margin-block-end);
82
+
83
+ // Add half of the difference in computed line heights to align Terms with Descriptions.
84
+ // - Terms use heading line heights; Descriptions use body text
85
+ // - Not for Terms that follow a Term, or which are the last child
86
+ &:not(& + &, :last-child) {
87
+ padding-block-start: calc(
88
+ (
89
+ var(--ams-description-list-font-size) *
90
+ var(--ams-description-list-line-height) - var(--ams-description-list-term-font-size) *
91
+ var(--ams-description-list-term-line-height)
92
+ ) /
93
+ 2
94
+ );
95
+ }
61
96
  }
62
97
 
63
98
  // Remove whitespace between consecutive Terms
@@ -74,7 +109,7 @@
74
109
  margin-block-end: var(--ams-description-list-description-margin-block-end);
75
110
  padding-inline-start: var(--ams-description-list-description-padding-inline-start);
76
111
 
77
- @media screen and (min-width: $ams-breakpoint-medium) {
112
+ @media (min-width: $ams-breakpoint-medium) {
78
113
  grid-column-start: 2;
79
114
  padding-inline-start: 0;
80
115
 
@@ -88,7 +123,7 @@
88
123
  .ams-description-list__section {
89
124
  margin-block-end: var(--ams-description-list-section-margin-block-end);
90
125
 
91
- @media screen and (min-width: $ams-breakpoint-medium) {
126
+ @media (min-width: $ams-breakpoint-medium) {
92
127
  grid-column: span 2;
93
128
 
94
129
  > :only-of-type {
@@ -110,7 +145,7 @@
110
145
  }
111
146
  }
112
147
 
113
- @media screen and (min-width: $ams-breakpoint-medium) {
148
+ @media (min-width: $ams-breakpoint-medium) {
114
149
  .ams-description-list,
115
150
  .ams-description-list > .ams-description-list__section:last-child {
116
151
  > .ams-description-list__term:last-of-type {
@@ -25,9 +25,15 @@ so do not apply these styles without an `open` attribute. */
25
25
  max-block-size: var(--ams-dialog-max-block-size);
26
26
  max-inline-size: var(--ams-dialog-max-inline-size);
27
27
 
28
- @media screen and (min-width: $ams-breakpoint-medium) {
29
- inline-size: var(--ams-dialog-medium-inline-size);
30
- max-block-size: var(--ams-dialog-medium-max-block-size);
28
+ @media (min-width: $ams-breakpoint-medium) {
29
+ inline-size: var(
30
+ --ams-dialog-medium-inline-size /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
31
+ var(--ams-dialog-vi-medium-inline-size)
32
+ );
33
+ max-block-size: var(
34
+ --ams-dialog-medium-max-block-size /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
35
+ var(--ams-dialog-vi-medium-max-block-size)
36
+ );
31
37
  }
32
38
 
33
39
  /*
@@ -47,9 +53,15 @@ so do not apply these styles without an `open` attribute. */
47
53
  padding-block: var(--ams-dialog-header-padding-block);
48
54
  padding-inline: var(--ams-dialog-header-padding-inline);
49
55
 
50
- @media screen and (min-width: $ams-breakpoint-medium) {
51
- padding-block: var(--ams-dialog-header-medium-padding-block);
52
- padding-inline: var(--ams-dialog-header-medium-padding-inline);
56
+ @media (min-width: $ams-breakpoint-medium) {
57
+ padding-block: var(
58
+ --ams-dialog-header-medium-padding-block /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
59
+ var(--ams-dialog-header-vi-medium-padding-block)
60
+ );
61
+ padding-inline: var(
62
+ --ams-dialog-header-medium-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
63
+ var(--ams-dialog-header-vi-medium-padding-inline)
64
+ );
53
65
  }
54
66
  }
55
67
 
@@ -59,8 +71,11 @@ so do not apply these styles without an `open` attribute. */
59
71
  padding-block: var(--ams-dialog-body-padding-block);
60
72
  padding-inline: var(--ams-dialog-body-padding-inline);
61
73
 
62
- @media screen and (min-width: $ams-breakpoint-medium) {
63
- padding-inline: var(--ams-dialog-body-medium-padding-inline);
74
+ @media (min-width: $ams-breakpoint-medium) {
75
+ padding-inline: var(
76
+ --ams-dialog-body-medium-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
77
+ var(--ams-dialog-body-vi-medium-padding-inline)
78
+ );
64
79
  }
65
80
  }
66
81
 
@@ -68,8 +83,14 @@ so do not apply these styles without an `open` attribute. */
68
83
  padding-block: var(--ams-dialog-footer-padding-block);
69
84
  padding-inline: var(--ams-dialog-footer-padding-inline);
70
85
 
71
- @media screen and (min-width: $ams-breakpoint-medium) {
72
- padding-block: var(--ams-dialog-footer-medium-padding-block);
73
- padding-inline: var(--ams-dialog-footer-medium-padding-inline);
86
+ @media (min-width: $ams-breakpoint-medium) {
87
+ padding-block: var(
88
+ --ams-dialog-footer-medium-padding-block /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
89
+ var(--ams-dialog-footer-vi-medium-padding-block)
90
+ );
91
+ padding-inline: var(
92
+ --ams-dialog-footer-medium-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
93
+ var(--ams-dialog-footer-vi-medium-padding-inline)
94
+ );
74
95
  }
75
96
  }
@@ -53,11 +53,7 @@
53
53
  font-weight: var(--ams-field-set-legend-font-weight);
54
54
  line-height: var(--ams-field-set-legend-line-height);
55
55
 
56
- /*
57
- * If text-wrap is not supported, it is ignored.
58
- * This means the wrapped text will look less balanced, which is fine.
59
- */
60
- /* stylelint-disable-next-line plugin/use-baseline */
56
+ /* stylelint-disable-next-line plugin/use-baseline -- Unbalanced line lengths in non-supporting browsers are acceptable */
61
57
  text-wrap: var(--ams-field-set-legend-text-wrap);
62
58
 
63
59
  @include hyphenation;
@@ -14,17 +14,18 @@ Five options are available for the width or height of the gap:
14
14
  - `ams-gap-l`
15
15
  - `ams-gap-xl`
16
16
 
17
+ These classes apply the [design tokens for space](/docs/brand-design-tokens-space--docs).
18
+
17
19
  Because spacing is responsive, the gaps are as well.
18
20
  They are also smaller in [Compact Mode](https://designsystem.amsterdam/docs/docs-developer-guide-modes--docs).
19
- Consult the [Space](/docs/brand-design-tokens-space--docs) docs for an indication of their sizes.
20
-
21
- The `2xl` space is intended for whitespace around a [Grid](/docs/components-layout-grid--docs) only, which can be produced through a `padding*` of `large`.
22
21
 
23
22
  ## Guidelines
24
23
 
25
24
  - Use this utility class to vertically separate the children of a parent element from each other.
26
25
  - Do not use it on the Grid component.
27
26
  Grid is responsible for its own gaps.
27
+ - Do not use it for text – various types of elements require different amounts of space between them.
28
+ Wrap editorial content in the [Prose](/docs/utilities-css-prose--docs) utility class to have all spacing set automatically.
28
29
  - It can be used on any other element and sets the `gap` CSS property.
29
30
  It also makes the element a grid container; the gap would be ignored otherwise.
30
31
  These declarations are marked with the `!important` flag to ensure they override any other gaps and display modes.
@@ -12,6 +12,10 @@ Divides the screen into columns to align the elements of a page.
12
12
  - Its children are `Grid.Cell` components that define how many columns they span, and optionally where they start.
13
13
  Both its `span` and `start` properties accept a single value, or separate values for the narrow, medium and wide variations of the Grid.
14
14
  Follow these [optimal sizes of Grid Cells](/docs/pages-public-introduction--docs#how-to-size-the-grid-cells) for various typical page sections.
15
+ - Grid Cells align to the top of their row.
16
+ This makes them as tall as their content.
17
+ This is especially useful for [Compact Mode](https://designsystem.amsterdam/docs/docs-developer-guide-modes--docs), where their background colour is different than that of the Page.
18
+ The [internal Home Page](/story/pages-internal-home-page--default) example shows this behaviour.
15
19
  - A single page can have several Grids.
16
20
  This allows mixing a Grid with a [Spotlight](/docs/components-containers-spotlight--docs), [Breakout](/docs/components-layout-breakout--docs) or full width [Image](/docs/components-media-image--docs) which ‘bleed out’ of the main layout.
17
21
  - Grids must not be nested.
@@ -14,14 +14,32 @@
14
14
  padding-inline: var(--ams-grid-padding-inline);
15
15
  row-gap: var(--ams-grid-row-gap-xl);
16
16
 
17
- @media screen and (min-width: $ams-breakpoint-medium) {
18
- grid-template-columns: repeat(var(--ams-grid-medium-column-count), 1fr);
19
- padding-inline: var(--ams-grid-medium-padding-inline);
17
+ @media (min-width: $ams-breakpoint-medium) {
18
+ grid-template-columns: repeat(
19
+ var(
20
+ --ams-grid-medium-column-count /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
21
+ var(--ams-grid-vi-medium-column-count)
22
+ ),
23
+ 1fr
24
+ );
25
+ padding-inline: var(
26
+ --ams-grid-medium-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
27
+ var(--ams-grid-vi-medium-padding-inline)
28
+ );
20
29
  }
21
30
 
22
- @media screen and (min-width: $ams-breakpoint-wide) {
23
- grid-template-columns: repeat(var(--ams-grid-wide-column-count), 1fr);
24
- padding-inline: var(--ams-grid-wide-padding-inline);
31
+ @media (min-width: $ams-breakpoint-wide) {
32
+ grid-template-columns: repeat(
33
+ var(
34
+ --ams-grid-wide-column-count /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
35
+ var(--ams-grid-vi-wide-column-count)
36
+ ),
37
+ 1fr
38
+ );
39
+ padding-inline: var(
40
+ --ams-grid-wide-padding-inline /* This token is @deprecated. Will be removed on or after 2026-10-20. */,
41
+ var(--ams-grid-vi-wide-padding-inline)
42
+ );
25
43
  }
26
44
  }
27
45
 
@@ -77,11 +95,13 @@
77
95
  padding-block: var(--ams-grid-padding-block-2xl);
78
96
  }
79
97
 
98
+ // Cell
99
+
80
100
  @mixin ams-grid__cell--span-all {
81
101
  grid-column: 1 / -1;
82
102
  }
83
103
 
84
- // Column span
104
+ // Cell span and start
85
105
 
86
106
  @mixin ams-grid__cell--span($i) {
87
107
  grid-column-end: span $i;
@@ -92,25 +112,43 @@
92
112
  }
93
113
 
94
114
  @mixin ams-grid__cell--span-medium($i) {
95
- @media screen and (min-width: $ams-breakpoint-medium) {
115
+ @media (min-width: $ams-breakpoint-medium) {
96
116
  grid-column-end: span $i;
97
117
  }
98
118
  }
99
119
 
100
120
  @mixin ams-grid__cell--start-medium($i) {
101
- @media screen and (min-width: $ams-breakpoint-medium) {
121
+ @media (min-width: $ams-breakpoint-medium) {
102
122
  grid-column-start: $i;
103
123
  }
104
124
  }
105
125
 
106
126
  @mixin ams-grid__cell--span-wide($i) {
107
- @media screen and (min-width: $ams-breakpoint-wide) {
127
+ @media (min-width: $ams-breakpoint-wide) {
108
128
  grid-column-end: span $i;
109
129
  }
110
130
  }
111
131
 
112
132
  @mixin ams-grid__cell--start-wide($i) {
113
- @media screen and (min-width: $ams-breakpoint-wide) {
133
+ @media (min-width: $ams-breakpoint-wide) {
114
134
  grid-column-start: $i;
115
135
  }
116
136
  }
137
+
138
+ // Cell row span
139
+
140
+ @mixin ams-grid__cell--row-span($i) {
141
+ grid-row: span $i;
142
+ }
143
+
144
+ @mixin ams-grid__cell--row-span-medium($i) {
145
+ @media (min-width: $ams-breakpoint-medium) {
146
+ grid-row: span $i;
147
+ }
148
+ }
149
+
150
+ @mixin ams-grid__cell--row-span-wide($i) {
151
+ @media (min-width: $ams-breakpoint-wide) {
152
+ grid-row: span $i;
153
+ }
154
+ }
@@ -7,9 +7,12 @@
7
7
  @use "mixins" as *;
8
8
 
9
9
  $ams-grid-column-count: 12;
10
+ $ams-grid-row-span-max: 4;
10
11
 
11
12
  .ams-grid {
12
13
  @include ams-grid;
14
+
15
+ align-items: start;
13
16
  }
14
17
 
15
18
  // Grid gap
@@ -64,7 +67,26 @@ $ams-grid-column-count: 12;
64
67
  @include ams-grid--padding-vertical--2x-large;
65
68
  }
66
69
 
67
- // Column span
70
+ // Cell
71
+
72
+ .ams-grid__cell {
73
+ background-color: var(--ams-grid-cell-background-color);
74
+ padding-block: var(--ams-grid-cell-padding-block);
75
+ padding-inline: var(--ams-grid-cell-padding-inline);
76
+ }
77
+
78
+ .ams-grid__cell--flush {
79
+ padding-block: 0;
80
+ padding-inline: 0;
81
+ }
82
+
83
+ .ams-grid__cell--transparent {
84
+ background-color: transparent;
85
+ padding-block: 0;
86
+ padding-inline: 0;
87
+ }
88
+
89
+ // Cell span and start
68
90
  // The order of these declaration blocks ensures the intended specificity.
69
91
 
70
92
  .ams-grid__cell--span-all {
@@ -81,7 +103,7 @@ $ams-grid-column-count: 12;
81
103
  }
82
104
  }
83
105
 
84
- @media screen and (min-width: $ams-breakpoint-medium) {
106
+ @media (min-width: $ams-breakpoint-medium) {
85
107
  @for $i from 1 through $ams-grid-column-count {
86
108
  .ams-grid__cell--span-#{$i}-medium {
87
109
  @include ams-grid__cell--span-medium($i);
@@ -93,7 +115,7 @@ $ams-grid-column-count: 12;
93
115
  }
94
116
  }
95
117
 
96
- @media screen and (min-width: $ams-breakpoint-wide) {
118
+ @media (min-width: $ams-breakpoint-wide) {
97
119
  @for $i from 1 through $ams-grid-column-count {
98
120
  .ams-grid__cell--span-#{$i}-wide {
99
121
  @include ams-grid__cell--span-wide($i);
@@ -104,3 +126,27 @@ $ams-grid-column-count: 12;
104
126
  }
105
127
  }
106
128
  }
129
+
130
+ // Cell row span
131
+
132
+ @for $i from 1 through $ams-grid-row-span-max {
133
+ .ams-grid__cell--row-span-#{$i} {
134
+ @include ams-grid__cell--row-span($i);
135
+ }
136
+ }
137
+
138
+ @media (min-width: $ams-breakpoint-medium) {
139
+ @for $i from 1 through $ams-grid-row-span-max {
140
+ .ams-grid__cell--row-span-#{$i}-medium {
141
+ @include ams-grid__cell--row-span-medium($i);
142
+ }
143
+ }
144
+ }
145
+
146
+ @media (min-width: $ams-breakpoint-wide) {
147
+ @for $i from 1 through $ams-grid-row-span-max {
148
+ .ams-grid__cell--row-span-#{$i}-wide {
149
+ @include ams-grid__cell--row-span-wide($i);
150
+ }
151
+ }
152
+ }
@@ -23,11 +23,7 @@
23
23
  font-family: var(--ams-heading-font-family);
24
24
  font-weight: var(--ams-heading-font-weight);
25
25
 
26
- /*
27
- * If text-wrap is not supported, it is ignored.
28
- * This means the wrapped text will look less balanced, which is fine.
29
- */
30
- /* stylelint-disable-next-line plugin/use-baseline */
26
+ /* stylelint-disable-next-line plugin/use-baseline -- Unbalanced line lengths in non-supporting browsers are acceptable */
31
27
  text-wrap: var(--ams-heading-text-wrap);
32
28
 
33
29
  @include hyphenation;
@@ -59,11 +55,6 @@
59
55
  line-height: var(--ams-heading-5-line-height);
60
56
  }
61
57
 
62
- .ams-heading--6 {
63
- font-size: var(--ams-heading-6-font-size);
64
- line-height: var(--ams-heading-6-line-height);
65
- }
66
-
67
58
  .ams-heading--inverse {
68
59
  color: var(--ams-heading-inverse-color);
69
60
  }
@@ -77,10 +77,3 @@
77
77
  font-size: var(--ams-icon-heading-5-font-size);
78
78
  line-height: var(--ams-icon-heading-5-line-height);
79
79
  }
80
-
81
- .ams-icon--heading-6 {
82
- --ams-line-height: var(--ams-icon-heading-6-line-height);
83
-
84
- font-size: var(--ams-icon-heading-6-font-size);
85
- line-height: var(--ams-icon-heading-6-line-height);
86
- }
@@ -46,7 +46,7 @@
46
46
  display: none;
47
47
  }
48
48
 
49
- @media not (prefers-reduced-motion) {
49
+ @media (prefers-reduced-motion: no-preference) {
50
50
  scroll-behavior: smooth;
51
51
  }
52
52
  }
@@ -11,6 +11,7 @@
11
11
  @use "avatar/avatar";
12
12
  @use "badge/badge";
13
13
  @use "blockquote/blockquote";
14
+ @use "body/body";
14
15
  @use "breadcrumb/breadcrumb";
15
16
  @use "breakout/breakout";
16
17
  @use "button/button";
@@ -22,7 +23,6 @@
22
23
  @use "date-input/date-input";
23
24
  @use "description-list/description-list";
24
25
  @use "dialog/dialog";
25
- @use "document/document";
26
26
  @use "error-message/error-message";
27
27
  @use "field-set/field-set";
28
28
  @use "field/field";
@@ -35,7 +35,6 @@
35
35
  @use "hint/hint";
36
36
  @use "icon-button/icon-button";
37
37
  @use "icon/icon";
38
- @use "icon/icon.deprecated" as *;
39
38
  @use "image-slider/image-slider";
40
39
  @use "image/image";
41
40
  @use "invalid-form-alert/invalid-form-alert";
@@ -51,11 +50,11 @@
51
50
  @use "page/page";
52
51
  @use "page-footer/page-footer";
53
52
  @use "page-header/page-header";
54
- @use "page-heading/page-heading.deprecated" as *;
55
53
  @use "pagination/pagination";
56
54
  @use "paragraph/paragraph";
57
55
  @use "password-input/password-input";
58
56
  @use "progress-list/progress-list";
57
+ @use "prose/prose";
59
58
  @use "radio/radio";
60
59
  @use "row/row";
61
60
  @use "search-field/search-field";
@@ -66,6 +65,7 @@
66
65
  @use "switch/switch";
67
66
  @use "table-of-contents/table-of-contents";
68
67
  @use "table/table";
68
+ @use "tab-navigation/tab-navigation";
69
69
  @use "tabs/tabs";
70
70
  @use "text-area/text-area";
71
71
  @use "text-input/text-input";
@@ -14,11 +14,7 @@
14
14
  font-weight: var(--ams-label-font-weight);
15
15
  line-height: var(--ams-label-line-height);
16
16
 
17
- /*
18
- * If text-wrap is not supported, it is ignored.
19
- * This means the wrapped text will look less balanced, which is fine.
20
- */
21
- /* stylelint-disable-next-line plugin/use-baseline */
17
+ /* stylelint-disable-next-line plugin/use-baseline -- Unbalanced line lengths in non-supporting browsers are acceptable */
22
18
  text-wrap: var(--ams-label-text-wrap);
23
19
 
24
20
  @include hyphenation;
@@ -14,12 +14,13 @@ The English logo is used for websites in the English language.
14
14
 
15
15
  ## Exception
16
16
 
17
- Use a sub-brand logo if the website is owned by one of the 5 sub-brands.
17
+ Websites operated by one of the sub-brands use their specific logo.
18
18
  They have a separate status because of their unique service provision not directly associated with the City.
19
19
 
20
20
  The sub-brands are:
21
21
 
22
22
  - GGD Amsterdam
23
+ - GGD Amsterdam Inspectie
23
24
  - Museum Weesp
24
25
  - Stadsarchief
25
26
  - Stadsbank van Lening