@amsterdam/design-system-css 0.4.0 → 0.6.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 (177) hide show
  1. package/CHANGELOG.md +51 -2
  2. package/LICENSE.txt +287 -0
  3. package/README.md +11 -0
  4. package/dist/accordion/accordion.css +1 -1
  5. package/dist/accordion/accordion.css.map +1 -1
  6. package/dist/alert/alert.css +1 -1
  7. package/dist/alert/alert.css.map +1 -1
  8. package/dist/badge/badge.css +1 -1
  9. package/dist/badge/badge.css.map +1 -1
  10. package/dist/blockquote/blockquote.css +1 -1
  11. package/dist/blockquote/blockquote.css.map +1 -1
  12. package/dist/breadcrumb/breadcrumb.css +1 -1
  13. package/dist/breadcrumb/breadcrumb.css.map +1 -1
  14. package/dist/button/button.css +1 -1
  15. package/dist/button/button.css.map +1 -1
  16. package/dist/checkbox/checkbox.css +1 -1
  17. package/dist/checkbox/checkbox.css.map +1 -1
  18. package/dist/column/column.css +1 -0
  19. package/dist/column/column.css.map +1 -0
  20. package/dist/dialog/dialog.css +1 -1
  21. package/dist/dialog/dialog.css.map +1 -1
  22. package/dist/fieldset/fieldset.css +1 -0
  23. package/dist/fieldset/fieldset.css.map +1 -0
  24. package/dist/form-label/form-label.css +1 -1
  25. package/dist/form-label/form-label.css.map +1 -1
  26. package/dist/gap/gap.css +1 -0
  27. package/dist/gap/gap.css.map +1 -0
  28. package/dist/grid/grid.css +1 -1
  29. package/dist/grid/grid.css.map +1 -1
  30. package/dist/header/header.css +1 -1
  31. package/dist/header/header.css.map +1 -1
  32. package/dist/heading/heading.css +1 -1
  33. package/dist/heading/heading.css.map +1 -1
  34. package/dist/icon/icon.css +1 -1
  35. package/dist/icon/icon.css.map +1 -1
  36. package/dist/index.css +1 -1
  37. package/dist/index.css.map +1 -1
  38. package/dist/link/link.css +1 -1
  39. package/dist/link/link.css.map +1 -1
  40. package/dist/link-list/link-list.css +1 -1
  41. package/dist/link-list/link-list.css.map +1 -1
  42. package/dist/margin/margin.css +1 -0
  43. package/dist/margin/margin.css.map +1 -0
  44. package/dist/mega-menu/mega-menu.css.map +1 -1
  45. package/dist/ordered-list/ordered-list.css +1 -1
  46. package/dist/ordered-list/ordered-list.css.map +1 -1
  47. package/dist/page-heading/page-heading.css +1 -1
  48. package/dist/page-heading/page-heading.css.map +1 -1
  49. package/dist/page-menu/page-menu.css +1 -1
  50. package/dist/page-menu/page-menu.css.map +1 -1
  51. package/dist/pagination/pagination.css +1 -1
  52. package/dist/pagination/pagination.css.map +1 -1
  53. package/dist/paragraph/paragraph.css +1 -1
  54. package/dist/paragraph/paragraph.css.map +1 -1
  55. package/dist/radio/radio.css +1 -0
  56. package/dist/radio/radio.css.map +1 -0
  57. package/dist/row/row.css +1 -0
  58. package/dist/row/row.css.map +1 -0
  59. package/dist/search-field/search-field.css +1 -1
  60. package/dist/search-field/search-field.css.map +1 -1
  61. package/dist/skip-link/skip-link.css +1 -1
  62. package/dist/skip-link/skip-link.css.map +1 -1
  63. package/dist/switch/switch.css +1 -1
  64. package/dist/switch/switch.css.map +1 -1
  65. package/dist/table/table.css +1 -1
  66. package/dist/table/table.css.map +1 -1
  67. package/dist/tabs/tabs.css +1 -0
  68. package/dist/tabs/tabs.css.map +1 -0
  69. package/dist/text-area/text-area.css +1 -0
  70. package/dist/text-area/text-area.css.map +1 -0
  71. package/dist/text-input/text-input.css +1 -1
  72. package/dist/text-input/text-input.css.map +1 -1
  73. package/dist/top-task-link/top-task-link.css +1 -1
  74. package/dist/top-task-link/top-task-link.css.map +1 -1
  75. package/dist/unordered-list/unordered-list.css +1 -1
  76. package/dist/unordered-list/unordered-list.css.map +1 -1
  77. package/package.json +9 -10
  78. package/src/common/breakpoint.scss +1 -1
  79. package/src/common/calculate-fluid-style.scss +1 -1
  80. package/src/common/hide-input.scss +11 -0
  81. package/src/common/hyphenation.scss +10 -0
  82. package/src/common/input-label-focus.scss +21 -0
  83. package/src/common/size.scss +13 -0
  84. package/src/components/accordion/README.md +2 -0
  85. package/src/components/accordion/accordion.scss +7 -12
  86. package/src/components/alert/README.md +4 -2
  87. package/src/components/alert/alert.scss +3 -5
  88. package/src/components/aspect-ratio/README.md +2 -0
  89. package/src/components/aspect-ratio/aspect-ratio.scss +1 -1
  90. package/src/components/badge/README.md +2 -0
  91. package/src/components/badge/badge.scss +3 -8
  92. package/src/components/blockquote/README.md +2 -0
  93. package/src/components/blockquote/blockquote.scss +6 -8
  94. package/src/components/breadcrumb/README.md +2 -0
  95. package/src/components/breadcrumb/breadcrumb.scss +3 -8
  96. package/src/components/button/README.md +3 -1
  97. package/src/components/button/button.scss +60 -15
  98. package/src/components/card/README.md +5 -3
  99. package/src/components/card/card.scss +1 -1
  100. package/src/components/checkbox/README.md +3 -1
  101. package/src/components/checkbox/checkbox.scss +19 -31
  102. package/src/components/column/README.md +5 -0
  103. package/src/components/column/column.scss +16 -0
  104. package/src/components/dialog/README.md +2 -0
  105. package/src/components/dialog/dialog.scss +7 -9
  106. package/src/components/fieldset/README.md +18 -0
  107. package/src/components/fieldset/fieldset.scss +34 -0
  108. package/src/components/footer/README.md +2 -0
  109. package/src/components/form-label/README.md +2 -0
  110. package/src/components/form-label/form-label.scss +6 -8
  111. package/src/components/gap/README.md +5 -0
  112. package/src/components/gap/gap.scss +16 -0
  113. package/src/components/grid/README.md +5 -3
  114. package/src/components/grid/grid.scss +14 -21
  115. package/src/components/header/README.md +2 -0
  116. package/src/components/header/header.scss +7 -7
  117. package/src/components/heading/README.md +2 -0
  118. package/src/components/heading/heading.scss +16 -43
  119. package/src/components/icon/README.md +3 -1
  120. package/src/components/icon/icon.scss +13 -51
  121. package/src/components/icon-button/README.md +3 -1
  122. package/src/components/icon-button/icon-button.scss +1 -1
  123. package/src/components/image/README.md +3 -1
  124. package/src/components/image/image.scss +2 -2
  125. package/src/components/index.scss +9 -1
  126. package/src/components/link/README.md +2 -0
  127. package/src/components/link/link.scss +3 -36
  128. package/src/components/link-list/README.md +3 -1
  129. package/src/components/link-list/link-list.scss +10 -21
  130. package/src/components/logo/README.md +4 -1
  131. package/src/components/logo/logo.scss +1 -1
  132. package/src/components/margin/README.md +5 -0
  133. package/src/components/margin/margin.scss +12 -0
  134. package/src/components/mark/README.md +2 -0
  135. package/src/components/mark/mark.scss +1 -1
  136. package/src/components/mega-menu/README.md +2 -0
  137. package/src/components/mega-menu/mega-menu.scss +3 -1
  138. package/src/components/ordered-list/README.md +2 -0
  139. package/src/components/ordered-list/ordered-list.scss +8 -9
  140. package/src/components/overlap/README.md +2 -0
  141. package/src/components/overlap/overlap.scss +1 -1
  142. package/src/components/page-heading/README.md +3 -1
  143. package/src/components/page-heading/page-heading.scss +6 -8
  144. package/src/components/page-menu/README.md +3 -1
  145. package/src/components/page-menu/page-menu.scss +3 -8
  146. package/src/components/pagination/README.md +3 -1
  147. package/src/components/pagination/pagination.scss +4 -9
  148. package/src/components/paragraph/README.md +2 -0
  149. package/src/components/paragraph/paragraph.scss +7 -22
  150. package/src/components/radio/README.md +18 -0
  151. package/src/components/radio/radio.scss +157 -0
  152. package/src/components/row/README.md +3 -0
  153. package/src/components/row/row.scss +17 -0
  154. package/src/components/screen/README.md +6 -4
  155. package/src/components/screen/screen.scss +1 -1
  156. package/src/components/search-field/README.md +3 -1
  157. package/src/components/search-field/search-field.scss +9 -12
  158. package/src/components/skip-link/README.md +2 -0
  159. package/src/components/skip-link/skip-link.scss +3 -8
  160. package/src/components/spotlight/README.md +2 -0
  161. package/src/components/spotlight/spotlight.scss +1 -1
  162. package/src/components/switch/README.md +3 -1
  163. package/src/components/switch/switch.scss +11 -10
  164. package/src/components/table/README.md +3 -1
  165. package/src/components/table/table.scss +3 -3
  166. package/src/components/tabs/README.md +32 -0
  167. package/src/components/tabs/tabs.scss +41 -0
  168. package/src/components/text-area/README.md +17 -0
  169. package/src/components/text-area/text-area.scss +70 -0
  170. package/src/components/text-input/README.md +2 -0
  171. package/src/components/text-input/text-input.scss +5 -10
  172. package/src/components/top-task-link/README.md +5 -3
  173. package/src/components/top-task-link/top-task-link.scss +7 -14
  174. package/src/components/unordered-list/README.md +2 -0
  175. package/src/components/unordered-list/unordered-list.scss +8 -9
  176. package/src/components/visually-hidden/README.md +2 -0
  177. package/src/components/visually-hidden/visually-hidden.scss +1 -1
