@amsterdam/design-system-css 0.1.4 → 0.1.6

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 (128) hide show
  1. package/README.md +1 -1
  2. package/dist/accordion/accordion.css +1 -69
  3. package/dist/accordion/accordion.css.map +1 -1
  4. package/dist/aspect-ratio/aspect-ratio.css +30 -0
  5. package/dist/aspect-ratio/aspect-ratio.css.map +1 -0
  6. package/dist/blockquote/blockquote.css +1 -0
  7. package/dist/blockquote/blockquote.css.map +1 -0
  8. package/dist/breadcrumb/breadcrumb.css +1 -0
  9. package/dist/breadcrumb/breadcrumb.css.map +1 -0
  10. package/dist/button/button.css +1 -706
  11. package/dist/button/button.css.map +1 -1
  12. package/dist/buttons/button/button.css +729 -0
  13. package/dist/buttons/button/button.css.map +1 -0
  14. package/dist/card/card.css +56 -0
  15. package/dist/card/card.css.map +1 -0
  16. package/dist/checkbox/checkbox.css +1 -0
  17. package/dist/checkbox/checkbox.css.map +1 -0
  18. package/dist/containers/accordion/accordion.css +69 -0
  19. package/dist/containers/accordion/accordion.css.map +1 -0
  20. package/dist/containers/footer/footer.css +35 -0
  21. package/dist/containers/footer/footer.css.map +1 -0
  22. package/dist/containers/visually-hidden/visually-hidden.css +18 -0
  23. package/dist/containers/visually-hidden/visually-hidden.css.map +1 -0
  24. package/dist/footer/footer.css +1 -0
  25. package/dist/footer/footer.css.map +1 -0
  26. package/dist/form-label/form-label.css +1 -26
  27. package/dist/form-label/form-label.css.map +1 -1
  28. package/dist/forms/checkbox/checkbox.css +170 -0
  29. package/dist/forms/checkbox/checkbox.css.map +1 -0
  30. package/dist/forms/form-label/form-label.css +26 -0
  31. package/dist/forms/form-label/form-label.css.map +1 -0
  32. package/dist/grid/grid-cell.css +1 -0
  33. package/dist/grid/grid-cell.css.map +1 -0
  34. package/dist/grid/page-grid.css +1 -0
  35. package/dist/grid/page-grid.css.map +1 -0
  36. package/dist/heading/heading.css +1 -64
  37. package/dist/heading/heading.css.map +1 -1
  38. package/dist/hero/hero.css +1 -0
  39. package/dist/hero/hero.css.map +1 -0
  40. package/dist/icon/icon.css +1 -122
  41. package/dist/icon/icon.css.map +1 -1
  42. package/dist/index.css +1 -0
  43. package/dist/index.css.map +1 -0
  44. package/dist/layout/grid-cell/grid-cell.css +88 -0
  45. package/dist/layout/grid-cell/grid-cell.css.map +1 -0
  46. package/dist/layout/page-grid/page-grid.css +26 -0
  47. package/dist/layout/page-grid/page-grid.css.map +1 -0
  48. package/dist/link/link.css +1 -97
  49. package/dist/link/link.css.map +1 -1
  50. package/dist/media/icon/icon.css +122 -0
  51. package/dist/media/icon/icon.css.map +1 -0
  52. package/dist/navigation/breadcrumb/breadcrumb.css +67 -0
  53. package/dist/navigation/breadcrumb/breadcrumb.css.map +1 -0
  54. package/dist/navigation/link/link.css +111 -0
  55. package/dist/navigation/link/link.css.map +1 -0
  56. package/dist/navigation/page-menu/page-menu.css +83 -0
  57. package/dist/navigation/page-menu/page-menu.css.map +1 -0
  58. package/dist/navigation/top-task-link/top-task-link.css +59 -0
  59. package/dist/navigation/top-task-link/top-task-link.css.map +1 -0
  60. package/dist/ordered-list/ordered-list.css +1 -0
  61. package/dist/ordered-list/ordered-list.css.map +1 -0
  62. package/dist/page-heading/page-heading.css +1 -0
  63. package/dist/page-heading/page-heading.css.map +1 -0
  64. package/dist/page-menu/page-menu.css +1 -0
  65. package/dist/page-menu/page-menu.css.map +1 -0
  66. package/dist/paragraph/paragraph.css +1 -49
  67. package/dist/paragraph/paragraph.css.map +1 -1
  68. package/dist/switch/switch.css +59 -0
  69. package/dist/switch/switch.css.map +1 -0
  70. package/dist/testula/testula.css +9 -0
  71. package/dist/testula/testula.css.map +1 -0
  72. package/dist/text/blockquote/blockquote.css +43 -0
  73. package/dist/text/blockquote/blockquote.css.map +1 -0
  74. package/dist/text/heading/heading.css +67 -0
  75. package/dist/text/heading/heading.css.map +1 -0
  76. package/dist/text/ordered-list/ordered-list.css +54 -0
  77. package/dist/text/ordered-list/ordered-list.css.map +1 -0
  78. package/dist/text/page-heading/page-heading.css +34 -0
  79. package/dist/text/page-heading/page-heading.css.map +1 -0
  80. package/dist/text/paragraph/paragraph.css +53 -0
  81. package/dist/text/paragraph/paragraph.css.map +1 -0
  82. package/dist/text/unordered-list/unordered-list.css +54 -0
  83. package/dist/text/unordered-list/unordered-list.css.map +1 -0
  84. package/dist/top-task-link/top-task-link.css +1 -0
  85. package/dist/top-task-link/top-task-link.css.map +1 -0
  86. package/dist/unordered-list/unordered-list.css +1 -47
  87. package/dist/unordered-list/unordered-list.css.map +1 -1
  88. package/dist/visually-hidden/visually-hidden.css +1 -0
  89. package/dist/visually-hidden/visually-hidden.css.map +1 -0
  90. package/package.json +7 -6
  91. package/src/accordion/README.md +25 -2
  92. package/src/accordion/accordion.scss +2 -2
  93. package/src/blockquote/README.md +14 -0
  94. package/src/blockquote/blockquote.scss +41 -0
  95. package/src/breadcrumb/README.md +15 -0
  96. package/src/breadcrumb/breadcrumb.scss +68 -0
  97. package/src/button/button.scss +36 -4
  98. package/src/checkbox/README.md +27 -0
  99. package/src/checkbox/checkbox-css.md +3 -0
  100. package/src/checkbox/checkbox.scss +225 -0
  101. package/src/footer/README.md +11 -0
  102. package/src/footer/footer-css.md +11 -0
  103. package/src/footer/footer.scss +29 -0
  104. package/src/form-label/form-label.scss +2 -2
  105. package/src/grid/README.md +11 -0
  106. package/src/grid/grid-cell.scss +18 -0
  107. package/src/grid/page-grid.scss +19 -0
  108. package/src/heading/heading.scss +18 -15
  109. package/src/icon/icon.scss +10 -10
  110. package/src/index.scss +19 -0
  111. package/src/link/README.md +28 -12
  112. package/src/link/link.scss +61 -36
  113. package/src/ordered-list/README.md +7 -0
  114. package/src/ordered-list/ordered-list.scss +53 -0
  115. package/src/page-heading/README.md +16 -0
  116. package/src/page-heading/page-heading.scss +31 -0
  117. package/src/page-menu/README.md +15 -0
  118. package/src/page-menu/page-menu.scss +79 -0
  119. package/src/paragraph/paragraph.scss +12 -8
  120. package/src/top-task-link/README.md +15 -0
  121. package/src/top-task-link/top-task-link.scss +55 -0
  122. package/src/unordered-list/README.md +5 -13
  123. package/src/unordered-list/unordered-list.scss +26 -17
  124. package/src/visually-hidden/README.md +5 -0
  125. package/src/visually-hidden/visually-hidden.scss +17 -0
  126. package/dist/list/list.css +0 -12
  127. package/dist/list/list.css.map +0 -1
  128. package/src/list/list.scss +0 -16
