@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.
Files changed (48) hide show
  1. package/dist/button/button.css +702 -0
  2. package/dist/button/button.css.map +1 -0
  3. package/dist/details/details.css +62 -0
  4. package/dist/details/details.css.map +1 -0
  5. package/dist/form-label/form-label.css +26 -0
  6. package/dist/form-label/form-label.css.map +1 -0
  7. package/dist/heading/heading.css +45 -95
  8. package/dist/heading/heading.css.map +1 -1
  9. package/dist/icon/icon.css +106 -21
  10. package/dist/icon/icon.css.map +1 -1
  11. package/dist/link/link.css +83 -55
  12. package/dist/link/link.css.map +1 -1
  13. package/dist/list/list.css +5 -0
  14. package/dist/list/list.css.map +1 -1
  15. package/dist/paragraph/paragraph.css +40 -44
  16. package/dist/paragraph/paragraph.css.map +1 -1
  17. package/dist/radio-button/radio-button.css +341 -0
  18. package/dist/radio-button/radio-button.css.map +1 -0
  19. package/dist/textbox/textbox.css +178 -0
  20. package/dist/textbox/textbox.css.map +1 -0
  21. package/package.json +7 -6
  22. package/src/button/README.md +24 -0
  23. package/src/button/button-css.md +12 -0
  24. package/src/button/button.scss +14 -0
  25. package/src/form-label/README.md +3 -0
  26. package/src/form-label/form-label.scss +17 -0
  27. package/src/heading/README.md +23 -0
  28. package/src/heading/heading-css.md +3 -0
  29. package/src/heading/heading.scss +40 -25
  30. package/src/icon/README.md +21 -0
  31. package/src/icon/icon.scss +87 -18
  32. package/src/link/README.md +1 -0
  33. package/src/link/link.scss +88 -32
  34. package/src/list/list.scss +11 -0
  35. package/src/paragraph/README.md +24 -0
  36. package/src/paragraph/paragraph-css.md +3 -0
  37. package/src/paragraph/paragraph.scss +35 -9
  38. package/utils/breakpoint.scss +7 -2
  39. package/utils/calculate-fluid-style.scss +6 -1
  40. package/dist/document/document.css +0 -22
  41. package/dist/document/document.css.map +0 -1
  42. package/dist/grid/grid.css +0 -340
  43. package/dist/grid/grid.css.map +0 -1
  44. package/dist/spacing/spacing.css +0 -249
  45. package/dist/spacing/spacing.css.map +0 -1
  46. package/src/document/document.scss +0 -16
  47. package/src/grid/grid.scss +0 -83
  48. 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,3 @@
1
+ # Form label
2
+
3
+ Een label element gebruik je om een formulierelement te beschrijven. Koppel een formulierelement (zoals een `input` of `textarea`) altijd aan een label.
@@ -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.
@@ -1,42 +1,57 @@
1
- @import "../../utils/calculate-fluid-style";
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+ @import "../../utils/breakpoint";
2
6
 