@@ -1,49 +1,94 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
- @import "../../../node_modules/@utrecht/components/button/css";
7
-
8
6
  @mixin reset {
9
7
  -webkit-text-size-adjust: 100%;
10
8
  }
11
9
 
12
10
  .amsterdam-button {
13
- font-size: var(--amsterdam-button-spacious-font-size);
14
- line-height: var(--amsterdam-button-spacious-line-height);
11
+ border: none;
12
+ cursor: var(--amsterdam-button-cursor);
13
+ display: inline-flex;
14
+ font-family: var(--amsterdam-button-font-family);
15
+ font-size: var(--amsterdam-button-font-size);
16
+ gap: var(--amsterdam-button-gap);
17
+ line-height: var(--amsterdam-button-line-height);
18
+ outline-offset: var(--amsterdam-button-outline-offset);
19
+ padding-block: var(--amsterdam-button-padding-block);
20
+ padding-inline: var(--amsterdam-button-padding-inline);
21
+ touch-action: manipulation;
22
+
23
+ &:disabled,
24
+ &[aria-disabled="true"] {
25
+ cursor: var(--amsterdam-button-disabled-cursor);
26
+ }
15
27
 
16
28
  @include reset;
29
+ }
17
30
 
18
- .amsterdam-theme--compact & {
19
- font-size: var(--amsterdam-breadcrumb-compact-font-size);
20
- line-height: var(--amsterdam-breadcrumb-compact-line-height);
31
+ @mixin amsterdam-button-forced-color-mode {
32
+ @media screen and (-ms-high-contrast: active), screen and (forced-colors: active) {
33
+ border: 2px solid ButtonBorder; // add border because forced colors changes box-shadow to none
21
34
  }
22
35
  }
23
36
 
37
+ .amsterdam-button--busy {
38
+ cursor: var(--amsterdam-button-busy-cursor);
39
+ }
40
+
41
+ .amsterdam-button--primary {
42
+ background-color: var(--amsterdam-button-primary-background-color);
43
+ box-shadow: var(--amsterdam-button-primary-box-shadow);
44
+ color: var(--amsterdam-button-primary-color);
45
+
46
+ &:disabled,
47
+ [aria-disabled="true"] {
48
+ background-color: var(--amsterdam-button-primary-disabled-background-color);
49
+ box-shadow: var(--amsterdam-button-primary-disabled-box-shadow);
50
+ }
51
+
52
+ &:hover:not(:disabled, [aria-disabled="true"]) {
53
+ background-color: var(--amsterdam-button-primary-hover-background-color);
54
+ box-shadow: var(--amsterdam-button-primary-hover-box-shadow);
55
+ }
56
+
57
+ @include amsterdam-button-forced-color-mode;
58
+ }
59
+
24
60
  .amsterdam-button--secondary {
61
+ background-color: var(--amsterdam-button-secondary-background-color);
25
62
  box-shadow: var(--amsterdam-button-secondary-box-shadow);
63
+ color: var(--amsterdam-button-secondary-color);
26
64
 
27
65
  &:disabled,
28
66
  [aria-disabled="true"] {
67
+ background-color: var(--amsterdam-button-secondary-disabled-background-color);
29
68
  box-shadow: var(--amsterdam-button-secondary-disabled-box-shadow);
69
+ color: var(--amsterdam-button-secondary-disabled-color);
30
70
  }
31
71
 
32
72
  &:hover:not(:disabled, [aria-disabled="true"]) {
33
73
  box-shadow: var(--amsterdam-button-secondary-hover-box-shadow);
74
+ color: var(--amsterdam-button-secondary-hover-color);
34
75
  }
35
- }
36
76
 
37
- .amsterdam-button--secondary:focus:not(:hover, [aria-disabled="true"]) {
38
- box-shadow: var(--amsterdam-button-secondary-focus-box-shadow);
77
+ @include amsterdam-button-forced-color-mode;
39
78
  }
40
79
 
41
80
  .amsterdam-button--tertiary {
81
+ background-color: var(--amsterdam-button-tertiary-background-color);
82
+ color: var(--amsterdam-button-tertiary-color);
83
+
84
+ &:disabled,
85
+ [aria-disabled="true"] {
86
+ background-color: var(--amsterdam-button-tertiary-disabled-background-color);
87
+ color: var(--amsterdam-button-tertiary-disabled-color);
88
+ }
89
+
42
90
  &:hover:not(:disabled, [aria-disabled="true"]) {
43
91
  box-shadow: var(--amsterdam-button-tertiary-hover-box-shadow);
92
+ color: var(--amsterdam-button-tertiary-hover-color);
44
93
  }
45
94
  }
46
-
47
- .amsterdam-button--tertiary:focus:not(:hover, [aria-disabled="true"]) {
48
- box-shadow: none;
49
- }
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Card
2
4
 
3
5
  Use a card on an overview page to link to an article page, such as a news article, a job vacancy, or a search result.
@@ -7,15 +9,15 @@ The link is mandatory.
7
9
  ## Guidelines
8
10
 
9
11
  - The title of a card is a link within a heading.
10
- The same guidelines as for regular [links](?path=/docs/react_navigation-link--docs) and [headings](?path=/docs/react_text-heading--docs) apply here.
12
+ The same guidelines as for regular [links](/docs/components-navigation-link--docs) and [headings](/docs/components-text-heading--docs) apply here.
11
13
  The link is active across the entire area of the card.
12
14
  - A card needs more content than just a title.
13
15
  Supplement this with textual and/or visual content.
14
16
  - Place the text in a regular paragraph.
15
17
  Only use the smallest text size for a tagline or date.
16
18
  - This component may not be the best option if the content does not represent a detailed page.
17
- For referencing a thematic page, use a [top task link](?path=/docs/react_navigation-top-task-link--docs).
18
- You can also use a [regular link](?path=/docs/react_navigation-link--docs).
19
+ For referencing a thematic page, use a [top task link](/docs/components-navigation-top-task-link--docs).
20
+ You can also use a [regular link](/docs/components-navigation-link--docs).
19
21
 
20
22
  ## Screen Readers
21
23
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
6
  .amsterdam-card {
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Checkbox
2
4
 
3
5
  Allows users to make a selection or agree to terms.
@@ -25,4 +27,4 @@ It is written in the first person when asking the user to agree to the terms and
25
27
 
26
28
  - [WCAG 1.3.5](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html): It is clear for both users and programmatically what the purpose of a form field is.
27
29
 
28
- Checkbox is an interactive element; therefore, [the general requirements and guidelines for interactive elements](https://amsterdam.github.io/design-system/?path=/docs/docs-designrichtlijnen-interactieve-elementen--docs) apply.
30
+ Checkbox is an interactive element; therefore, [the general requirements and guidelines for interactive elements](/docs/docs-design-guidelines-interactive-elements--docs) apply.
@@ -1,40 +1,35 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
+ @import "../../common/input-label-focus";
7
+ @import "../../common/hide-input";
8
+
6
9
  .amsterdam-checkbox__input {
7
- appearance: none;
8
- margin-block: 0;
9
- margin-inline: 0;
10
- opacity: 0%; /* to hide native input field in older iOS */
11
-
12
- &:focus-visible + label {
13
- outline: auto;
14
- outline-offset: var(--amsterdam-checkbox-outline-offset);
15
- }
10
+ @include hide-input;
11
+ @include input-label-focus;
16
12
  }
17
13
 
18
14
  .amsterdam-checkbox__checkmark {
19
15
  align-items: center;
20
16
  display: flex;
21
17
  flex-shrink: 0;
22
- height: calc(var(--amsterdam-checkbox-spacious-font-size) * var(--amsterdam-checkbox-spacious-line-height));
18
+ height: calc(var(--amsterdam-checkbox-font-size) * var(--amsterdam-checkbox-line-height));
23
19
  width: 1.5rem;
24
20
 
25
21
  &::after {
22
+ background-position: center;
23
+ background-repeat: no-repeat;
24
+ background-size: 1rem;
26
25
  border-color: var(--amsterdam-checkbox-checkmark-border-color);
27
26
  border-style: solid;
28
- border-width: 2px;
27
+ border-width: 0.125rem;
29
28
  box-sizing: border-box;
30
29
  content: "";
31
30
  height: 1.5rem;
32
31
  width: 100%;
33
32
  }
34
-
35
- .amsterdam-theme--compact & {
36
- height: calc(var(--amsterdam-checkbox-compact-font-size) * var(--amsterdam-checkbox-compact-line-height));
37
- }
38
33
  }
39
34
 
40
35
  @mixin reset {
@@ -46,10 +41,11 @@
46
41
  cursor: pointer;
47
42
  display: inline-flex;
48
43
  font-family: var(--amsterdam-checkbox-font-family);
49
- font-size: var(--amsterdam-checkbox-spacious-font-size);
50
- font-weight: 400;
44
+ font-size: var(--amsterdam-checkbox-font-size);
45
+ font-weight: var(--amsterdam-checkbox-font-weight);
51
46
  gap: 0.5rem;
52
- line-height: var(--amsterdam-checkbox-spacious-line-height);
47
+ line-height: var(--amsterdam-checkbox-line-height);
48
+ outline-offset: var(--amsterdam-checkbox-outline-offset);
53
49
 
54
50
  &:hover {
55
51
  color: var(--amsterdam-checkbox-hover-color);
@@ -59,15 +55,10 @@
59
55
 
60
56
  .amsterdam-checkbox__checkmark::after {
61
57
  border-color: var(--amsterdam-checkbox-checkmark-hover-border-color);
62
- border-width: 3px;
58
+ border-width: 0.1875rem;
63
59
  }
64
60
  }
65
61
 
66
- .amsterdam-theme--compact & {
67
- font-size: var(--amsterdam-checkbox-compact-font-size);
68
- line-height: var(--amsterdam-checkbox-compact-line-height);
69
- }
70
-
71
62
  @include reset;
72
63
  }
73
64
 
@@ -75,10 +66,7 @@
75
66
  .amsterdam-checkbox__input:checked {
76
67
  + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
77
68
  background-color: var(--amsterdam-checkbox-checkmark-checked-background-color);
78
- background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23ffffff%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M12.216%2027.016%200%2014.168l2.91-2.77%209.346%209.837L29.129%204%2032%206.8z%22%2F%3E%3C%2Fsvg%3E");
79
- background-position: center;
80
- background-repeat: no-repeat;
81
- background-size: 1rem;
69
+ background-image: var(--amsterdam-checkbox-checkmark-checked-background-image);
82
70
  border: none;
83
71
  }
84
72
  }
@@ -87,7 +75,7 @@
87
75
  .amsterdam-checkbox__input:indeterminate {
88
76
  + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
89
77
  background-color: var(--amsterdam-checkbox-checkmark-indeterminate-background-color);
90
- background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTMuNzE0aDMydjRIMHoiLz48L3N2Zz4=");
78
+ background-image: var(--amsterdam-checkbox-checkmark-indeterminate-background-image);
91
79
  background-position: center;
92
80
  background-repeat: no-repeat;
93
81
  background-size: 1rem;
@@ -111,7 +99,7 @@
111
99
 
112
100
  .amsterdam-checkbox__checkmark::after {
113
101
  border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
114
- border-width: 2px;
102
+ border-width: 0.125rem;
115
103
  }
116
104
  }
117
105
  }
@@ -0,0 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Column
4
+
5
+ Stacks its children vertically and adds a vertical gap between them.
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../common/size";
7
+
8
+ .amsterdam-column {
9
+ display: grid;
10
+ }
11
+
12
+ @each $size, $label in $amsterdam-sizes {
13
+ .amsterdam-column--#{$label} {
14
+ gap: var(--amsterdam-column-gap-#{$size});
15
+ }
16
+ }
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Dialog
2
4
 
3
5
  A Dialog allows the user to focus on one task or a piece of information by popping up and blocking the page content until the modal task is completed or until the user dismisses the action.
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
6
  @import "../../common/breakpoint";
7
+ @import "../../common/hyphenation";
7
8
 
8
9
  .amsterdam-dialog {
9
10
  background-color: var(--amsterdam-dialog-background-color);
@@ -25,6 +26,8 @@
25
26
  gap: var(--amsterdam-dialog-form-gap);
26
27
  grid-template-rows: auto 1fr auto;
27
28
  max-block-size: var(--amsterdam-dialog-form-max-block-size);
29
+
30
+ // TODO Decide on these widths
28
31
  padding-block: var(--amsterdam-dialog-form-padding-block);
29
32
  padding-inline: var(--amsterdam-dialog-form-padding-inline);
30
33
  }
@@ -35,7 +38,6 @@
35
38
  max-block-size: 100%; /* safari */
36
39
  overflow-y: auto;
37
40
  overscroll-behavior-y: contain;
38
- padding-inline-end: var(--amsterdam-dialog-article-padding-inline-end);
39
41
  }