@@ -0,0 +1,225 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../utils/breakpoint";
7
+
8
+ .amsterdam-checkbox__input {
9
+ appearance: none;
10
+ margin-block: 0;
11
+ margin-inline: 0;
12
+ opacity: 0%; /* to hide native input field in older iOS */
13
+
14
+ &:focus-visible + label {
15
+ outline: auto;
16
+ outline-offset: var(--amsterdam-checkbox-outline-offset);
17
+ }
18
+ }
19
+
20
+ .amsterdam-checkbox__checkmark {
21
+ align-items: center;
22
+ display: flex;
23
+ flex-shrink: 0;
24
+ height: calc(var(--amsterdam-checkbox-checkmark-narrow-size) * var(--amsterdam-checkbox-checkmark-multiplier));
25
+ width: 1.5rem;
26
+
27
+ &::after {
28
+ border-color: var(--amsterdam-checkbox-checkmark-border-color);
29
+ border-style: solid;
30
+ border-width: 2px;
31
+ box-sizing: border-box;
32
+ content: "";
33
+ height: 1.5rem;
34
+ width: 100%;
35
+ }
36
+
37
+ @media screen and (width > $amsterdam-breakpoint) {
38
+ height: calc(var(--amsterdam-checkbox-checkmark-wide-size) * var(--amsterdam-checkbox-checkmark-multiplier));
39
+ }
40
+ }
41
+
42
+ .amsterdam-checkbox__label {
43
+ color: var(--amsterdam-checkbox-color);
44
+ cursor: pointer;
45
+ display: inline-flex;
46
+ font-family: var(--amsterdam-checkbox-font-family);
47
+ font-size: var(--amsterdam-checkbox-narrow-font-size);
48
+ font-weight: 400;
49
+ gap: 0.5rem;
50
+ line-height: var(--amsterdam-checkbox-line-height);
51
+
52
+ &:hover {
53
+ color: var(--amsterdam-checkbox-hover-color);
54
+ text-decoration: underline;
55
+ text-decoration-thickness: 2px;
56
+ text-underline-offset: 3px;
57
+
58
+ .amsterdam-checkbox__checkmark::after {
59
+ border-color: var(--amsterdam-checkbox-checkmark-hover-border-color);
60
+ border-width: 3px;
61
+ }
62
+ }
63
+
64
+ @media screen and (width > $amsterdam-breakpoint) {
65
+ font-size: var(--amsterdam-checkbox-wide-font-size);
66
+ }
67
+ }
68
+
69
+ // Default checked
70
+ .amsterdam-checkbox__input:checked {
71
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
72
+ background-color: var(--amsterdam-checkbox-checkmark-checked-background-color);
73
+ 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");
74
+ background-position: center;
75
+ background-repeat: no-repeat;
76
+ background-size: 1rem;
77
+ border: none;
78
+ }
79
+ }
80
+
81
+ // Default indeterminate
82
+ .amsterdam-checkbox__input:indeterminate {
83
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
84
+ background-color: var(--amsterdam-checkbox-checkmark-indeterminate-background-color);
85
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTMuNzE0aDMydjRIMHoiLz48L3N2Zz4=");
86
+ background-position: center;
87
+ background-repeat: no-repeat;
88
+ background-size: 1rem;
89
+ border: none;
90
+ }
91
+ }
92
+
93
+ // Invalid unchecked
94
+ .amsterdam-checkbox__input:invalid,
95
+ .amsterdam-checkbox__input[aria-invalid="true"] {
96
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
97
+ border-color: var(--amsterdam-checkbox-checkmark-invalid-border-color);
98
+ }
99
+ }
100
+
101
+ // Disabled unchecked
102
+ .amsterdam-checkbox__input:disabled {
103
+ + .amsterdam-checkbox__label {
104
+ color: var(--amsterdam-checkbox-disabled-color);
105
+ cursor: not-allowed;
106
+
107
+ .amsterdam-checkbox__checkmark::after {
108
+ border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
109
+ border-width: 2px;
110
+ }
111
+ }
112
+ }
113
+
114
+ // Invalid checked
115
+ .amsterdam-checkbox__input:invalid:checked,
116
+ .amsterdam-checkbox__input[aria-invalid="true"]:checked {
117
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
118
+ background-color: var(--amsterdam-checkbox-checkmark-invalid-checked-background-color);
119
+ }
120
+ }
121
+
122
+ // Invalid indeterminate
123
+ .amsterdam-checkbox__input:invalid:indeterminate,
124
+ .amsterdam-checkbox__input[aria-invalid="true"]:indeterminate {
125
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
126
+ background-color: var(--amsterdam-checkbox-checkmark-invalid-indeterminate-background-color);
127
+ }
128
+ }
129
+
130
+ // Disabled label
131
+ .amsterdam-checkbox__input:disabled + .amsterdam-checkbox__label:hover {
132
+ text-decoration: none;
133
+ }
134
+
135
+ // Disabled checked
136
+ .amsterdam-checkbox__input:disabled:checked {
137
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
138
+ background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-background-color);
139
+ }
140
+ }
141
+
142
+ // Disabled indeterminate
143
+ .amsterdam-checkbox__input:disabled:indeterminate {
144
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
145
+ background-color: var(--amsterdam-checkbox-checkmark-disabled-indeterminate-background-color);
146
+ }
147
+ }
148
+
149
+ // Disabled invalid unchecked
150
+ .amsterdam-checkbox__input:invalid:disabled,
151
+ .amsterdam-checkbox__input[aria-invalid="true"]:disabled {
152
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
153
+ // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
154
+ border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
155
+ }
156
+ }
157
+
158
+ // HOVER STATES
159
+
160
+ // Invalid unchecked hover
161
+ :is(.amsterdam-checkbox__input:invalid, .amsterdam-checkbox__input[aria-invalid="true"])
162
+ + .amsterdam-checkbox__label:hover
163
+ .amsterdam-checkbox__checkmark::after {
164
+ // TODO: this should be the (currently non-existent) dark red hover color
165
+ border-color: var(--amsterdam-checkbox-checkmark-invalid-hover-border-color);
166
+ }
167
+
168
+ // Default checked hover
169
+ .amsterdam-checkbox__input:checked + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
170
+ background-color: var(--amsterdam-checkbox-checkmark-checked-hover-background-color);
171
+ }
172
+
173
+ // Default indeterminate hover
174
+ .amsterdam-checkbox__input:indeterminate + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
175
+ background-color: var(--amsterdam-checkbox-checkmark-indeterminate-hover-background-color);
176
+ }
177
+
178
+ // Invalid checked hover
179
+ :is(.amsterdam-checkbox__input:invalid:checked, .amsterdam-checkbox__input[aria-invalid="true"]:checked)
180
+ + .amsterdam-checkbox__label:hover
181
+ .amsterdam-checkbox__checkmark::after {
182
+ // TODO: this should be the (currently non-existent) dark red hover color
183
+ background-color: var(--amsterdam-checkbox-checkmark-invalid-checked-hover-background-color);
184
+ }
185
+
186
+ // Invalid indeterminate hover
187
+ :is(.amsterdam-checkbox__input:invalid:indeterminate, .amsterdam-checkbox__input[aria-invalid="true"]:indeterminate)
188
+ + .amsterdam-checkbox__label:hover
189
+ .amsterdam-checkbox__checkmark::after {
190
+ // TODO: this should be the (currently non-existent) dark red hover color
191
+ background-color: var(--amsterdam-checkbox-checkmark-invalid-indeterminate-hover-background-color);
192
+ }
193
+
194
+ // Disabled checked hover
195
+ .amsterdam-checkbox__input:disabled:checked + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
196
+ background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-hover-background-color);
197
+ }
198
+
199
+ // Disabled indeterminate hover
200
+ .amsterdam-checkbox__input:disabled:indeterminate
201
+ + .amsterdam-checkbox__label:hover
202
+ .amsterdam-checkbox__checkmark::after {
203
+ background-color: var(--amsterdam-checkbox-checkmark-disabled-indeterminate-hover-background-color);
204
+ }
205
+
206
+ // Disabled invalid unchecked hover
207
+ :is(.amsterdam-checkbox__input:invalid:disabled, .amsterdam-checkbox__input[aria-invalid="true"]:disabled)
208
+ + .amsterdam-checkbox__label:hover
209
+ .amsterdam-checkbox__checkmark::after {
210
+ // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
211
+ border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
212
+ }
213
+
214
+ // DISABLED INVALID STATES
215
+
216
+ // Disabled invalid checked & indeterminate
217
+ .amsterdam-checkbox__input:invalid:disabled:checked,
218
+ .amsterdam-checkbox__input:invalid:disabled:indeterminate,
219
+ .amsterdam-checkbox__input[aria-invalid="true"]:disabled:checked,
220
+ .amsterdam-checkbox__input[aria-invalid="true"]:disabled:indeterminate {
221
+ + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
222
+ // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
223
+ background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-background-color);
224
+ }
225
+ }
@@ -0,0 +1,11 @@
1
+ # Footer
2
+
3
+ De footer (in het Nederlands: voettekst) sluit iedere webpagina af. De inhoud is service-informatie. Een gedeelte is voorgeschreven en een deel wordt ingevuld vanuit de doelstelling van de website.
4
+
5
+ ## Richtlijnen
6
+
7
+ - De voettekst is verplicht, er staat er 1 op elke pagina.
8
+ - De eerste kolom richt zich op contactinformatie. De informatie is zo specifiek mogelijk gebonden aan de betreffende website of pagina (bijvoorbeeld een chatmogelijkheid indien aanwezig).
9
+ - De tweede kolom bevat links naar relevante (online) sites of bronnen.
10
+ - De derde kolom verwijst naar nieuwsbrieven, socials enz.
11
+ - Het laatste deel van de voettekst is bedoeld voor koppelingen naar privacy, cookieverklaring, uitleg over de website e.d. Het is niet bedoeld voor koppelingen naar bijvoorbeeld contactinformatie.
@@ -0,0 +1,11 @@
1
+ # CSS Footer
2
+
3
+ Gebruik het `footer` element als buitenste container van de footer.
4
+
5
+ De voettekst is blauw met witte tekst en iconen, met onderaan een witte balk. Op desktop heeft het blauwe deel van de voettekst 3 kolommen. Op mobiel heeft het blauwe deel van de voettekst 1 kolom. Kolom 1, 2 en 3 van de desktop staan dan onder elkaar.
6
+
7
+ De functionaliteit op desktop en mobiel is gelijk.
8
+
9
+ De hoogte wordt bepaald door de content. De breedte van de voettekst op desktop is niet schermvullend.
10
+
11
+ De voettekst wordt nooit ingeklapt. Ook niet in mobiele weergave.
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../utils/breakpoint";
7
+
8
+ .amsterdam-footer__top {
9
+ background-color: var(--amsterdam-footer-top-background-color);
10
+ padding-block: 2.5rem;
11
+ padding-inline: 2rem; /* TODO: For now I've set a padding here, this should eventually be handled by PageGrid */
12
+ }
13
+
14
+ @media screen and (width > $amsterdam-breakpoint) {
15
+ .amsterdam-footer__top {
16
+ grid-template-columns: repeat(var(--amsterdam-page-grid-column-count-wide), 1fr);
17
+ }
18
+ }
19
+
20
+ .amsterdam-footer__column {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: 2.5rem;
24
+ }
25
+
26
+ .amsterdam-footer__bottom {
27
+ padding-block: 0.5rem;
28
+ padding-inline: 2rem; /* TODO: For now I've set a padding here, this should eventually be handled by PageGrid */
29
+ }
@@ -8,11 +8,11 @@
8
8
  .amsterdam-form-label {
9
9
  color: var(--amsterdam-form-label-color);
10
10
  font-family: var(--amsterdam-form-label-font-family);
11
- font-size: var(--amsterdam-form-label-font-size-narrow);
11
+ font-size: var(--amsterdam-form-label-narrow-font-size);
12
12
  font-weight: var(--amsterdam-form-label-font-weight);
13
13
  line-height: var(--amsterdam-form-label-line-height);
14
14
 
15
15
  @media screen and (width > $amsterdam-breakpoint) {
16
- font-size: var(--amsterdam-form-label-font-size-wide);
16
+ font-size: var(--amsterdam-form-label-wide-font-size);
17
17
  }
18
18
  }