3
- .amsterdam-heading {
7
+ @mixin reset {
8
+ box-sizing: border-box;
4
9
  break-after: avoid;
5
10
  break-inside: avoid;
6
- color: black;
7
- font-weight: 800;
8
- margin-block-end: 0;
9
- margin-block-start: 0;
10
- margin-inline-end: 0;
11
- margin-inline-start: 0;
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: calculate-fluid-style(32, 80);
16
- line-height: calculate-fluid-style(35, 80);
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: calculate-fluid-style(28, 56);
21
- line-height: calculate-fluid-style(34, 62);
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: calculate-fluid-style(24, 40);
26
- line-height: calculate-fluid-style(32, 48);
27
- }
42
+ font-size: var(--amsterdam-heading-3-font-size-narrow);
43
+ line-height: var(--amsterdam-heading-3-line-height);
28
44
 
29
- .amsterdam-heading-4 {
30
- font-size: calculate-fluid-style(22, 32);
31
- line-height: calculate-fluid-style(31, 38);
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-5 {
35
- font-size: calculate-fluid-style(18, 24);
36
- line-height: calculate-fluid-style(25, 31);
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
- .amsterdam-heading-6 {
40
- font-size: calculate-fluid-style(16, 18);
41
- line-height: calculate-fluid-style(22, 23);
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.
@@ -1,34 +1,103 @@
1
- @import "../../utils/calculate-fluid-style";
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
- /* TODO: this height should be provided by the text element its part of? */
8
- height: calculate-fluid-style(24, 26);
12
+ .amsterdam-icon svg {
13
+ fill: currentColor;
14
+ }
9
15
 
10
- /* TODO: 12px is not part of the design system, what should this be? */
11
- margin-inline-end: 12px;
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
- /* Offset icon by 3px, because Amsterdam Sans vertical alignment is off */
14
- padding-block-end: 3px;
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
- fill: currentColor;
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-small svg {
22
- height: 1rem;
23
- width: 1rem;
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-medium svg {
27
- height: 1.5rem;
28
- width: 1.5rem;
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-large svg {
32
- height: 2rem;
33
- width: 2rem;
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
@@ -1,45 +1,101 @@
1
- @import "../../utils/calculate-fluid-style";
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-primary-blue);
5
- display: inline-flex;
6
- font-size: calculate-fluid-style(18, 24);
7
- font-weight: 800;
8
- line-height: calculate-fluid-style(29, 38);
9
- outline-offset: var(--amsterdam-focus-outline-offset);
10
- text-decoration: none;
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:focus,
14
- .amsterdam-link:hover {
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-standalone {
20
- box-shadow: inset 0 -2px var(--amsterdam-color-primary-blue);
21
- font-weight: 400;
22
- transition: box-shadow 100ms ease-in-out, color 100ms ease-in-out;
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-standalone:focus,
26
- .amsterdam-link-standalone:hover {
27
- box-shadow: inset 0 -3px var(--amsterdam-color-primary-blue);
28
- text-decoration: none;
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-inline {
32
- color: var(--amsterdam-color-primary-blue);
33
- display: inline;
34
- font-size: inherit;
35
- font-weight: 400;
36
- letter-spacing: inherit;
37
- line-height: inherit;
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-inlist {
41
- font-size: calculate-fluid-style(16, 18);
42
- font-weight: 400;
43
- line-height: calculate-fluid-style(24, 26);
44
- padding-block: 12px;
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
  }
@@ -1,5 +1,16 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
6
+ @mixin reset {
7
+ box-sizing: border-box;
8
+ }
9
+
1
10
  .amsterdam-list {
2
11
  list-style: none;
3
12
  margin-block: 0;
4
13
  padding-inline: 0;
14
+
15
+ @include reset;
5
16
  }
@@ -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/)
@@ -0,0 +1,3 @@
1
+ # HTML
2
+
3
+ Gebruik altijd het `<p>` HTML-element, die heeft automatisch de goede paragraph role in de accessibility tree (dat is nodig voor WCAG eis 1.3.1). Ook is zo de tekst nog steeds goed leesbaar als de CSS niet geladen kan worden.
@@ -1,17 +1,43 @@
1
- @import "../../utils/calculate-fluid-style";
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+ @import "../../utils/breakpoint";
2
6
 
3
- .amsterdam-paragraph {
4
- font-size: calculate-fluid-style(18, 24);
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-intro {
10
- font-size: calculate-fluid-style(22, 30);
11
- line-height: calculate-fluid-style(35, 45);
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: calculate-fluid-style(16, 18);
16
- line-height: calculate-fluid-style(24, 29);
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
  }
@@ -1,5 +1,10 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2023 Gemeente Amsterdam
4
+ */
5
+
1
6
  /*
2
- The breakpoint is 820px / 16 = 51.25rems
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: 51.25rem;
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: 1920) {
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"}