@amsterdam/design-system-css 1.0.1 → 2.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 (105) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/accordion/accordion.css +1 -1
  3. package/dist/accordion/accordion.css.map +1 -1
  4. package/dist/alert/alert.css +1 -1
  5. package/dist/alert/alert.css.map +1 -1
  6. package/dist/breakout/breakout.css +1 -1
  7. package/dist/breakout/breakout.css.map +1 -1
  8. package/dist/button/button.css +1 -1
  9. package/dist/button/button.css.map +1 -1
  10. package/dist/call-to-action-link/call-to-action-link.css +1 -0
  11. package/dist/call-to-action-link/call-to-action-link.css.map +1 -0
  12. package/dist/checkbox/checkbox.css +1 -1
  13. package/dist/checkbox/checkbox.css.map +1 -1
  14. package/dist/date-input/date-input.css +1 -1
  15. package/dist/date-input/date-input.css.map +1 -1
  16. package/dist/description-list/description-list.css +1 -1
  17. package/dist/description-list/description-list.css.map +1 -1
  18. package/dist/dialog/dialog.css +1 -1
  19. package/dist/dialog/dialog.css.map +1 -1
  20. package/dist/file-input/file-input.css +1 -1
  21. package/dist/file-input/file-input.css.map +1 -1
  22. package/dist/grid/grid.css +1 -1
  23. package/dist/grid/grid.css.map +1 -1
  24. package/dist/icon/icon.css +1 -1
  25. package/dist/icon/icon.css.map +1 -1
  26. package/dist/icon/icon.deprecated.css +1 -0
  27. package/dist/icon/icon.deprecated.css.map +1 -0
  28. package/dist/image-slider/image-slider.css +1 -1
  29. package/dist/image-slider/image-slider.css.map +1 -1
  30. package/dist/index.css +1 -1
  31. package/dist/index.css.map +1 -1
  32. package/dist/invalid-form-alert/invalid-form-alert.css +1 -1
  33. package/dist/invalid-form-alert/invalid-form-alert.css.map +1 -1
  34. package/dist/menu/menu.css +1 -0
  35. package/dist/menu/menu.css.map +1 -0
  36. package/dist/ordered-list/ordered-list.css +1 -1
  37. package/dist/ordered-list/ordered-list.css.map +1 -1
  38. package/dist/page-footer/page-footer.css +1 -1
  39. package/dist/page-footer/page-footer.css.map +1 -1
  40. package/dist/page-header/page-header.css +1 -1
  41. package/dist/page-header/page-header.css.map +1 -1
  42. package/dist/page-heading/{page-heading.css → page-heading.deprecated.css} +1 -1
  43. package/dist/page-heading/page-heading.deprecated.css.map +1 -0
  44. package/dist/password-input/password-input.css +1 -1
  45. package/dist/password-input/password-input.css.map +1 -1
  46. package/dist/search-field/search-field.css +1 -1
  47. package/dist/search-field/search-field.css.map +1 -1
  48. package/dist/select/select.css +1 -1
  49. package/dist/select/select.css.map +1 -1
  50. package/dist/standalone-link/standalone-link.css +1 -1
  51. package/dist/standalone-link/standalone-link.css.map +1 -1
  52. package/dist/switch/switch.css +1 -1
  53. package/dist/switch/switch.css.map +1 -1
  54. package/dist/text-area/text-area.css +1 -1
  55. package/dist/text-area/text-area.css.map +1 -1
  56. package/dist/text-input/text-input.css +1 -1
  57. package/dist/text-input/text-input.css.map +1 -1
  58. package/dist/time-input/time-input.css +1 -1
  59. package/dist/time-input/time-input.css.map +1 -1
  60. package/dist/unordered-list/unordered-list.css +1 -1
  61. package/dist/unordered-list/unordered-list.css.map +1 -1
  62. package/documentation/coding-conventions.md +27 -0
  63. package/package.json +4 -4
  64. package/src/common/breakpoint.scss +5 -5
  65. package/src/components/accordion/accordion.scss +5 -10
  66. package/src/components/alert/alert.scss +1 -0
  67. package/src/components/button/README.md +5 -2
  68. package/src/components/button/button.scss +3 -0
  69. package/src/components/call-to-action-link/README.md +19 -0
  70. package/src/components/call-to-action-link/call-to-action-link.scss +32 -0
  71. package/src/components/card/README.md +1 -1
  72. package/src/components/checkbox/checkbox.scss +112 -207
  73. package/src/components/date-input/date-input.scss +22 -7
  74. package/src/components/file-input/file-input.scss +1 -0
  75. package/src/components/grid/README.md +1 -1
  76. package/src/components/heading/README.md +13 -6
  77. package/src/components/icon/README.md +2 -0
  78. package/src/components/icon/icon.deprecated.scss +12 -0
  79. package/src/components/icon/icon.scss +15 -1
  80. package/src/components/index.scss +4 -1
  81. package/src/components/invalid-form-alert/invalid-form-alert.scss +0 -11
  82. package/src/components/link/README.md +1 -0
  83. package/src/components/logo/README.md +1 -1
  84. package/src/components/menu/README.md +8 -0
  85. package/src/components/menu/menu.scss +82 -0
  86. package/src/components/ordered-list/ordered-list.scss +13 -8
  87. package/src/components/page/README.md +1 -1
  88. package/src/components/page-footer/README.md +11 -10
  89. package/src/components/page-header/README.md +1 -0
  90. package/src/components/page-heading/README.md +0 -16
  91. package/src/components/page-heading/{page-heading.scss → page-heading.deprecated.scss} +1 -0
  92. package/src/components/password-input/password-input.scss +14 -8
  93. package/src/components/radio/README.md +4 -2
  94. package/src/components/search-field/search-field.scss +17 -13
  95. package/src/components/select/select.scss +14 -15
  96. package/src/components/skip-link/README.md +5 -4
  97. package/src/components/standalone-link/README.md +7 -3
  98. package/src/components/standalone-link/standalone-link.scss +4 -7
  99. package/src/components/switch/switch.scss +1 -0
  100. package/src/components/table/README.md +3 -4
  101. package/src/components/text-area/text-area.scss +14 -8
  102. package/src/components/text-input/text-input.scss +14 -8
  103. package/src/components/time-input/time-input.scss +18 -7
  104. package/src/components/unordered-list/unordered-list.scss +13 -8
  105. package/dist/page-heading/page-heading.css.map +0 -1