@@ -0,0 +1,11 @@
1
+ # Page grid
2
+
3
+ Onder alle pagina’s en schermen ligt hetzelfde grid. Het grid is responsive, dus de precieze breedte van een kolom is afhankelijk van de schermbreedte.
4
+
5
+ De maximale breedte van het grid is 1440 pixels. In een later stadium bieden we een grid van 1920 aan.
6
+
7
+ Op schermen tot 854 pixels breed bestaat het grid uit 4 kolommen, op bredere schermen worden dat er 12. Het grid staat horizontaal gecentreerd op de pagina.
8
+
9
+ De witruimte tussen de kolommen is ook flexibel: die groeit lineair van 8 pixels bij een breedte van 320 naar 24 pixels bij een breedte van 1440.
10
+
11
+ Pagina-elementen worden op het grid geplaatst en beslaan een bepaald aantal kolommen.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../utils/breakpoint";
7
+
8
+ @media screen and (width > $amsterdam-breakpoint) {
9
+ @for $i from 1 through 12 {
10
+ .amsterdam-grid-column-start-#{$i} {
11
+ grid-column-start: $i;
12
+ }
13
+
14
+ .amsterdam-grid-column-span-#{$i} {
15
+ grid-column-end: span $i;
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../utils/breakpoint";
7
+
8
+ .amsterdam-page-grid {
9
+ column-gap: var(--amsterdam-page-grid-column-gap);
10
+ display: grid;
11
+ grid-template-columns: repeat(var(--amsterdam-page-grid-column-count-narrow), 1fr);
12
+ max-width: var(--amsterdam-page-grid-max-width);
13
+ }
14
+
15
+ @media screen and (width > $amsterdam-breakpoint) {
16
+ .amsterdam-page-grid {
17
+ grid-template-columns: repeat(var(--amsterdam-page-grid-column-count-wide), 1fr);
18
+ }
19
+ }
@@ -7,13 +7,12 @@
7
7
 
8
8
  @mixin reset {
9
9
  box-sizing: border-box;
10
- break-after: avoid;
11
- break-inside: avoid;
12
10
  margin-block: 0;
13
- margin-inline: 0;
14
11
  }
15
12
 
16
13
  .amsterdam-heading {
14
+ break-after: avoid;
15
+ break-inside: avoid;
17
16
  color: var(--amsterdam-heading-color);
18
17
  font-family: var(--amsterdam-heading-font-family);
19
18
  font-weight: var(--amsterdam-heading-font-weight);
@@ -21,38 +20,42 @@
21
20
  @include reset;
22
21
  }
23
22
 
24
- .amsterdam-heading-1 {
25
- font-size: var(--amsterdam-heading-1-font-size-narrow);
23
+ .amsterdam-heading--1 {
24
+ font-size: var(--amsterdam-heading-1-narrow-font-size);
26
25
  line-height: var(--amsterdam-heading-1-line-height);
27
26
 
28
27
  @media screen and (width > $amsterdam-breakpoint) {
29
- font-size: var(--amsterdam-heading-1-font-size-wide);
28
+ font-size: var(--amsterdam-heading-1-wide-font-size);
30
29
  }
31
30
  }
32
31
 
33
- .amsterdam-heading-2 {
34
- font-size: var(--amsterdam-heading-2-font-size-narrow);
32
+ .amsterdam-heading--2 {
33
+ font-size: var(--amsterdam-heading-2-narrow-font-size);
35
34
  line-height: var(--amsterdam-heading-2-line-height);
36
35
 
37
36
  @media screen and (width > $amsterdam-breakpoint) {
38
- font-size: var(--amsterdam-heading-2-font-size-wide);
37
+ font-size: var(--amsterdam-heading-2-wide-font-size);
39
38
  }
40
39
  }
41
40
 
42
- .amsterdam-heading-3 {
43
- font-size: var(--amsterdam-heading-3-font-size-narrow);
41
+ .amsterdam-heading--3 {
42
+ font-size: var(--amsterdam-heading-3-narrow-font-size);
44
43
  line-height: var(--amsterdam-heading-3-line-height);
45
44
 
46
45
  @media screen and (width > $amsterdam-breakpoint) {
47
- font-size: var(--amsterdam-heading-3-font-size-wide);
46
+ font-size: var(--amsterdam-heading-3-wide-font-size);
48
47
  }
49
48
  }
50
49
 
51
- .amsterdam-heading-4 {
52
- font-size: var(--amsterdam-heading-4-font-size-narrow);
50
+ .amsterdam-heading--4 {
51
+ font-size: var(--amsterdam-heading-4-narrow-font-size);
53
52
  line-height: var(--amsterdam-heading-4-line-height);
54
53
 
55
54
  @media screen and (width > $amsterdam-breakpoint) {
56
- font-size: var(--amsterdam-heading-4-font-size-wide);
55
+ font-size: var(--amsterdam-heading-4-wide-font-size);
57
56
  }
58
57
  }
58
+
59
+ .amsterdam-heading--inverse-color {
60
+ color: var(--amsterdam-heading-inverse-color);
61
+ }
@@ -14,7 +14,7 @@
14
14
  fill: currentColor;
15
15
  }
16
16
 
17
- .amsterdam-icon-size-3 {
17
+ .amsterdam-icon--size-3 {
18
18
  height: calc(var(--amsterdam-icon-size-3-icon-size-narrow) * var(--amsterdam-icon-size-3-container-multiplier));
19
19
 
20
20
  @media screen and (width > $amsterdam-breakpoint) {
@@ -22,7 +22,7 @@
22
22
  }
23
23
  }
24
24
 
25
- .amsterdam-icon-size-3 svg {
25
+ .amsterdam-icon--size-3 svg {
26
26
  height: var(--amsterdam-icon-size-3-icon-size-narrow);
27
27
  width: var(--amsterdam-icon-size-3-icon-size-narrow);
28
28
 
@@ -31,7 +31,7 @@
31
31
  width: var(--amsterdam-icon-size-3-icon-size-wide);
32
32
  }
33
33
  }
34
- .amsterdam-icon-size-4 {
34
+ .amsterdam-icon--size-4 {
35
35
  height: calc(var(--amsterdam-icon-size-4-icon-size-narrow) * var(--amsterdam-icon-size-4-container-multiplier));
36
36
 
37
37
  @media screen and (width > $amsterdam-breakpoint) {
@@ -39,7 +39,7 @@
39
39
  }
40
40
  }
41
41
 
42
- .amsterdam-icon-size-4 svg {
42
+ .amsterdam-icon--size-4 svg {
43
43
  height: var(--amsterdam-icon-size-4-icon-size-narrow);
44
44
  width: var(--amsterdam-icon-size-4-icon-size-narrow);
45
45
 
@@ -49,7 +49,7 @@
49
49
  }
50
50
  }
51
51
 
52
- .amsterdam-icon-size-5 {
52
+ .amsterdam-icon--size-5 {
53
53
  height: calc(var(--amsterdam-icon-size-5-icon-size-narrow) * var(--amsterdam-icon-size-5-container-multiplier));
54
54
 
55
55
  @media screen and (width > $amsterdam-breakpoint) {
@@ -57,7 +57,7 @@
57
57
  }
58
58
  }
59
59
 
60
- .amsterdam-icon-size-5 svg {
60
+ .amsterdam-icon--size-5 svg {
61
61
  height: var(--amsterdam-icon-size-5-icon-size-narrow);
62
62
  width: var(--amsterdam-icon-size-5-icon-size-narrow);
63
63
 
@@ -67,7 +67,7 @@
67
67
  }
68
68
  }
69
69
 
70
- .amsterdam-icon-size-6 {
70
+ .amsterdam-icon--size-6 {
71
71
  height: calc(var(--amsterdam-icon-size-6-icon-size-narrow) * var(--amsterdam-icon-size-6-container-multiplier));
72
72
 
73
73
  @media screen and (width > $amsterdam-breakpoint) {
@@ -75,7 +75,7 @@
75
75
  }
76
76
  }
77
77
 
78
- .amsterdam-icon-size-6 svg {
78
+ .amsterdam-icon--size-6 svg {
79
79
  height: var(--amsterdam-icon-size-6-icon-size-narrow);
80
80
  width: var(--amsterdam-icon-size-6-icon-size-narrow);
81
81
 
@@ -85,7 +85,7 @@
85
85
  }
86
86
  }
87
87
 
88
- .amsterdam-icon-size-7 {
88
+ .amsterdam-icon--size-7 {
89
89
  height: calc(var(--amsterdam-icon-size-7-icon-size-narrow) * var(--amsterdam-icon-size-7-container-multiplier));
90
90
 
91
91
  @media screen and (width > $amsterdam-breakpoint) {
@@ -93,7 +93,7 @@
93
93
  }
94
94
  }
95
95
 
96
- .amsterdam-icon-size-7 svg {
96
+ .amsterdam-icon--size-7 svg {
97
97
  height: var(--amsterdam-icon-size-7-icon-size-narrow);
98
98
  width: var(--amsterdam-icon-size-7-icon-size-narrow);
99
99
 
package/src/index.scss ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ /* Append here */
7
+ @import "./page-menu/page-menu";
8
+ @import "./accordion/accordion";
9
+ @import "./breadcrumb/breadcrumb";
10
+ @import "./button/button";
11
+ @import "./form-label/form-label";
12
+ @import "./heading/heading";
13
+ @import "./icon/icon";
14
+ @import "./link/link";
15
+ @import "./paragraph/paragraph";
16
+ @import "./unordered-list/unordered-list";
17
+ @import "./ordered-list/ordered-list";
18
+ @import "./grid/grid-cell";
19
+ @import "./grid/page-grid";
@@ -1,26 +1,42 @@
1
1
  # Link
2
2
 
3
- ## Introductie
3
+ Een link (in het Nederlands: koppeling) wordt gebruikt als navigatie-element en kan op zichzelf of inline met tekst worden gebruikt. Het is de lichtgewicht variant voor navigatie.
4
4
 
5
- Nederlandse term: koppeling
5
+ ## Richtlijnen
6
6
 
7
- Links worden gebruikt als navigatie-elementen en kunnen op zichzelf of inline met tekst worden gebruikt. Het is de lichtgewicht variant voor navigatie.
7
+ Gebruik een link in de volgende gevallen:
8
8
 
9
- ## Bezochte stijl
9
+ - Navigatie naar een andere pagina binnen de website of applicatie
10
+ - Navigatie naar een andere website (zie [Externe links](#externe-links))
11
+ - Navigatie naar een element op dezelfde pagina
12
+ - Koppeling naar e-mails of telefoonnummers (begin de link met `mailto:` of `tel:`)
10
13
 
11
- Bezochte koppelingen geven aan dat een gebruiker de koppeling al heeft geopend. Gebruikte stijlen raden we af bij koppelingen, omdat ze de pagina vaak onoverzichtelijk maken. Het maakt navigeren door een pagina moeilijker. De inline koppeling heeft wel een bezochte stijl. Het vormt geen onderdeel van navigatie elementen die veel gescand worden.
14
+ Een link is een navigatie component. Gebruik een knop in plaats van een link als er een actie gewenst is.
12
15
 
13
- ## Referenties
16
+ <!--
17
+ TODO: According to the spec, you should use a link for downloads as well. Last time I checked, different browsers handled this differently,
18
+ which led to unexpected results. Maybe that changed in the meantime. Do we want to figure this out and describe this in the docs as well?
19
+ -->
14
20
 
15
- - [Links to cross-origin destinations are unsafe](https://developer.chrome.com/docs/lighthouse/best-practices/external-anchors-use-rel-noopener/): Vermijd `target="_blank"` of gebruik `rel="noopener"` als het moet.
16
- - [_A comprehensive guide to designing perfect links in UX_, op Prototypr](https://blog.prototypr.io/a-guide-to-designing-perfect-links-in-ux-414558f35730): best practices rondom links.
17
- - [_Writing Hyperlinks: Salient, Descriptive, Start with Keyword_ door Norman Nielsen Group](https://www.nngroup.com/articles/writing-links/): hoe schrijf je goede links? Een uitgebreid artikel over links.
18
- - [_Hover, focus, active_, door Wunder](https://wunder.io/wunderpedia/accessibility/accessible-uis/hover-focus-active/): goede uitleg over de states die elementen zoals de link en button hebben in browsers.
19
- - [MDN: `<a>`: The Anchor element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a): uitgebreid overzicht van alle mogelijkheden van links in HTML.
21
+ ### Externe links
22
+
23
+ Geef een externe link altijd `rel="external"` mee. Vermijd `target="_blank"`, maar gebruik in ieder geval `rel="external noopener"` als het moet. Voor meer informatie: [Links to cross-origin destinations are unsafe](https://developer.chrome.com/docs/lighthouse/best-practices/external-anchors-use-rel-noopener/)
20
24
 
21
- ### Relevante WCAG-regels
25
+ ### Bezochte stijl
26
+
27
+ Bezochte koppelingen geven aan dat een gebruiker de koppeling al heeft geopend. Gebruikte stijlen raden we af bij koppelingen, omdat ze de pagina vaak onoverzichtelijk maken. Het maakt navigeren door een pagina moeilijker. De inline koppeling heeft wel een bezochte stijl. Het vormt geen onderdeel van navigatie elementen die veel gescand worden.
28
+
29
+ ## Relevante WCAG eisen
22
30
 
23
31
  - [WCAG 1.4.3](https://www.w3.org/TR/WCAG21/#contrast-minimum)
24
32
  - [WCAG 2.4.4](https://www.w3.org/TR/WCAG21/#link-purpose-in-context)
25
33
  - [WCAG 2.5.3](https://www.w3.org/TR/WCAG21/#label-in-name)
26
34
  - [WCAG 3.1.2](https://www.w3.org/TR/WCAG21/#language-of-parts)
35
+
36
+ ## Referenties
37
+
38
+ - [Links to cross-origin destinations are unsafe](https://developer.chrome.com/docs/lighthouse/best-practices/external-anchors-use-rel-noopener/): Vermijd `target="_blank"` of gebruik `rel="external noopener"` als het moet.
39
+ - [_A comprehensive guide to designing perfect links in UX_, op Prototypr](https://blog.prototypr.io/a-guide-to-designing-perfect-links-in-ux-414558f35730): best practices rondom links.
40
+ - [_Writing Hyperlinks: Salient, Descriptive, Start with Keyword_ door Norman Nielsen Group](https://www.nngroup.com/articles/writing-links/): hoe schrijf je goede links? Een uitgebreid artikel over links.
41
+ - [_Hover, focus, active_, door Wunder](https://wunder.io/wunderpedia/accessibility/accessible-uis/hover-focus-active/): goede uitleg over de states die elementen zoals de link en button hebben in browsers.
42
+ - [MDN: `<a>`: The Anchor element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a): uitgebreid overzicht van alle mogelijkheden van links in HTML.