40
42
 
41
43
  .amsterdam-dialog__header {
@@ -52,15 +54,11 @@
52
54
  color: var(--amsterdam-dialog-title-color);
53
55
  flex: auto;
54
56
  font-family: var(--amsterdam-dialog-title-font-family);
55
- font-size: var(--amsterdam-dialog-title-spacious-font-size);
57
+ font-size: var(--amsterdam-dialog-title-font-size);
56
58
  font-weight: var(--amsterdam-dialog-title-font-weight);
57
- line-height: var(--amsterdam-dialog-title-spacious-line-height);
58
-
59
- .amsterdam-theme--compact & {
60
- font-size: var(--amsterdam-dialog-title-compact-font-size);
61
- line-height: var(--amsterdam-dialog-title-compact-line-height);
62
- }
59
+ line-height: var(--amsterdam-dialog-title-line-height);
63
60
 
61
+ @include hyphenation;
64
62
  @include reset;
65
63
  }
66
64
 
@@ -0,0 +1,18 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Fieldset
4
+
5
+ A component to group related form inputs.
6
+
7
+ ## Guidelines
8
+
9
+ - Use Fieldset when you need to show a relationship between multiple form inputs. For example, you may need to group a set of text inputs into a single fieldset when asking for an address.
10
+ - When grouping radio inputs, use `role="radiogroup"` on Fieldset to have this grouping explicitly announced as a radio group. Fieldset has a default role of `group`.
11
+
12
+ ## Relevant WCAG Requirements
13
+
14
+ - [WCAG 1.3.5](https://www.w3.org/WAI/WCAG22/Understanding/identify-input-purpose.html): Fieldset labels the purpose of a group of inputs.
15
+
16
+ ## References
17
+
18
+ - [Providing a description for groups of form controls using fieldset and legend elements](https://www.w3.org/WAI/WCAG22/Techniques/html/H71)
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../common/hyphenation";
7
+
8
+ @mixin reset {
9
+ border: none;
10
+ margin-inline: 0;
11
+ padding-block: 0;
12
+ padding-inline: 0;
13
+ }
14
+
15
+ .amsterdam-fieldset {
16
+ @include reset;
17
+ }
18
+
19
+ @mixin legend-reset {
20
+ padding-inline: 0;
21
+ -webkit-text-size-adjust: 100%;
22
+ }
23
+
24
+ .amsterdam-fieldset__legend {
25
+ color: var(--amsterdam-fieldset-legend-color);
26
+ font-family: var(--amsterdam-fieldset-legend-font-family);
27
+ font-size: var(--amsterdam-fieldset-legend-font-size);
28
+ font-weight: var(--amsterdam-fieldset-legend-font-weight);
29
+ line-height: var(--amsterdam-fieldset-legend-line-height);
30
+ margin-block-end: 1rem; /* Because of a bug in Chrome we can’t use display grid or flex for this gap */
31
+
32
+ @include hyphenation;
33
+ @include legend-reset;
34
+ }
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Footer
2
4
 
3
5
  The footer is the closing section on every web page.
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Form Label
2
4
 
3
5
  Describes a form control.
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
+ @import "../../common/hyphenation";
7
+
6
8
  @mixin reset {
7
9
  -webkit-text-size-adjust: 100%;
8
10
  }
@@ -10,14 +12,10 @@
10
12
  .amsterdam-form-label {
11
13
  color: var(--amsterdam-form-label-color);
12
14
  font-family: var(--amsterdam-form-label-font-family);
13
- font-size: var(--amsterdam-form-label-spacious-font-size);
15
+ font-size: var(--amsterdam-form-label-font-size);
14
16
  font-weight: var(--amsterdam-form-label-font-weight);
15
- line-height: var(--amsterdam-form-label-spacious-line-height);
17
+ line-height: var(--amsterdam-form-label-line-height);
16
18
 
19
+ @include hyphenation;
17
20
  @include reset;
18
-
19
- .amsterdam-theme--compact & {
20
- font-size: var(--amsterdam-form-label-compact-font-size);
21
- line-height: var(--amsterdam-form-label-compact-line-height);
22
- }
23
21
  }
@@ -0,0 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Gap
4
+
5
+ Use these utility classes to add consistent white space between a set of elements.
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../common/size";
7
+
8
+ [class|="amsterdam-gap-"] {
9
+ display: grid !important;
10
+ }
11
+
12
+ @each $size in map-keys($amsterdam-sizes) {
13
+ .amsterdam-gap--#{$size} {
14
+ gap: var(--amsterdam-gap-#{$size}) !important;
15
+ }
16
+ }
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Grid
2
4
 
3
5
  Divides the screen into columns to align the elements of a page.
@@ -5,9 +7,9 @@ Divides the screen into columns to align the elements of a page.
5
7
  ## Usage
6
8
 
7
9
  Every page should use the grid as the foundation for its layout.
8
- It is placed directly within the [Screen](?path=/docs/layout-screen--docs).
10
+ It is placed directly within the [Screen](/docs/components-layout-screen--docs).
9
11
 
10
- A [Footer](?path=/docs/react_containers-footer--docs) and a [Spotlight](?path=/docs/react_containers-spotlight--docs) are slightly wider than the grid.
12
+ A [Footer](/docs/components-containers-footer--docs) and a [Spotlight](/docs/components-containers-spotlight--docs) are slightly wider than the grid.
11
13
  You close one instance of the grid before these components.
12
14
  Inside and optionally after them, you start a new one.
13
15
  Multiple instances of the grid component are possible on a page, but the columns of all grids must align precisely.
@@ -17,4 +19,4 @@ A cell often spans multiple columns of the grid.
17
19
 
18
20
  ## Design
19
21
 
20
- The [design choices](?path=/docs/docs-designrichtlijnen-grid--docs) are described in the design guidelines.
22
+ The [design choices](/docs/docs-design-guidelines-grid--docs) are described in the design guidelines.
@@ -1,18 +1,16 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
6
  @import "../../common/breakpoint";
7
7
 
8
8
  .amsterdam-grid {
9
- --amsterdam-grid-gap: var(--amsterdam-grid-spacious-gap);
10
- --amsterdam-grid-padding-inline: var(--amsterdam-grid-spacious-padding-inline);
11
-
9
+ column-gap: var(--amsterdam-grid-column-gap);
12
10
  display: grid;
13
- gap: var(--amsterdam-grid-gap);
14
11
  grid-template-columns: repeat(var(--amsterdam-grid-column-count), 1fr);
15
12
  padding-inline: var(--amsterdam-grid-padding-inline);
13
+ row-gap: var(--amsterdam-grid-row-gap-md);
16
14
 
17
15
  @media screen and (min-width: $amsterdam-breakpoint-medium) {
18
16
  grid-template-columns: repeat(var(--amsterdam-grid-medium-column-count), 1fr);
@@ -23,57 +21,52 @@
23
21
  }
24
22
  }
25
23
 
26
- .amsterdam-grid--compact {
27
- --amsterdam-grid-gap: var(--amsterdam-grid-compact-gap);
28
- --amsterdam-grid-padding-inline: var(--amsterdam-grid-compact-padding-inline);
29
- }
30
-
31
24
  .amsterdam-grid--gap-vertical--none {
32
25
  row-gap: initial;
33
26
  }
34
27
 
35
28
  .amsterdam-grid--gap-vertical--small {
36
- row-gap: calc(var(--amsterdam-grid-gap) / 2);
29
+ row-gap: var(--amsterdam-grid-row-gap-sm);
37
30
  }
38
31
 
39
32
  .amsterdam-grid--gap-vertical--large {
40
- row-gap: calc(var(--amsterdam-grid-gap) * 2);
33
+ row-gap: var(--amsterdam-grid-row-gap-lg);
41
34
  }
42
35
 
43
36
  .amsterdam-grid--padding-bottom--small {
44
- padding-block-end: calc(var(--amsterdam-grid-gap) / 2);
37
+ padding-block-end: var(--amsterdam-grid-padding-block-sm);
45
38
  }
46
39
 
47
40
  .amsterdam-grid--padding-bottom--medium {
48
- padding-block-end: var(--amsterdam-grid-gap);
41
+ padding-block-end: var(--amsterdam-grid-padding-block-md);
49
42
  }
50
43
 
51
44
  .amsterdam-grid--padding-bottom--large {
52
- padding-block-end: calc(var(--amsterdam-grid-gap) * 2);
45
+ padding-block-end: var(--amsterdam-grid-padding-block-lg);
53
46
  }
54
47
 
55
48
  .amsterdam-grid--padding-top--small {
56
- padding-block-start: calc(var(--amsterdam-grid-gap) / 2);
49
+ padding-block-start: var(--amsterdam-grid-padding-block-sm);
57
50
  }
58
51
 
59
52
  .amsterdam-grid--padding-top--medium {
60
- padding-block-start: var(--amsterdam-grid-gap);
53
+ padding-block-start: var(--amsterdam-grid-padding-block-md);
61
54
  }
62
55
 
63
56
  .amsterdam-grid--padding-top--large {
64
- padding-block-start: calc(var(--amsterdam-grid-gap) * 2);
57
+ padding-block-start: var(--amsterdam-grid-padding-block-lg);
65
58
  }
66
59
 
67
60
  .amsterdam-grid--padding-vertical--small {
68
- padding-block: calc(var(--amsterdam-grid-gap) / 2);
61
+ padding-block: var(--amsterdam-grid-padding-block-sm);
69
62
  }
70
63
 
71
64
  .amsterdam-grid--padding-vertical--medium {
72
- padding-block: var(--amsterdam-grid-gap);
65
+ padding-block: var(--amsterdam-grid-padding-block-md);
73
66
  }
74
67
 
75
68
  .amsterdam-grid--padding-vertical--large {
76
- padding-block: calc(var(--amsterdam-grid-gap) * 2);
69
+ padding-block: var(--amsterdam-grid-padding-block-lg);
77
70
  }
78
71
 
79
72
  .amsterdam-grid__cell--span-all {
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Header
2
4
 
3
5
  Arranges the City’s logo, the title of the website, and a page menu.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license EUPL-1.2+
3
- * Copyright (c) 2023 Gemeente Amsterdam
3
+ * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
6
  @import "../../common/breakpoint";
@@ -9,7 +9,7 @@
9
9
  align-items: center;
10
10
  display: flex;
11
11
  flex-wrap: wrap;
12
- padding-block: 1rem;
12
+ padding-block: var(--amsterdam-header-padding-block);
13
13
  row-gap: 1.5rem;
14
14
 
15
15
  @media screen and (min-width: $amsterdam-breakpoint-wide) {
@@ -18,9 +18,9 @@
18
18
  }
19
19
  }
20
20
 
21
- .amsterdam-header__logo {
21
+ .amsterdam-header__logo-link {
22
22
  flex: none;
23
- outline-offset: var(--amsterdam-link-outline-offset);
23
+ outline-offset: var(--amsterdam-header-logo-link-outline-offset);
24
24
  }
25
25
 
26
26
  .amsterdam-header__links {
@@ -38,7 +38,7 @@
38
38
 
39
39
  .amsterdam-header__menu {
40
40
  flex: 1;
41
- padding-inline-start: var(--amsterdam-page-menu-column-gap);
41
+ padding-inline-start: var(--amsterdam-page-menu-column-gap); // TODO Don’t use tokens of another component
42
42
  text-align: end;
43
43
 
44
44
  @media screen and (min-width: $amsterdam-breakpoint-wide) {
@@ -75,9 +75,9 @@
75
75
  border: 0;
76
76
  color: var(--amsterdam-page-menu-item-color);
77
77
  font-family: var(--amsterdam-page-menu-item-font-family);
78
- font-size: var(--amsterdam-page-menu-item-spacious-font-size);
78
+ font-size: var(--amsterdam-page-menu-item-font-size);
79
79
  font-weight: var(--amsterdam-page-menu-item-font-weight);
80
- line-height: var(--amsterdam-page-menu-item-spacious-line-height);
80
+ line-height: var(--amsterdam-page-menu-item-line-height);
81
81
  margin-block: 0;
82
82
  padding-inline: 0 30px;
83
83
  text-align: center;
@@ -1,3 +1,5 @@
1
+ <!-- @license CC0-1.0 -->
2
+
1
3
  # Heading
2
4
 
3
5
  A heading conveys information about the content below it.