@@ -8,11 +8,6 @@
8
8
  @use "../../common/hyphenation" as *;
9
9
  @use "../../common/text-rendering" as *;
10
10
 
11
- .ams-checkbox__input {
12
- @include hide-input;
13
- @include input-label-focus;
14
- }
15
-
16
11
  // Default
17
12
  .ams-checkbox__label {
18
13
  color: var(--ams-checkbox-color);
@@ -24,6 +19,8 @@
24
19
  gap: var(--ams-checkbox-gap);
25
20
  line-height: var(--ams-checkbox-line-height);
26
21
  outline-offset: var(--ams-checkbox-outline-offset);
22
+ text-decoration-thickness: var(--ams-checkbox-text-decoration-thickness);
23
+ text-underline-offset: var(--ams-checkbox-text-underline-offset);
27
24
 
28
25
  @include hyphenation;
29
26
  @include text-rendering;
@@ -39,6 +36,11 @@
39
36
  .ams-checkbox__rectangle {
40
37
  fill: var(--ams-checkbox-rectangle-fill);
41
38
  stroke: var(--ams-checkbox-rectangle-stroke);
39
+
40
+ @media (forced-colors: active) {
41
+ fill: Canvas;
42
+ stroke: FieldText;
43
+ }
42
44
  }
43
45
 
44
46
  .ams-checkbox__hover-indicator {
@@ -48,269 +50,172 @@
48
50
  .ams-checkbox__checked-indicator {
49
51
  display: none;
50
52
  stroke: var(--ams-checkbox-checked-indicator-stroke);
53
+
54
+ @media (forced-colors: active) {
55
+ stroke: Canvas;
56
+ }
51
57
  }
52
58
 
53
59
  .ams-checkbox__indeterminate-indicator {
54
60
  display: none;
55
61
  stroke: var(--ams-checkbox-indeterminate-indicator-stroke);
56
- }
57
-
58
- // Default hover
59
- .ams-checkbox__label:hover {
60
- color: var(--ams-checkbox-hover-color);
61
- text-decoration-line: underline;
62
- text-decoration-thickness: var(--ams-checkbox-hover-text-decoration-thickness);
63
- text-underline-offset: 0.375rem;
64
-
65
- .ams-checkbox__rectangle {
66
- stroke: var(--ams-checkbox-rectangle-hover-stroke);
67
- }
68
62
 
69
- .ams-checkbox__hover-indicator {
70
- stroke: var(--ams-checkbox-hover-indicator-hover-stroke);
63
+ @media (forced-colors: active) {
64
+ stroke: Canvas;
71
65
  }
72
66
  }
73
67
 
74
- // Invalid
75
- .ams-checkbox__input[aria-invalid="true"] + .ams-checkbox__label {
76
- .ams-checkbox__rectangle {
77
- stroke: var(--ams-checkbox-rectangle-invalid-stroke);
68
+ @mixin forced-colors-selected {
69
+ @media (forced-colors: active) {
70
+ fill: ActiveText;
71
+ stroke: ActiveText;
78
72
  }
79
73
  }
80
74
 
81
- // Indeterminate
82
- .ams-checkbox__input:indeterminate + .ams-checkbox__label {
83
- .ams-checkbox__rectangle {
84
- fill: var(--ams-checkbox-rectangle-indeterminate-fill);
85
- }
86
-
87
- .ams-checkbox__indeterminate-indicator {
88
- display: block;
75
+ @mixin forced-colors-disabled {
76
+ @media (forced-colors: active) {
77
+ fill: GrayText;
78
+ stroke: GrayText;
89
79
  }
90
80
  }
91
81
 
92
- // Disabled
93
- .ams-checkbox__input:disabled + .ams-checkbox__label {
94
- color: var(--ams-checkbox-disabled-color);
95
- cursor: var(--ams-checkbox-disabled-cursor);
96
-
97
- .ams-checkbox__rectangle {
98
- stroke: var(--ams-checkbox-rectangle-disabled-stroke);
99
- }
82
+ .ams-checkbox__input {
83
+ @include hide-input;
84
+ @include input-label-focus;
100
85
 
101
- .ams-checkbox__hover-indicator {
102
- stroke: none;
103
- }
104
- }
86
+ // Disabled
87
+ &:disabled + * {
88
+ color: var(--ams-checkbox-disabled-color);
89
+ cursor: var(--ams-checkbox-disabled-cursor);
105
90
 
106
- // Checked
107
- .ams-checkbox__input:checked:not(:indeterminate) + .ams-checkbox__label {
108
- .ams-checkbox__rectangle {
109
- fill: var(--ams-checkbox-rectangle-checked-fill);
110
- }
91
+ .ams-checkbox__rectangle {
92
+ stroke: var(--ams-checkbox-rectangle-disabled-stroke);
111
93
 
112
- .ams-checkbox__checked-indicator {
113
- display: block;
94
+ @media (forced-colors: active) {
95
+ stroke: GrayText;
96
+ }
97
+ }
114
98
  }
115
- }
116
99
 
117
- // Invalid checked
118
- .ams-checkbox__input[aria-invalid="true"]:checked + .ams-checkbox__label {
119
- .ams-checkbox__rectangle {
120
- fill: var(--ams-checkbox-rectangle-checked-invalid-fill);
121
- }
122
- }
100
+ // Indeterminate
101
+ &:indeterminate + * {
102
+ .ams-checkbox__rectangle {
103
+ fill: var(--ams-checkbox-rectangle-indeterminate-fill);
123
104
 
124
- // Invalid indeterminate
125
- .ams-checkbox__input[aria-invalid="true"]:indeterminate + .ams-checkbox__label {
126
- .ams-checkbox__rectangle {
127
- fill: var(--ams-checkbox-rectangle-indeterminate-invalid-fill);
128
- }
129
- }
105
+ @include forced-colors-selected;
106
+ }
130
107
 
131
- // Disabled checked
132
- .ams-checkbox__input:disabled:checked + .ams-checkbox__label {
133
- .ams-checkbox__rectangle {
134
- fill: var(--ams-checkbox-rectangle-checked-disabled-fill);
108
+ .ams-checkbox__indeterminate-indicator {
109
+ display: block;
110
+ }
135
111
  }
136
- }
137
112
 
138
- // Disabled indeterminate
139
- .ams-checkbox__input:disabled:indeterminate + .ams-checkbox__label {
140
- .ams-checkbox__rectangle {
141
- fill: var(--ams-checkbox-rectangle-indeterminate-disabled-fill);
142
- }
143
- }
113
+ // Checked
114
+ &:checked:not(:indeterminate) + * {
115
+ .ams-checkbox__rectangle {
116
+ fill: var(--ams-checkbox-rectangle-checked-fill);
144
117
 
145
- // HOVER
118
+ @include forced-colors-selected;
119
+ }
146
120
 
147
- // Checked hover
148
- .ams-checkbox__input:checked + .ams-checkbox__label:hover {
149
- .ams-checkbox__rectangle {
150
- fill: var(--ams-checkbox-rectangle-checked-hover-fill);
121
+ .ams-checkbox__checked-indicator {
122
+ display: block;
123
+ }
151
124
  }
152
- }
153
125
 
154
- // Indeterminate hover
155
- .ams-checkbox__input:indeterminate + .ams-checkbox__label:hover {
156
- .ams-checkbox__rectangle {
157
- fill: var(--ams-checkbox-rectangle-indeterminate-hover-fill);
158
- }
159
- }
126
+ // Default hover
127
+ &:hover:not(:disabled) + * {
128
+ color: var(--ams-checkbox-hover-color);
129
+ text-decoration-line: var(--ams-checkbox-hover-text-decoration-line);
160
130
 
161
- // Invalid hover
162
- .ams-checkbox__input[aria-invalid="true"] + .ams-checkbox__label:hover {
163
- .ams-checkbox__rectangle {
164
- stroke: var(--ams-checkbox-rectangle-invalid-hover-stroke);
165
- }
131
+ .ams-checkbox__rectangle {
132
+ @media (forced-colors: none) {
133
+ stroke: var(--ams-checkbox-rectangle-hover-stroke);
134
+ }
135
+ }
166
136
 
167
- .ams-checkbox__hover-indicator {
168
- stroke: var(--ams-checkbox-hover-indicator-invalid-hover-stroke);
137
+ .ams-checkbox__hover-indicator {
138
+ @media (forced-colors: none) {
139
+ stroke: var(--ams-checkbox-hover-indicator-hover-stroke);
140
+ }
141
+ }
169
142
  }
170
- }
171
143
 
172
- // Disabled invalid hover
173
- .ams-checkbox__input[aria-invalid="true"]:disabled + .ams-checkbox__label:hover {
174
- .ams-checkbox__rectangle {
175
- stroke: var(--ams-checkbox-rectangle-hover-disabled-invalid-stroke);
176
- }
177
- }
144
+ // Disabled indeterminate
145
+ &:disabled:indeterminate + * .ams-checkbox__rectangle {
146
+ fill: var(--ams-checkbox-rectangle-indeterminate-disabled-fill);
178
147
 
179
- // Disabled checked hover
180
- .ams-checkbox__input:disabled:checked + .ams-checkbox__label:hover {
181
- .ams-checkbox__rectangle {
182
- fill: var(--ams-checkbox-rectangle-checked-disabled-hover-fill);
148
+ @include forced-colors-disabled;
183
149
  }
184
- }
185
150
 
186
- // Disabled indeterminate hover
187
- .ams-checkbox__input:disabled:indeterminate + .ams-checkbox__label:hover {
188
- .ams-checkbox__rectangle {
189
- fill: var(--ams-checkbox-rectangle-indeterminate-disabled-hover-fill);
151
+ // Disabled checked
152
+ &:disabled:checked + * .ams-checkbox__rectangle {
153
+ fill: var(--ams-checkbox-rectangle-checked-disabled-fill);
154
+
155
+ @include forced-colors-disabled;
190
156
  }
191
- }
192
157
 
193
- // Disabled hover
194
- .ams-checkbox__input:disabled + .ams-checkbox__label:hover {
195
- text-decoration: none;
158
+ // Invalid
159
+ :is(&:invalid, &[aria-invalid="true"]):not(:disabled) + * .ams-checkbox__rectangle {
160
+ stroke: var(--ams-checkbox-rectangle-invalid-stroke);
196
161
 
197
- .ams-checkbox__hover-indicator {
198
- stroke: none;
162
+ @include forced-colors-selected;
199
163
  }
200
- }
201
164
 
202
- // Invalid checked hover
203
- .ams-checkbox__input[aria-invalid="true"]:checked + .ams-checkbox__label:hover {
204
- .ams-checkbox__rectangle {
205
- fill: var(--ams-checkbox-rectangle-checked-invalid-hover-fill);
206
- }
207
- }
165
+ // Invalid indeterminate
166
+ :is(&:invalid, &[aria-invalid="true"]):indeterminate:not(:disabled) + * .ams-checkbox__rectangle {
167
+ fill: var(--ams-checkbox-rectangle-indeterminate-invalid-fill);
208
168
 
209
- // Invalid indeterminate hover
210
- .ams-checkbox__input[aria-invalid="true"]:indeterminate + .ams-checkbox__label:hover {
211
- .ams-checkbox__rectangle {
212
- fill: var(--ams-checkbox-rectangle-indeterminate-invalid-hover-fill);
169
+ @include forced-colors-selected;
213
170
  }
214
- }
215
171
 
216
- // Disabled invalid checked hover
217
- .ams-checkbox__input[aria-invalid="true"]:disabled:checked + .ams-checkbox__label:hover {
218
- .ams-checkbox__rectangle {
219
- fill: var(--ams-checkbox-rectangle-checked-hover-disabled-invalid-fill);
220
- }
221
- }
172
+ // Invalid checked
173
+ :is(&:invalid, &[aria-invalid="true"]):checked:not(:disabled) + * .ams-checkbox__rectangle {
174
+ fill: var(--ams-checkbox-rectangle-checked-invalid-fill);
222
175
 
223
- // Disabled invalid indeterminate hover
224
- .ams-checkbox__input[aria-invalid="true"]:disabled:indeterminate + .ams-checkbox__label:hover {
225
- .ams-checkbox__rectangle {
226
- fill: var(--ams-checkbox-rectangle-indeterminate-hover-disabled-invalid-fill);
176
+ @include forced-colors-selected;
227
177
  }
228
- }
229
178
 
230
- // FORCED COLORS
179
+ // HOVER
231
180
 
232
- // Default
233
- @media (forced-colors: active) {
234
- .ams-checkbox__label,
235
- .ams-checkbox__label:hover,
236
- .ams-checkbox__input[aria-invalid="true"] + .ams-checkbox__label,
237
- .ams-checkbox__input[aria-invalid="true"] + .ams-checkbox__label:hover {
238
- .ams-checkbox__rectangle {
239
- fill: Canvas;
240
- stroke: FieldText;
241
- }
181
+ // Indeterminate hover
182
+ &:indeterminate:not(:disabled) + *:hover .ams-checkbox__rectangle {
183
+ fill: var(--ams-checkbox-rectangle-indeterminate-hover-fill);
242
184
 
243
- .ams-checkbox__hover-indicator {
244
- stroke: none;
245
- }
185
+ @include forced-colors-selected;
246
186
  }
247
- }
248
187
 
249
- // Checked
250
- @media (forced-colors: active) {
251
- .ams-checkbox__input:checked:not(:indeterminate) + .ams-checkbox__label,
252
- .ams-checkbox__input:checked + .ams-checkbox__label:hover,
253
- .ams-checkbox__input[aria-invalid="true"]:checked + .ams-checkbox__label,
254
- .ams-checkbox__input[aria-invalid="true"]:checked + .ams-checkbox__label:hover {
255
- .ams-checkbox__rectangle {
256
- fill: ActiveText;
257
- stroke: ActiveText;
258
- }
188
+ // Checked hover
189
+ &:checked:not(:disabled, :indeterminate) + *:hover .ams-checkbox__rectangle {
190
+ fill: var(--ams-checkbox-rectangle-checked-hover-fill);
259
191
 
260
- .ams-checkbox__checked-indicator {
261
- stroke: Canvas;
262
- }
192
+ @include forced-colors-selected;
263
193
  }
264
- }
265
194
 
266
- // Indeterminate
267
- @media (forced-colors: active) {
268
- .ams-checkbox__input:indeterminate + .ams-checkbox__label,
269
- .ams-checkbox__input:indeterminate + .ams-checkbox__label:hover,
270
- .ams-checkbox__input[aria-invalid="true"]:indeterminate + .ams-checkbox__label,
271
- .ams-checkbox__input[aria-invalid="true"]:indeterminate + .ams-checkbox__label:hover {
195
+ // Invalid hover
196
+ :is(&:invalid, &[aria-invalid="true"]):not(:disabled) + *:hover {
272
197
  .ams-checkbox__rectangle {
273
- fill: ActiveText;
274
- stroke: ActiveText;
198
+ stroke: var(--ams-checkbox-rectangle-invalid-hover-stroke);
275
199
  }
276
200
 
277
- .ams-checkbox__indeterminate-indicator {
278
- stroke: Canvas;
201
+ .ams-checkbox__hover-indicator {
202
+ @media (forced-colors: none) {
203
+ stroke: var(--ams-checkbox-hover-indicator-invalid-hover-stroke);
204
+ }
279
205
  }
280
206
  }
281
- }
282
207
 
283
- // Disabled
284
- @media (forced-colors: active) {
285
- .ams-checkbox__input:disabled + .ams-checkbox__label,
286
- .ams-checkbox__input:disabled + .ams-checkbox__label:hover,
287
- .ams-checkbox__input[aria-invalid="true"]:disabled + .ams-checkbox__label,
288
- .ams-checkbox__input[aria-invalid="true"]:disabled + .ams-checkbox__label:hover {
289
- .ams-checkbox__rectangle {
290
- stroke: GrayText;
291
- }
292
- }
293
- }
208
+ // Invalid indeterminate hover
209
+ :is(&:invalid, &[aria-invalid="true"]):indeterminate:not(:disabled) + *:hover .ams-checkbox__rectangle {
210
+ fill: var(--ams-checkbox-rectangle-indeterminate-invalid-hover-fill);
294
211
 
295
- // Disabled checked
296
- @media (forced-colors: active) {
297
- .ams-checkbox__input:disabled:checked + .ams-checkbox__label,
298
- .ams-checkbox__input:disabled:checked + .ams-checkbox__label:hover,
299
- .ams-checkbox__input[aria-invalid="true"]:disabled:checked + .ams-checkbox__label:hover {
300
- .ams-checkbox__rectangle {
301
- fill: GrayText;
302
- stroke: GrayText;
303
- }
212
+ @include forced-colors-selected;
304
213
  }
305
- }
306
214
 
307
- // Disabled indeterminate
308
- @media (forced-colors: active) {
309
- .ams-checkbox__input:disabled:indeterminate + .ams-checkbox__label,
310
- .ams-checkbox__input:disabled:indeterminate + .ams-checkbox__label:hover,
311
- .ams-checkbox__input[aria-invalid="true"]:disabled:indeterminate + .ams-checkbox__label:hover {
312
- .ams-checkbox__rectangle {
313
- fill: GrayText;
314
- }
215
+ // Invalid checked hover
216
+ :is(&:invalid, &[aria-invalid="true"]):checked:not(:disabled) + *:hover .ams-checkbox__rectangle {
217
+ fill: var(--ams-checkbox-rectangle-checked-invalid-hover-fill);
218
+
219
+ @include forced-colors-selected;
315
220
  }
316
221
  }
@@ -10,6 +10,20 @@
10
10
  appearance: none; // Reset native appearance, this causes issues on iOS and Android devices
11
11
  border-radius: 0; // Reset rounded borders on iOS devices
12
12
  margin-block: 0;
13
+
14
+ &::-webkit-datetime-edit,
15
+ &::-webkit-datetime-edit-ampm-field,
16
+ &::-webkit-datetime-edit-day-field,
17
+ &::-webkit-datetime-edit-fields-wrapper,
18
+ &::-webkit-datetime-edit-hour-field,
19
+ &::-webkit-datetime-edit-millisecond-field,
20
+ &::-webkit-datetime-edit-minute-field,
21
+ &::-webkit-datetime-edit-month-field,
22
+ &::-webkit-datetime-edit-second-field,
23
+ &::-webkit-datetime-edit-week-field,
24
+ &::-webkit-datetime-edit-year-field {
25
+ padding-block: 0; // Override value of 1px in UA stylesheet
26
+ }
13
27
  }
14
28
 
15
29
  .ams-date-input {
@@ -61,16 +75,17 @@
61
75
  visibility: visible;
62
76
  }
63
77
 
64
- .ams-date-input:invalid,
65
- .ams-date-input[aria-invalid="true"] {
78
+ .ams-date-input:not(:disabled):invalid,
79
+ .ams-date-input:not(:disabled)[aria-invalid="true"] {
66
80
  border-color: var(--ams-date-input-invalid-border-color);
67
-
68
- &:hover {
69
- border-color: var(--ams-date-input-invalid-hover-border-color);
70
- box-shadow: var(--ams-date-input-invalid-hover-box-shadow);
71
- }
72
81
  }
73
82
 
74
83
  .ams-date-input:not(:disabled):hover {
75
84
  box-shadow: var(--ams-date-input-hover-box-shadow);
76
85
  }
86
+
87
+ .ams-date-input:not(:disabled):invalid:hover,
88
+ .ams-date-input:not(:disabled)[aria-invalid="true"]:hover {
89
+ border-color: var(--ams-date-input-invalid-hover-border-color);
90
+ box-shadow: var(--ams-date-input-invalid-hover-box-shadow);
91
+ }
@@ -48,6 +48,7 @@
48
48
  font-family: inherit;
49
49
  font-size: inherit; // iOS specific fix
50
50
  font-weight: inherit;
51
+ line-height: var(--ams-file-input-file-selector-button-line-height);
51
52
  margin-inline-end: var(--ams-file-input-file-selector-button-margin-inline-end);
52
53
  padding-block: var(--ams-file-input-file-selector-button-padding-block);
53
54
  padding-inline: var(--ams-file-input-file-selector-button-padding-inline);
@@ -19,4 +19,4 @@ Divides the screen into columns to align the elements of a page.
19
19
 
20
20
  ## Design
21
21
 
22
- The [design choices](/docs/brand-design-tokens-grid--docs) are described in the general documentation.
22
+ The [design choices](/docs/docs-developer-guide-grid--docs) are described in the Developer Guide.
@@ -6,12 +6,19 @@ Introduces a page section and describes the following content.
6
6
 
7
7
  ## Guidelines
8
8
 
9
- - Use Headings to allow the user to quickly grasp the structure of the page.
10
- - All headings together represent the document’s structure. Users of screen readers may use headings to navigate the page – an incorrect hierarchy will confuse them.
11
- - Every page should contain one heading with level 1.
12
- Do not skip heading levels, e.g. a level 2 Heading should be followed by one with level 3, not level 4.
13
- The `level` prop doesnt have a default value; the correct level should be determined for each instance.
14
- - Don’t use a Heading just for its visual appearance.
9
+ - Headings help the user scan the structure of a page.
10
+ They also introduce the content that follows them.
11
+ - Users of screen readers often depend on headings to navigate a page.
12
+ If the hierarchy is wrong, it can confuse them.
13
+ That’s why its crucial to arrange headings properly.
14
+ - The `level` prop doesn’t have a default value; determine the correct level for each instance.
15
+ - Every page should contain one heading with level 1.
16
+ - Do not skip levels. For example, a level 2 Heading must be followed by one with level 3.
17
+ - Use the `size` prop to make a Heading visually larger or smaller, but sparingly and consistently.
18
+ - Content pages, e.g. for articles, products, events etc. must not use the size prop on their Headings.
19
+ - Most Headings on overview pages, e.g. Card, Table of Content, and ‘Link Blocks’, use a size of ‘level-3’.
20
+ - The same applies to large sections – e.g. Accordion, Alert, Dialog and the caption of a Table.
21
+ Most of them can be given a different size if appropriate.
15
22
 
16
23
  ## Relevant WCAG requirements
17
24
 
@@ -6,6 +6,8 @@ Icons are visual symbols used to represent ideas, themes, or actions.
6
6
  They communicate the message at a glance and draw attention to important (interactive) information.
7
7
  Always use an `Icon` component to encapsulate an SVG icon for proper styling and sizing.
8
8
 
9
+ Our icons can only be used on websites and applications where the City of Amsterdam is the main communicator.
10
+
9
11
  ## Interactive elements
10
12
 
11
13
  Use an icon to support textual interactive elements like buttons and links.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ // Deprecated. Use ‘heading 1’ instead.
7
+ .ams-icon--heading-0 {
8
+ --ams-line-height: var(--ams-icon-heading-0-line-height);
9
+
10
+ font-size: var(--ams-icon-heading-0-font-size);
11
+ line-height: var(--ams-icon-heading-0-line-height);
12
+ }
@@ -8,7 +8,7 @@
8
8
 
9
9
  align-items: center;
10
10
  align-self: baseline; // Aligns the icon with text in flex or grid context
11
- display: inline-flex;
11
+ display: inline-flex; // Center align the icon vertically, and override the default 'hidden' attribute
12
12
  font-size: var(--ams-icon-font-size);
13
13
  line-height: var(--ams-line-height);
14
14
 
@@ -43,6 +43,20 @@
43
43
  font-size: var(--ams-icon-large-font-size);
44
44
  }
45
45
 
46
+ .ams-icon--heading-1 {
47
+ --ams-line-height: var(--ams-icon-heading-1-line-height);
48
+
49
+ font-size: var(--ams-icon-heading-1-font-size);
50
+ line-height: var(--ams-icon-heading-1-line-height);
51
+ }
52
+
53
+ .ams-icon--heading-2 {
54
+ --ams-line-height: var(--ams-icon-heading-2-line-height);
55
+
56
+ font-size: var(--ams-icon-heading-2-font-size);
57
+ line-height: var(--ams-icon-heading-2-line-height);
58
+ }
59
+
46
60
  .ams-icon--heading-3 {
47
61
  --ams-line-height: var(--ams-icon-heading-3-line-height);
48
62
 
@@ -14,6 +14,7 @@
14
14
  @use "breadcrumb/breadcrumb";
15
15
  @use "breakout/breakout";
16
16
  @use "button/button";
17
+ @use "call-to-action-link/call-to-action-link";
17
18
  @use "card/card";
18
19
  @use "character-count/character-count";
19
20
  @use "checkbox/checkbox";
@@ -34,6 +35,7 @@
34
35
  @use "hint/hint";
35
36
  @use "icon-button/icon-button";
36
37
  @use "icon/icon";
38
+ @use "icon/icon.deprecated" as *;
37
39
  @use "image-slider/image-slider";
38
40
  @use "image/image";
39
41
  @use "invalid-form-alert/invalid-form-alert";
@@ -43,12 +45,13 @@
43
45
  @use "logo/logo";
44
46
  @use "margin/margin";
45
47
  @use "mark/mark";
48
+ @use "menu/menu";
46
49
  @use "ordered-list/ordered-list";
47
50
  @use "overlap/overlap";
48
51
  @use "page/page";
49
52
  @use "page-footer/page-footer";
50
53
  @use "page-header/page-header";
51
- @use "page-heading/page-heading";
54
+ @use "page-heading/page-heading.deprecated" as *;
52
55
  @use "pagination/pagination";
53
56
  @use "paragraph/paragraph";
54
57
  @use "password-input/password-input";
@@ -5,15 +5,4 @@
5
5
 
6
6
  .ams-invalid-form-alert {
7
7
  outline-offset: var(--ams-invalid-form-alert-outline-offset);
8
-
9
- // In Chromium browsers, the outline overlaps with the border in this component.
10
- // We're not sure why, but to fix this we double the offset for Chromium browsers here.
11
- @supports (contain: paint) and (not (-moz-appearance: none)) {
12
- outline-offset: calc(var(--ams-invalid-form-alert-outline-offset) * 2);
13
-
14
- // Reset for Safari
15
- @supports (font: -apple-system-body) {
16
- outline-offset: var(--ams-invalid-form-alert-outline-offset);
17
- }
18
- }
19
8
  }
@@ -16,6 +16,7 @@ It is the lightweight variant for navigation.
16
16
  Use a button instead of a link when an action is desired.
17
17
  - An icon can be added to links, positioned after the link.
18
18
  - Too many links on the same page may confuse the user.
19
+ - For a link on its own line of text, use the [Standalone Link](/docs/components-navigation-standalone-link--docs).
19
20
 
20
21
  ### External links
21
22
 
@@ -34,7 +34,7 @@ The sub-brands are:
34
34
  - The logo links to the homepage of the website or application.
35
35
  - If the application is a form, application, or tool without a homepage, the logo links to the page where the form, application, or tool is referred to.
36
36
 
37
- The logo is 40 pixels tall at its minimum, growing to 56 pixels in wider windows.
37
+ The logo is 40 pixels tall at its minimum, growing to 60 pixels in wider windows.
38
38
  This also applies to sub-brand logos.
39
39
 
40
40
  ## Download
@@ -0,0 +1,8 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Menu
4
+
5
+ A primary navigation leading to key areas of an application or website.
6
+
7
+ The Menu component works well in the sidebar of applications, usually on a blue background.
8
+ This first iteration is a simple vertical menu with 1 level of navigation.