@amsterdam/design-system-css 0.1.2 → 0.1.3
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.
- package/dist/button/button.css +702 -0
- package/dist/button/button.css.map +1 -0
- package/dist/details/details.css +62 -0
- package/dist/details/details.css.map +1 -0
- package/dist/form-label/form-label.css +26 -0
- package/dist/form-label/form-label.css.map +1 -0
- package/dist/heading/heading.css +45 -95
- package/dist/heading/heading.css.map +1 -1
- package/dist/icon/icon.css +106 -21
- package/dist/icon/icon.css.map +1 -1
- package/dist/link/link.css +83 -55
- package/dist/link/link.css.map +1 -1
- package/dist/list/list.css +5 -0
- package/dist/list/list.css.map +1 -1
- package/dist/paragraph/paragraph.css +40 -44
- package/dist/paragraph/paragraph.css.map +1 -1
- package/dist/radio-button/radio-button.css +341 -0
- package/dist/radio-button/radio-button.css.map +1 -0
- package/dist/textbox/textbox.css +178 -0
- package/dist/textbox/textbox.css.map +1 -0
- package/package.json +7 -6
- package/src/button/README.md +24 -0
- package/src/button/button-css.md +12 -0
- package/src/button/button.scss +14 -0
- package/src/form-label/README.md +3 -0
- package/src/form-label/form-label.scss +17 -0
- package/src/heading/README.md +23 -0
- package/src/heading/heading-css.md +3 -0
- package/src/heading/heading.scss +40 -25
- package/src/icon/README.md +21 -0
- package/src/icon/icon.scss +87 -18
- package/src/link/README.md +1 -0
- package/src/link/link.scss +88 -32
- package/src/list/list.scss +11 -0
- package/src/paragraph/README.md +24 -0
- package/src/paragraph/paragraph-css.md +3 -0
- package/src/paragraph/paragraph.scss +35 -9
- package/utils/breakpoint.scss +7 -2
- package/utils/calculate-fluid-style.scss +6 -1
- package/dist/document/document.css +0 -22
- package/dist/document/document.css.map +0 -1
- package/dist/grid/grid.css +0 -340
- package/dist/grid/grid.css.map +0 -1
- package/dist/spacing/spacing.css +0 -249
- package/dist/spacing/spacing.css.map +0 -1
- package/src/document/document.scss +0 -16
- package/src/grid/grid.scss +0 -83
- package/src/spacing/spacing.scss +0 -60
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Button
|
|
2
|
+
|
|
3
|
+
De button gebruik je zodat de gebruiker acties kan uit te voeren en de user interface kan bedienen.
|
|
4
|
+
|
|
5
|
+
## Richtlijnen
|
|
6
|
+
|
|
7
|
+
- Een label tekst die beschrijft wat de functie van de button is.
|
|
8
|
+
- Een duidelijke constrasterende kleurstelling zodat deze goed te herkennen is en snel te lokaliseren valt.
|
|
9
|
+
- Gebruik het juiste type button voor de daarbijhorende toepassing. Bijvoorbeeld een button binnen een formulier moet altijd het het type `submit` zijn.
|
|
10
|
+
- Zorg dat een button ook met een keyboard te bedienen is.
|
|
11
|
+
|
|
12
|
+
## Relevante WCAG eisen
|
|
13
|
+
|
|
14
|
+
- [WCAG eis 2.1.3](https://www.w3.org/TR/WCAG21/#keyboard-no-exception): je kan de button activeren met `Enter` of `Space`, en het is mogelijk met `Tab` de button te focussen. `Space` gebruiken heeft dan niet het effect dat de pagina scrollt.
|
|
15
|
+
- [WCAG eis 2.4.6](https://www.w3.org/TR/WCAG21/#headings-and-labels): de label van de button moet duidelijk zijn
|
|
16
|
+
- [WCAG eis 2.5.2](https://www.w3.org/TR/WCAG21/#pointer-cancellation):
|
|
17
|
+
- gebruik niet de `mousedown` event om de button te activeren, gebruik liever de `click` event
|
|
18
|
+
- `mousedown` mag alleen gebruikt worden als `mouseup` het effect weer ongedaan maakt, bijvoorbeeld een "_fast foward_" button om audio of video door te spoelen.
|
|
19
|
+
- [WCAG eis 2.5.5](https://www.w3.org/TR/WCAG21/#target-size): de button moet groot genoeg zijn om aan te klikken, en kleine buttons moeten niet te dicht op een andere button staan.
|
|
20
|
+
|
|
21
|
+
## Referenties
|
|
22
|
+
|
|
23
|
+
- [W3C - Focus Visible](https://www.w3.org/WAI/WCAG21/Understanding/focus-visible.html)
|
|
24
|
+
- [W3C - Headings & labels](https://www.w3.org/TR/WCAG21/#headings-and-labels)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# CSS Button
|
|
2
|
+
|
|
3
|
+
Het button component maakt gebruik van de CSS library van de gemeente Utrecht. Daarop is het Amsterdam Design toegepast. Concreet betekent dit dat de Utrecht class names worden gebruikt met de Amsterdamse css attribuut waarden.
|
|
4
|
+
Een voorbeeld van een HTML button met de Amsterdamse styling is:
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<button class="utrecht-button">Amsterdam Button</button>
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Deze button wordt getoond met de Amsterdamse button styling.
|
|
11
|
+
|
|
12
|
+
Vedere documentatie van de Utrecht button is terug te vinden in hun [github](https://github.com/nl-design-system/utrecht/tree/main/components/button) repository.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@import "../../node_modules/@utrecht/components/button/css";
|
|
2
|
+
@import "../../utils/breakpoint";
|
|
3
|
+
|
|
4
|
+
.amsterdam-button {
|
|
5
|
+
font-size: var(--amsterdam-button-font-size-narrow);
|
|
6
|
+
|
|
7
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
8
|
+
font-size: var(--amsterdam-button-font-size-wide);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.amsterdam-button--secondary:hover {
|
|
13
|
+
box-shadow: var(--amsterdam-button-secondary-hover-box-shadow);
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
@import "../../utils/breakpoint";
|
|
6
|
+
|
|
7
|
+
.amsterdam-form-label {
|
|
8
|
+
color: var(--amsterdam-form-label-color);
|
|
9
|
+
font-family: var(--amsterdam-form-label-font-family);
|
|
10
|
+
font-size: var(--amsterdam-form-label-font-size-narrow);
|
|
11
|
+
font-weight: var(--amsterdam-form-label-font-weight);
|
|
12
|
+
line-height: var(--amsterdam-form-label-line-height);
|
|
13
|
+
|
|
14
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
15
|
+
font-size: var(--amsterdam-form-label-font-size-wide);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Heading
|
|
2
|
+
|
|
3
|
+
Een heading zegt iets over de onderstaande content. Met behulp van headings kan de gebruiker snel een overzicht krijgen van de structuur van de webpagina.
|
|
4
|
+
|
|
5
|
+
## Richtlijnen
|
|
6
|
+
|
|
7
|
+
- Een heading omschrijft de content eronder.
|
|
8
|
+
- Gebruik een heading niet voor opmaak en styling, maar om de structuur van de pagina weer te geven.
|
|
9
|
+
- Gebruik headings hierarchisch en sla geen heading niveaus over. Dus na een `h1` volgt een `h2` en dus niet een `h3`.
|
|
10
|
+
|
|
11
|
+
## Relevante WCAG eisen
|
|
12
|
+
|
|
13
|
+
- [WCAG 1.3.1](https://www.w3.org/WAI/WCAG21/quickref/#qr-content-structure-separation-programmatic):
|
|
14
|
+
Tekst die er uit ziet als een heading wordt ook door een computer herkend als een heading. Door gebruik te maken van het juiste heading niveau is voor alle gebruikers duidelijk hoe de pagina is gestructeerd.
|
|
15
|
+
- [WCAG 2.4.1](https://www.w3.org/WAI/WCAG21/quickref/#qr-navigation-mechanisms-skip): Headings kunnen gebruikt worden om naar een volgende sectie te navigeren met het toetsenbord
|
|
16
|
+
- [WCAG 2.4.6](https://www.w3.org/WAI/WCAG21/quickref/#headings-and-labels): Beschrijf met headings het doel of het onderwerp van de onderliggende content
|
|
17
|
+
- [WCAG 2.4.10](https://www.w3.org/WAI/WCAG21/quickref/#qr-navigation-mechanisms-headings): Gebruik headings om de content te structureren
|
|
18
|
+
|
|
19
|
+
## Referenties
|
|
20
|
+
|
|
21
|
+
- [W3C - Headings](https://www.w3.org/WAI/tutorials/page-structure/headings/)
|
|
22
|
+
- [W3C - Headings & labels](https://www.w3.org/TR/WCAG21/#headings-and-labels)
|
|
23
|
+
- [A11Y project - Heading structure](https://www.a11yproject.com/posts/how-to-accessible-heading-structure/)
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# CSS Heading
|
|
2
|
+
|
|
3
|
+
Gebruik de juiste heading HTML-elementen als je van deze classes gebruik maakt. De beschikbare elementen zijn: `h1`, `h2`, `h3`, `h4`, `h5` en `h6`. Let bij het kiezen van een heading niveau op de structuur van de pagina. Heading niveaus worden gebruikt om informatie te groeperen. De titel van de pagina krijgt een `h1`. De eerste subtitel een `h2`. De daarna volgende titels van secties die horen bij die subtitel krijgen een `h3`, enzovoort. Als je een nieuwe sectie begint, gebruik je weer een `h2`. Het is toegestaan om stijl en semantiek los van elkaar te trekken. Een `h1` kan bijvoorbeeld de class `amsterdam-heading-2` krijgen.
|
package/src/heading/heading.scss
CHANGED
|
@@ -1,42 +1,57 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
@import "../../utils/breakpoint";
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
@mixin reset {
|
|
8
|
+
box-sizing: border-box;
|
|
4
9
|
break-after: avoid;
|
|
5
10
|
break-inside: avoid;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
margin-block: 0;
|
|
12
|
+
margin-inline: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.amsterdam-heading {
|
|
16
|
+
color: var(--amsterdam-heading-color);
|
|
17
|
+
font-family: var(--amsterdam-heading-font-family);
|
|
18
|
+
font-weight: var(--amsterdam-heading-font-weight);
|
|
19
|
+
|
|
20
|
+
@include reset;
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
.amsterdam-heading-1 {
|
|
15
|
-
font-size:
|
|
16
|
-
line-height:
|
|
24
|
+
font-size: var(--amsterdam-heading-1-font-size-narrow);
|
|
25
|
+
line-height: var(--amsterdam-heading-1-line-height);
|
|
26
|
+
|
|
27
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
28
|
+
font-size: var(--amsterdam-heading-1-font-size-wide);
|
|
29
|
+
}
|
|
17
30
|
}
|
|
18
31
|
|
|
19
32
|
.amsterdam-heading-2 {
|
|
20
|
-
font-size:
|
|
21
|
-
line-height:
|
|
33
|
+
font-size: var(--amsterdam-heading-2-font-size-narrow);
|
|
34
|
+
line-height: var(--amsterdam-heading-2-line-height);
|
|
35
|
+
|
|
36
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
37
|
+
font-size: var(--amsterdam-heading-2-font-size-wide);
|
|
38
|
+
}
|
|
22
39
|
}
|
|
23
40
|
|
|
24
41
|
.amsterdam-heading-3 {
|
|
25
|
-
font-size:
|
|
26
|
-
line-height:
|
|
27
|
-
}
|
|
42
|
+
font-size: var(--amsterdam-heading-3-font-size-narrow);
|
|
43
|
+
line-height: var(--amsterdam-heading-3-line-height);
|
|
28
44
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
45
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
46
|
+
font-size: var(--amsterdam-heading-3-font-size-wide);
|
|
47
|
+
}
|
|
32
48
|
}
|
|
33
49
|
|
|
34
|
-
.amsterdam-heading-
|
|
35
|
-
font-size:
|
|
36
|
-
line-height:
|
|
37
|
-
}
|
|
50
|
+
.amsterdam-heading-4 {
|
|
51
|
+
font-size: var(--amsterdam-heading-4-font-size-narrow);
|
|
52
|
+
line-height: var(--amsterdam-heading-4-line-height);
|
|
38
53
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
55
|
+
font-size: var(--amsterdam-heading-4-font-size-wide);
|
|
56
|
+
}
|
|
42
57
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Icon
|
|
2
|
+
|
|
3
|
+
Iconen zijn visuele symbolen die worden gebruikt om ideeën, thema’s of acties weer te geven. Ze communiceren in één oogopslag de boodschap en vestigen de aandacht op belangrijke (interactieve) informatie. Gebruik altijd een `Icon` component om een SVG icoon heen voor de juiste vormgeving en maatvoering.
|
|
4
|
+
|
|
5
|
+
## Interactieve elementen
|
|
6
|
+
|
|
7
|
+
Ter ondersteuning van tekstuele interactie-elementen, zoals knoppen en links, kunnen iconen gebruikt worden. Probeer altijd een icoon te voorzien van begeleidende tekst. Iconen zonder begeleidende tekst mogen alleen gebruikt worden als ze aan internationale standaarden voldoen, zoals menu (hamburger icoon), zoek (vergrootglas), volgende, vorige, play, pauze, enz.
|
|
8
|
+
|
|
9
|
+
## Kleur
|
|
10
|
+
|
|
11
|
+
Iconen zijn zwart of wit. Bij interactie zijn ze donkerblauw. Uitgeschakeld zijn ze grijs. En ze moeten voldoen aan dezelfde contrastverhouding voor toegankelijkheid als typografie bij een achtergrondkleur. Het icoon neemt standaard de kleur van de _container_ waar deze in zit over.
|
|
12
|
+
|
|
13
|
+
## Uitlijning
|
|
14
|
+
|
|
15
|
+
Iconen staan standaard links van de tekst en zijn verticaal in het midden van de eerste regel tekst uitgelijnd.
|
|
16
|
+
|
|
17
|
+
## Grootte
|
|
18
|
+
|
|
19
|
+
<!-- (TODO: linken naar typografie docs) -->
|
|
20
|
+
|
|
21
|
+
De iconen gebruiken dezelfde tekstniveaus als alle typografische componenten om hun grootte te bepalen. Hierdoor zijn icoon en tekst makkelijk op elkaar af te stemmen.
|
package/src/icon/icon.scss
CHANGED
|
@@ -1,34 +1,103 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
@import "../../utils/breakpoint";
|
|
2
6
|
|
|
3
7
|
.amsterdam-icon {
|
|
4
8
|
align-items: center;
|
|
5
9
|
display: inline-flex;
|
|
10
|
+
}
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
.amsterdam-icon svg {
|
|
13
|
+
fill: currentColor;
|
|
14
|
+
}
|
|
9
15
|
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
.amsterdam-icon-size-3 {
|
|
17
|
+
height: calc(var(--amsterdam-icon-size-3-icon-size-narrow) * var(--amsterdam-icon-size-3-container-multiplier));
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
20
|
+
height: calc(var(--amsterdam-icon-size-3-icon-size-wide) * var(--amsterdam-icon-size-3-container-multiplier));
|
|
21
|
+
}
|
|
15
22
|
}
|
|
16
23
|
|
|
17
|
-
.amsterdam-icon svg {
|
|
18
|
-
|
|
24
|
+
.amsterdam-icon-size-3 svg {
|
|
25
|
+
height: var(--amsterdam-icon-size-3-icon-size-narrow);
|
|
26
|
+
width: var(--amsterdam-icon-size-3-icon-size-narrow);
|
|
27
|
+
|
|
28
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
29
|
+
height: var(--amsterdam-icon-size-3-icon-size-wide);
|
|
30
|
+
width: var(--amsterdam-icon-size-3-icon-size-wide);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
.amsterdam-icon-size-4 {
|
|
34
|
+
height: calc(var(--amsterdam-icon-size-4-icon-size-narrow) * var(--amsterdam-icon-size-4-container-multiplier));
|
|
35
|
+
|
|
36
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
37
|
+
height: calc(var(--amsterdam-icon-size-4-icon-size-wide) * var(--amsterdam-icon-size-4-container-multiplier));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.amsterdam-icon-size-4 svg {
|
|
42
|
+
height: var(--amsterdam-icon-size-4-icon-size-narrow);
|
|
43
|
+
width: var(--amsterdam-icon-size-4-icon-size-narrow);
|
|
44
|
+
|
|
45
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
46
|
+
height: var(--amsterdam-icon-size-4-icon-size-wide);
|
|
47
|
+
width: var(--amsterdam-icon-size-4-icon-size-wide);
|
|
48
|
+
}
|
|
19
49
|
}
|
|
20
50
|
|
|
21
|
-
.amsterdam-icon-
|
|
22
|
-
height:
|
|
23
|
-
|
|
51
|
+
.amsterdam-icon-size-5 {
|
|
52
|
+
height: calc(var(--amsterdam-icon-size-5-icon-size-narrow) * var(--amsterdam-icon-size-5-container-multiplier));
|
|
53
|
+
|
|
54
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
55
|
+
height: calc(var(--amsterdam-icon-size-5-icon-size-wide) * var(--amsterdam-icon-size-5-container-multiplier));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.amsterdam-icon-size-5 svg {
|
|
60
|
+
height: var(--amsterdam-icon-size-5-icon-size-narrow);
|
|
61
|
+
width: var(--amsterdam-icon-size-5-icon-size-narrow);
|
|
62
|
+
|
|
63
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
64
|
+
height: var(--amsterdam-icon-size-5-icon-size-wide);
|
|
65
|
+
width: var(--amsterdam-icon-size-5-icon-size-wide);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.amsterdam-icon-size-6 {
|
|
70
|
+
height: calc(var(--amsterdam-icon-size-6-icon-size-narrow) * var(--amsterdam-icon-size-6-container-multiplier));
|
|
71
|
+
|
|
72
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
73
|
+
height: calc(var(--amsterdam-icon-size-6-icon-size-wide) * var(--amsterdam-icon-size-6-container-multiplier));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.amsterdam-icon-size-6 svg {
|
|
78
|
+
height: var(--amsterdam-icon-size-6-icon-size-narrow);
|
|
79
|
+
width: var(--amsterdam-icon-size-6-icon-size-narrow);
|
|
80
|
+
|
|
81
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
82
|
+
height: var(--amsterdam-icon-size-6-icon-size-wide);
|
|
83
|
+
width: var(--amsterdam-icon-size-6-icon-size-wide);
|
|
84
|
+
}
|
|
24
85
|
}
|
|
25
86
|
|
|
26
|
-
.amsterdam-icon-
|
|
27
|
-
height:
|
|
28
|
-
|
|
87
|
+
.amsterdam-icon-size-7 {
|
|
88
|
+
height: calc(var(--amsterdam-icon-size-7-icon-size-narrow) * var(--amsterdam-icon-size-7-container-multiplier));
|
|
89
|
+
|
|
90
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
91
|
+
height: calc(var(--amsterdam-icon-size-7-icon-size-wide) * var(--amsterdam-icon-size-7-container-multiplier));
|
|
92
|
+
}
|
|
29
93
|
}
|
|
30
94
|
|
|
31
|
-
.amsterdam-icon-
|
|
32
|
-
height:
|
|
33
|
-
width:
|
|
95
|
+
.amsterdam-icon-size-7 svg {
|
|
96
|
+
height: var(--amsterdam-icon-size-7-icon-size-narrow);
|
|
97
|
+
width: var(--amsterdam-icon-size-7-icon-size-narrow);
|
|
98
|
+
|
|
99
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
100
|
+
height: var(--amsterdam-icon-size-7-icon-size-wide);
|
|
101
|
+
width: var(--amsterdam-icon-size-7-icon-size-wide);
|
|
102
|
+
}
|
|
34
103
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Link
|
package/src/link/link.scss
CHANGED
|
@@ -1,45 +1,101 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@import "../../utils/breakpoint";
|
|
2
7
|
|
|
3
8
|
.amsterdam-link {
|
|
4
|
-
color: var(--amsterdam-color
|
|
5
|
-
|
|
6
|
-
font-size:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
text-decoration:
|
|
9
|
+
color: var(--amsterdam-link-color, blue);
|
|
10
|
+
font-family: var(--amsterdam-paragraph-font-family);
|
|
11
|
+
font-size: var(--amsterdam-link-font-size-narrow);
|
|
12
|
+
line-height: var(--amsterdam-link-line-height);
|
|
13
|
+
outline-offset: var(--amsterdam-link-outline-offset);
|
|
14
|
+
text-decoration: var(--amsterdam-link-text-decoration, underline);
|
|
15
|
+
text-decoration-color: var(--amsterdam-link-text-decoration-color, currentColor);
|
|
16
|
+
text-decoration-thickness: var(--amsterdam-link-text-decoration-thickness, 1px);
|
|
17
|
+
text-underline-offset: var(--amsterdam-link-text-underline-offset);
|
|
18
|
+
|
|
19
|
+
&:hover,
|
|
20
|
+
&:active {
|
|
21
|
+
color: var(--amsterdam-link-hover-color);
|
|
22
|
+
text-decoration: var(--amsterdam-link-hover-text-decoration);
|
|
23
|
+
text-decoration-thickness: var(--amsterdam-link-hover-text-decoration-thickness, 1px);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&:focus {
|
|
27
|
+
color: var(--amsterdam-link-focus-color);
|
|
28
|
+
text-decoration: var(--amsterdam-link-focus-text-decoration);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&:visited {
|
|
32
|
+
color: var(--amsterdam-link-visited-color);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
36
|
+
font-size: var(--amsterdam-link-font-size-wide);
|
|
37
|
+
}
|
|
11
38
|
}
|
|
12
39
|
|
|
13
|
-
.amsterdam-link
|
|
14
|
-
|
|
15
|
-
outline-offset: var(--amsterdam-focus-outline-offset);
|
|
16
|
-
text-decoration: underline;
|
|
40
|
+
.amsterdam-link--standalone-bold {
|
|
41
|
+
font-weight: var(--amsterdam-link-standalone-bold-font-weight);
|
|
17
42
|
}
|
|
18
43
|
|
|
19
|
-
.amsterdam-link
|
|
20
|
-
|
|
21
|
-
font-
|
|
22
|
-
|
|
44
|
+
.amsterdam-link--inline {
|
|
45
|
+
font-family: var(--amsterdam-link-inline-font-family);
|
|
46
|
+
font-size: var(--amsterdam-link-inline-font-size);
|
|
47
|
+
text-underline-offset: var(--amsterdam-link-inline-text-underline-offset);
|
|
48
|
+
|
|
49
|
+
&:visited {
|
|
50
|
+
color: var(--amsterdam-link-inline-visited-color);
|
|
51
|
+
}
|
|
23
52
|
}
|
|
24
53
|
|
|
25
|
-
.amsterdam-link-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
54
|
+
.amsterdam-link--in-list {
|
|
55
|
+
align-items: flex-start;
|
|
56
|
+
display: inline-flex;
|
|
57
|
+
font-size: var(--amsterdam-link-in-list-font-size-narrow);
|
|
58
|
+
gap: var(--amsterdam-link-in-list-gap);
|
|
59
|
+
line-height: var(--amsterdam-link-in-list-line-height);
|
|
60
|
+
text-underline-offset: var(--amsterdam-link-in-list-text-underline-offset);
|
|
61
|
+
|
|
62
|
+
// Override for icon size
|
|
63
|
+
span.amsterdam-icon svg {
|
|
64
|
+
height: 16px;
|
|
65
|
+
width: 16px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
69
|
+
font-size: var(--amsterdam-link-in-list-font-size-wide);
|
|
70
|
+
}
|
|
29
71
|
}
|
|
30
72
|
|
|
31
|
-
.amsterdam-link-
|
|
32
|
-
color: var(--amsterdam-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
73
|
+
.amsterdam-link--on-background-dark {
|
|
74
|
+
color: var(--amsterdam-link-on-background-dark-color);
|
|
75
|
+
text-decoration: var(--amsterdam-link-on-background-dark-text-decoration);
|
|
76
|
+
|
|
77
|
+
&:hover,
|
|
78
|
+
&:active {
|
|
79
|
+
color: var(--amsterdam-link-on-background-dark-hover-color);
|
|
80
|
+
text-decoration: var(--amsterdam-link-on-background-dark-hover-text-decoration);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&:visited {
|
|
84
|
+
color: var(--amsterdam-link-on-background-dark-visited-color);
|
|
85
|
+
}
|
|
38
86
|
}
|
|
39
87
|
|
|
40
|
-
.amsterdam-link-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
88
|
+
.amsterdam-link--on-background-light {
|
|
89
|
+
color: var(--amsterdam-link-on-background-light-color);
|
|
90
|
+
text-decoration: var(--amsterdam-link-on-background-light-text-decoration);
|
|
91
|
+
|
|
92
|
+
&:hover,
|
|
93
|
+
&:active {
|
|
94
|
+
color: var(--amsterdam-link-on-background-light-hover-color);
|
|
95
|
+
text-decoration: var(--amsterdam-link-on-background-light-hover-text-decoration);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&:visited {
|
|
99
|
+
color: var(--amsterdam-link-on-background-light-visited-color);
|
|
100
|
+
}
|
|
45
101
|
}
|
package/src/list/list.scss
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Paragraph
|
|
2
|
+
|
|
3
|
+
De `Paragraph` component gebruik je voor een alinea met lopende tekst, instructies van formulieren en voor overige losstaande tekstfragmenten.
|
|
4
|
+
|
|
5
|
+
## Richtlijnen
|
|
6
|
+
|
|
7
|
+
- Groepeer zinnen die bij elkaar horen in een alinea. Begin een nieuwe alinea wanneer de tekst over een andere onderwerp gaat of een eigen doel heeft.
|
|
8
|
+
- Overweeg of een alinea met meer dan 7 zinnen of 140 woorden duidelijker is als je tekst indeelt in twee alinea's. Teksten met niet al te lange alinea's zijn makkelijker te begrijpen als je pauze neemt, en door het groeperen is informatie sneller terug te vinden.
|
|
9
|
+
|
|
10
|
+
## Relevante WCAG eisen
|
|
11
|
+
|
|
12
|
+
- [WCAG 1.3.1](https://www.w3.org/TR/WCAG21/#info-and-relationships): Blokken die er uit zien als een alinea worden ook door een computer herkend als alinea
|
|
13
|
+
- [WCAG 1.4.3](https://www.w3.org/TR/WCAG21/#contrast-minimum): Het contrast van zwarte tekst op een witte achtergrond is hoog genoeg
|
|
14
|
+
- [WCAG 1.4.4](https://www.w3.org/TR/WCAG21/#resize-text): Tekst kan met zoomen en het aanpassen van de standaard tekstgrootte twee keer zo groot gemaakt worden
|
|
15
|
+
- [WCAG 1.4.10](https://www.w3.org/TR/WCAG21/#reflow): Als de tekst breder is dan de viewport is scrollen niet nodig om alle tekst te kunnen zien
|
|
16
|
+
- [WCAG 1.4.12](https://www.w3.org/TR/WCAG21/#text-spacing): De genoemde style properties kunnen worden aangepast zonder dat de tekst onleesbaar wordt
|
|
17
|
+
- [WCAG 3.1.2](https://www.w3.org/TR/WCAG21/#language-of-parts): Het is aan te geven in welke taal de tekst is
|
|
18
|
+
- [WCAG 1.4.6](https://www.w3.org/TR/WCAG21/#contrast-enhanced): Het contrast van zwarte tekst op een witte achtergrond is hoger dan 7:1
|
|
19
|
+
- [WCAG 1.4.8](https://www.w3.org/TR/WCAG21/#visual-presentation): We voldoen niet aan al deze eisen
|
|
20
|
+
|
|
21
|
+
## Referenties
|
|
22
|
+
|
|
23
|
+
- [MDN: `<p>`: The Paragraph element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p)
|
|
24
|
+
- [Hoe lang mag een alinea zijn? En waar hangt dat van af? - Taaladvies.net](https://taaladvies.net/lengte-van-alineas/)
|
|
@@ -1,17 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
@import "../../utils/breakpoint";
|
|
2
6
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
line-height: calculate-fluid-style(29, 38);
|
|
7
|
+
@mixin reset {
|
|
8
|
+
box-sizing: border-box;
|
|
6
9
|
margin-block: 0;
|
|
10
|
+
-webkit-text-size-adjust: 100%;
|
|
7
11
|
}
|
|
8
12
|
|
|
9
|
-
.amsterdam-paragraph
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
.amsterdam-paragraph {
|
|
14
|
+
color: var(--amsterdam-paragraph-color);
|
|
15
|
+
font-family: var(--amsterdam-paragraph-font-family);
|
|
16
|
+
font-size: var(--amsterdam-paragraph-font-size-narrow);
|
|
17
|
+
font-weight: var(--amsterdam-paragraph-font-weight);
|
|
18
|
+
line-height: var(--amsterdam-paragraph-line-height);
|
|
19
|
+
|
|
20
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
21
|
+
font-size: var(--amsterdam-paragraph-font-size-wide);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@include reset;
|
|
12
25
|
}
|
|
13
26
|
|
|
14
27
|
.amsterdam-paragraph-small {
|
|
15
|
-
font-size:
|
|
16
|
-
line-height:
|
|
28
|
+
font-size: var(--amsterdam-paragraph-small-font-size-narrow);
|
|
29
|
+
line-height: var(--amsterdam-paragraph-small-line-height);
|
|
30
|
+
|
|
31
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
32
|
+
font-size: var(--amsterdam-paragraph-small-font-size-wide);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.amsterdam-paragraph-large {
|
|
37
|
+
font-size: var(--amsterdam-paragraph-large-font-size-narrow);
|
|
38
|
+
line-height: var(--amsterdam-paragraph-large-line-height);
|
|
39
|
+
|
|
40
|
+
@media screen and (width > $amsterdam-breakpoint) {
|
|
41
|
+
font-size: var(--amsterdam-paragraph-large-font-size-wide);
|
|
42
|
+
}
|
|
17
43
|
}
|
package/utils/breakpoint.scss
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
/*
|
|
2
|
-
The breakpoint is
|
|
7
|
+
The breakpoint is 854px / 16 = 53.375rems
|
|
3
8
|
https://developer.mozilla.org/en-US/docs/Web/CSS/@media#accessibility_concerns
|
|
4
9
|
*/
|
|
5
|
-
$amsterdam-breakpoint:
|
|
10
|
+
$amsterdam-breakpoint: 53.375rem;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
@use "sass:math";
|
|
2
7
|
|
|
3
|
-
@function calculate-fluid-style($minSizePx, $maxSizePx, $minScreenWidthPx: 320, $maxScreenWidthPx:
|
|
8
|
+
@function calculate-fluid-style($minSizePx, $maxSizePx, $minScreenWidthPx: 320, $maxScreenWidthPx: 1440) {
|
|
4
9
|
$defaultBaseSize: 16;
|
|
5
10
|
$minSize: math.div($minSizePx, $defaultBaseSize) * 1rem;
|
|
6
11
|
$maxSize: math.div($maxSizePx, $defaultBaseSize) * 1rem;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
@import "normalize.css";
|
|
2
|
-
body {
|
|
3
|
-
font-family: "Amsterdam Sans", "Arial", sans-serif;
|
|
4
|
-
font-size: clamp(
|
|
5
|
-
1.125rem,
|
|
6
|
-
calc(
|
|
7
|
-
1.125rem + 0.00375 * (100vw - 20rem)
|
|
8
|
-
),
|
|
9
|
-
1.5rem
|
|
10
|
-
);
|
|
11
|
-
font-weight: 400;
|
|
12
|
-
line-height: 160%;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/* Use border-box sizing by default for all elements */
|
|
16
|
-
*,
|
|
17
|
-
*::before,
|
|
18
|
-
*::after {
|
|
19
|
-
box-sizing: border-box;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/*# sourceMappingURL=document.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../src/document/document.scss"],"names":[],"mappings":"AAAQ;AAGR;EACE;EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACA;EACA;;;AAGF;AACA;AAAA;AAAA;EAGE","file":"document.css"}
|