@amsterdam/design-system-css 0.1.7 → 0.1.9
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/CHANGELOG.md +8 -0
- package/dist/accordion/accordion.css +1 -1
- package/dist/accordion/accordion.css.map +1 -1
- package/dist/alert/alert.css +1 -1
- package/dist/alert/alert.css.map +1 -1
- package/dist/aspect-ratio/aspect-ratio.css +1 -1
- package/dist/aspect-ratio/aspect-ratio.css.map +1 -1
- package/dist/blockquote/blockquote.css +1 -1
- package/dist/blockquote/blockquote.css.map +1 -1
- package/dist/breadcrumb/breadcrumb.css +1 -1
- package/dist/breadcrumb/breadcrumb.css.map +1 -1
- package/dist/button/button.css +1 -1
- package/dist/button/button.css.map +1 -1
- package/dist/card/card.css +1 -0
- package/dist/card/card.css.map +1 -0
- package/dist/checkbox/checkbox.css +1 -1
- package/dist/checkbox/checkbox.css.map +1 -1
- package/dist/dialog/dialog.css +1 -0
- package/dist/dialog/dialog.css.map +1 -0
- package/dist/form-label/form-label.css +1 -1
- package/dist/form-label/form-label.css.map +1 -1
- package/dist/grid/grid-cell.css +1 -1
- package/dist/grid/grid-cell.css.map +1 -1
- package/dist/grid/grid.css +1 -0
- package/dist/grid/grid.css.map +1 -0
- package/dist/heading/heading.css +1 -1
- package/dist/heading/heading.css.map +1 -1
- package/dist/highlight/highlight.css +1 -0
- package/dist/highlight/highlight.css.map +1 -0
- package/dist/icon/icon.css +1 -1
- package/dist/icon/icon.css.map +1 -1
- package/dist/image/image.css +1 -0
- package/dist/image/image.css.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/link/link.css +1 -1
- package/dist/link/link.css.map +1 -1
- package/dist/logo/logo.css +1 -0
- package/dist/logo/logo.css.map +1 -0
- package/dist/ordered-list/ordered-list.css +1 -1
- package/dist/ordered-list/ordered-list.css.map +1 -1
- package/dist/page-heading/page-heading.css +1 -1
- package/dist/page-heading/page-heading.css.map +1 -1
- package/dist/page-menu/page-menu.css +1 -1
- package/dist/page-menu/page-menu.css.map +1 -1
- package/dist/pagination/pagination.css +1 -0
- package/dist/pagination/pagination.css.map +1 -0
- package/dist/paragraph/paragraph.css +1 -1
- package/dist/paragraph/paragraph.css.map +1 -1
- package/dist/screen/screen.css +1 -0
- package/dist/screen/screen.css.map +1 -0
- package/dist/switch/switch.css +1 -0
- package/dist/switch/switch.css.map +1 -0
- package/dist/top-task-link/top-task-link.css +1 -1
- package/dist/top-task-link/top-task-link.css.map +1 -1
- package/dist/unordered-list/unordered-list.css +1 -1
- package/dist/unordered-list/unordered-list.css.map +1 -1
- package/documentation/coding-conventions.md +35 -0
- package/package.json +5 -5
- package/src/accordion/README.md +1 -1
- package/src/accordion/accordion.scss +1 -1
- package/src/alert/alert.scss +1 -1
- package/src/aspect-ratio/README.md +8 -7
- package/src/aspect-ratio/aspect-ratio.scss +8 -4
- package/src/blockquote/blockquote.scss +1 -1
- package/src/breadcrumb/breadcrumb.scss +3 -4
- package/src/button/button.scss +4 -13
- package/src/card/README.md +12 -0
- package/src/card/card.scss +56 -0
- package/src/checkbox/README.md +1 -1
- package/src/checkbox/checkbox.scss +2 -2
- package/src/dialog/README.md +23 -0
- package/src/dialog/dialog.scss +92 -0
- package/src/form-label/form-label.scss +1 -1
- package/src/grid/README.grid-cell.md +14 -0
- package/src/grid/README.grid.md +17 -0
- package/src/grid/grid-cell.scss +31 -3
- package/src/grid/grid.scss +65 -0
- package/src/heading/heading.scss +4 -4
- package/src/highlight/README.md +15 -0
- package/src/highlight/highlight.scss +36 -0
- package/src/icon/icon.scss +10 -10
- package/src/image/README.md +18 -0
- package/src/image/image.scss +16 -0
- package/src/index.scss +9 -2
- package/src/link/link.scss +22 -36
- package/src/logo/README.md +38 -0
- package/src/logo/logo.scss +20 -0
- package/src/ordered-list/ordered-list.scss +1 -1
- package/src/page-heading/page-heading.scss +1 -1
- package/src/page-menu/page-menu.scss +2 -2
- package/src/pagination/README.md +16 -0
- package/src/pagination/pagination.scss +75 -0
- package/src/paragraph/paragraph.scss +3 -3
- package/src/screen/README.md +20 -0
- package/src/screen/screen.scss +22 -0
- package/src/switch/README.md +20 -0
- package/src/switch/switch.scss +59 -0
- package/src/top-task-link/README.md +12 -7
- package/src/top-task-link/top-task-link.scss +2 -2
- package/src/unordered-list/unordered-list.scss +1 -1
- package/utils/breakpoint.scss +14 -3
- package/dist/footer/footer.css +0 -1
- package/dist/footer/footer.css.map +0 -1
- package/dist/grid/page-grid.css +0 -1
- package/dist/grid/page-grid.css.map +0 -1
- package/src/footer/footer.scss +0 -29
- package/src/grid/README.md +0 -11
- package/src/grid/page-grid.scss +0 -19
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.9",
|
|
3
3
|
"author": "Community for NL Design System",
|
|
4
4
|
"description": "CSS files for components for the City of Amsterdam based on the NL Design System architecture",
|
|
5
5
|
"license": "EUPL-1.2",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"clean": "rimraf dist/"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@amsterdam/design-system-tokens": "0.1.
|
|
23
|
-
"sass": "1.
|
|
22
|
+
"@amsterdam/design-system-tokens": "0.1.8",
|
|
23
|
+
"sass": "1.69.5"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@utrecht/components": "
|
|
26
|
+
"@utrecht/components": "2.0.0"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "930baf5f841a4a368c75a7e72e96838ce3f09c79"
|
|
29
29
|
}
|
package/src/accordion/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Het accordion component is een klikbare (verticaal gestapelde) lijst van koppen
|
|
|
14
14
|
Je kunt door een accordion navigeren met je toetsenbord:
|
|
15
15
|
|
|
16
16
|
| key | element |
|
|
17
|
-
|
|
|
17
|
+
| :------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
|
|
18
18
|
| Enter of Space | Open of sluit de accordionsectie die de focus heeft |
|
|
19
19
|
| Tab | Ga naar het volgende element dat focus kan hebben |
|
|
20
20
|
| Shift + Tab | Ga naar het volgende element dat focus kan hebben |
|
package/src/alert/alert.scss
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
font-weight: var(--amsterdam-alert-title-font-weight);
|
|
35
35
|
line-height: var(--amsterdam-alert-title-line-height);
|
|
36
36
|
|
|
37
|
-
@media screen and (width
|
|
37
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
38
38
|
font-size: var(--amsterdam-alert-title-wide-font-size);
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -4,13 +4,14 @@ Aspect Ratio (in het Nederlands: beeldverhouding) koppelt de hoogte van een elem
|
|
|
4
4
|
|
|
5
5
|
Om de vormgeving consistent te houden gebruiken we een vaste set verhoudingen (breedte:hoogte):
|
|
6
6
|
|
|
7
|
-
| _keyword_
|
|
8
|
-
|
|
|
9
|
-
| `
|
|
10
|
-
| `wide`
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
7
|
+
| _keyword_ | verhouding |
|
|
8
|
+
| :-------- | ---------: |
|
|
9
|
+
| `2x-wide` | 32:9 |
|
|
10
|
+
| `x-wide` | 16:9 |
|
|
11
|
+
| `wide` | 5:4 |
|
|
12
|
+
| `square` | 1:1 |
|
|
13
|
+
| `tall` | 4:5 |
|
|
14
|
+
| `x-tall` | 9:16 |
|
|
14
15
|
|
|
15
16
|
## Richtlijnen
|
|
16
17
|
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
position: relative;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.amsterdam-aspect-ratio--
|
|
12
|
-
aspect-ratio: var(--amsterdam-aspect-ratio-
|
|
11
|
+
.amsterdam-aspect-ratio--x-tall {
|
|
12
|
+
aspect-ratio: var(--amsterdam-aspect-ratio-x-tall);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.amsterdam-aspect-ratio--tall {
|
|
@@ -24,6 +24,10 @@
|
|
|
24
24
|
aspect-ratio: var(--amsterdam-aspect-ratio-wide);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
.amsterdam-aspect-ratio--
|
|
28
|
-
aspect-ratio: var(--amsterdam-aspect-ratio-
|
|
27
|
+
.amsterdam-aspect-ratio--x-wide {
|
|
28
|
+
aspect-ratio: var(--amsterdam-aspect-ratio-x-wide);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.amsterdam-aspect-ratio--2x-wide {
|
|
32
|
+
aspect-ratio: var(--amsterdam-aspect-ratio-2x-wide);
|
|
29
33
|
}
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
.amsterdam-breadcrumb {
|
|
16
16
|
font-family: var(--amsterdam-breadcrumb-font-family, inherit);
|
|
17
17
|
font-size: var(--amsterdam-breadcrumb-narrow-font-size);
|
|
18
|
+
font-weight: var(--amsterdam-breadcrumb-font-weight);
|
|
18
19
|
line-height: var(--amsterdam-breadcrumb-line-height);
|
|
19
20
|
|
|
20
|
-
@media screen and (width
|
|
21
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
21
22
|
font-size: var(--amsterdam-breadcrumb-wide-font-size);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -58,9 +59,7 @@
|
|
|
58
59
|
text-transform: capitalize;
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
&:
|
|
62
|
-
&:hover,
|
|
63
|
-
&:active {
|
|
62
|
+
&:hover {
|
|
64
63
|
color: var(--amsterdam-breadcrumb-item-link-hover-color);
|
|
65
64
|
text-decoration: underline;
|
|
66
65
|
text-decoration-thickness: 2px;
|
package/src/button/button.scss
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
.amsterdam-button {
|
|
14
14
|
font-size: var(--amsterdam-button-narrow-font-size);
|
|
15
15
|
|
|
16
|
-
@media screen and (width
|
|
16
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
17
17
|
font-size: var(--amsterdam-button-wide-font-size);
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -33,16 +33,7 @@
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
// This isn't currently possible with the Utrecht component
|
|
38
|
-
// We should really pull this component in our own repo...
|
|
39
|
-
.amsterdam-button--secondary.amsterdam-button--secondary {
|
|
40
|
-
&:focus {
|
|
41
|
-
color: var(--amsterdam-button-secondary-focus-color);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.amsterdam-button--secondary:focus:not(:disabled, [aria-disabled="true"]) {
|
|
36
|
+
.amsterdam-button--secondary:focus:not(:hover, [aria-disabled="true"]) {
|
|
46
37
|
box-shadow: var(--amsterdam-button-secondary-focus-box-shadow);
|
|
47
38
|
}
|
|
48
39
|
|
|
@@ -52,6 +43,6 @@
|
|
|
52
43
|
}
|
|
53
44
|
}
|
|
54
45
|
|
|
55
|
-
.amsterdam-button--tertiary:focus:not(:
|
|
56
|
-
box-shadow:
|
|
46
|
+
.amsterdam-button--tertiary:focus:not(:hover, [aria-disabled="true"]) {
|
|
47
|
+
box-shadow: none;
|
|
57
48
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Card
|
|
2
|
+
|
|
3
|
+
Gebruik een card op een overzichtspagina om te verwijzen naar een detailpagina, zoals een nieuwsbericht, een vacature of een zoekresultaat. De card bevat meestal de titel, introductie en afbeelding van de content. De link is verplicht.
|
|
4
|
+
|
|
5
|
+
## Schermlezers
|
|
6
|
+
|
|
7
|
+
Met een schermlezer kun je onder andere navigeren via headings en links in een document. De titel van een card is een link in een heading, zodat je van beide navigatiemanieren gebruik kunt maken. Een schermlezer leest eerst de titel op, daarna de rest van de inhoud.
|
|
8
|
+
|
|
9
|
+
## Richtlijnen
|
|
10
|
+
|
|
11
|
+
- De titel van een card is een link in een heading. Hier gelden dezelfde richtlijnen voor als voor reguliere [links](https://amsterdam.github.io/design-system/?path=/docs/react_navigation-link--docs) en [headings](https://amsterdam.github.io/design-system/?path=/docs/react_text-heading--docs).
|
|
12
|
+
- Een card heeft meer inhoud nodig dan alleen een titel. Vul dit aan met tekstuele en/of visuele inhoud. Als dit lastig is, kijk dan of een [top task link](https://amsterdam.github.io/design-system/?path=/docs/react_navigation-top-task-link--docs) of [reguliere link](https://amsterdam.github.io/design-system/?path=/docs/react_navigation-link--docs) beter past.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.amsterdam-card {
|
|
7
|
+
display: grid;
|
|
8
|
+
gap: 0.5rem;
|
|
9
|
+
outline-offset: var(--amsterdam-card-outline-offset);
|
|
10
|
+
position: relative;
|
|
11
|
+
touch-action: manipulation;
|
|
12
|
+
|
|
13
|
+
/* Set native outline on card if card has focus visible within */
|
|
14
|
+
&:has(:focus-visible) {
|
|
15
|
+
outline-color: -webkit-focus-ring-color;
|
|
16
|
+
outline-style: auto;
|
|
17
|
+
outline-width: 1px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
Remove link focus outline only if :has is supported,
|
|
22
|
+
which means the outline on the whole card is set
|
|
23
|
+
*/
|
|
24
|
+
&:has(:focus-visible) a:focus {
|
|
25
|
+
outline: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
This trick, together with position: relative on the outer wrapper, makes the whole card clickable.
|
|
30
|
+
Taken from https://inclusive-components.design/cards/
|
|
31
|
+
*/
|
|
32
|
+
a::after {
|
|
33
|
+
content: "";
|
|
34
|
+
display: block;
|
|
35
|
+
inset: 0;
|
|
36
|
+
position: absolute;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.amsterdam-card__heading-group {
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column-reverse;
|
|
43
|
+
gap: 0.5rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.amsterdam-card__link {
|
|
47
|
+
color: var(--amsterdam-card-link-color);
|
|
48
|
+
text-decoration: none;
|
|
49
|
+
text-decoration-thickness: 2px;
|
|
50
|
+
text-underline-offset: 3px;
|
|
51
|
+
|
|
52
|
+
&:hover {
|
|
53
|
+
color: var(--amsterdam-card-link-hover-color);
|
|
54
|
+
text-decoration: underline;
|
|
55
|
+
}
|
|
56
|
+
}
|
package/src/checkbox/README.md
CHANGED
|
@@ -24,4 +24,4 @@ Een label:
|
|
|
24
24
|
|
|
25
25
|
- [WCAG 1.3.5](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html): het is zowel voor een gebruiker als programmatisch duidelijk wat het doel van een formulierveld is.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Checkbox is een interactief element, hier gelden [de algemene eisen en richtlijnen voor interactieve elementen](https://amsterdam.github.io/design-system/?path=/docs/docs-designrichtlijnen-interactieve-elementen--docs) voor.
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
width: 100%;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
@media screen and (width
|
|
37
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
38
38
|
height: calc(var(--amsterdam-checkbox-checkmark-wide-size) * var(--amsterdam-checkbox-checkmark-multiplier));
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
@media screen and (width
|
|
68
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
69
69
|
font-size: var(--amsterdam-checkbox-wide-font-size);
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Dialog
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
|
|
7
|
+
- Use Dialog sparingly, because it interrupts the user's workflow.
|
|
8
|
+
- Use Dialog for short and non-frequent tasks. For common tasks consider using the main flow.
|
|
9
|
+
|
|
10
|
+
## Keyboard Support
|
|
11
|
+
|
|
12
|
+
| key | function |
|
|
13
|
+
| :---------- | :----------------------------------------------------------- |
|
|
14
|
+
| Tab | Moves focus to next focusable element inside the dialog. |
|
|
15
|
+
| Shift + Tab | Moves focus to previous focusable element inside the dialog. |
|
|
16
|
+
| Escape | Closes the dialog. |
|
|
17
|
+
|
|
18
|
+
## References
|
|
19
|
+
|
|
20
|
+
- [HTMLDialogElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement)
|
|
21
|
+
- [Return value](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/returnValue)
|
|
22
|
+
- [Modal & Nonmodal Dialogs: When (& When Not) to Use Them](https://www.nngroup.com/articles/modal-nonmodal-dialog/)
|
|
23
|
+
- [Patterns](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@import "../../utils/breakpoint";
|
|
7
|
+
|
|
8
|
+
.amsterdam-dialog {
|
|
9
|
+
background-color: var(--amsterdam-dialog-background-color);
|
|
10
|
+
border: var(--amsterdam-dialog-border);
|
|
11
|
+
inset: 0;
|
|
12
|
+
max-inline-size: var(--amsterdam-dialog-max-inline-size);
|
|
13
|
+
padding-block: 0;
|
|
14
|
+
padding-inline: 0;
|
|
15
|
+
position: fixed;
|
|
16
|
+
|
|
17
|
+
/* no token because dialog does not inherit from any element */
|
|
18
|
+
&::backdrop {
|
|
19
|
+
background: #0006;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.amsterdam-dialog__form {
|
|
24
|
+
display: grid;
|
|
25
|
+
gap: var(--amsterdam-dialog-form-gap);
|
|
26
|
+
grid-template-rows: auto 1fr auto;
|
|
27
|
+
max-block-size: var(--amsterdam-dialog-form-max-block-size);
|
|
28
|
+
padding-block: var(--amsterdam-dialog-form-padding-block);
|
|
29
|
+
padding-inline: var(--amsterdam-dialog-form-padding-inline);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.amsterdam-dialog__article {
|
|
33
|
+
display: grid;
|
|
34
|
+
gap: 1.5rem; /* Until we have a consistent way of spacing text elements */
|
|
35
|
+
max-block-size: 100%; /* safari */
|
|
36
|
+
overflow-y: auto;
|
|
37
|
+
overscroll-behavior-y: contain;
|
|
38
|
+
padding-inline-end: var(--amsterdam-dialog-article-padding-inline-end);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.amsterdam-dialog__header {
|
|
42
|
+
align-items: flex-start;
|
|
43
|
+
display: flex;
|
|
44
|
+
gap: var(--amsterdam-dialog-header-gap);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@mixin reset {
|
|
48
|
+
-webkit-text-size-adjust: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.amsterdam-dialog__title {
|
|
52
|
+
color: var(--amsterdam-dialog-title-color);
|
|
53
|
+
flex: auto;
|
|
54
|
+
font-family: var(--amsterdam-dialog-title-font-family);
|
|
55
|
+
font-size: var(--amsterdam-dialog-title-narrow-font-size);
|
|
56
|
+
font-weight: var(--amsterdam-dialog-title-font-weight);
|
|
57
|
+
line-height: var(--amsterdam-dialog-title-line-height);
|
|
58
|
+
|
|
59
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
60
|
+
font-size: var(--amsterdam-dialog-title-wide-font-size);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@include reset;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.amsterdam-dialog__footer {
|
|
67
|
+
display: flex;
|
|
68
|
+
flex-direction: column;
|
|
69
|
+
grid-gap: var(--amsterdam-dialog-footer-gap);
|
|
70
|
+
padding-block: var(--amsterdam-dialog-footer-padding-block);
|
|
71
|
+
|
|
72
|
+
@media screen and (min-width: $amsterdam-breakpoint-medium) {
|
|
73
|
+
flex-direction: row;
|
|
74
|
+
justify-content: end;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.amsterdam-dialog__close {
|
|
79
|
+
background-color: var(--amsterdam-dialog-close-background-color);
|
|
80
|
+
border: 0;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
padding-block: 0;
|
|
83
|
+
padding-inline: 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.amsterdam-dialog__close svg {
|
|
87
|
+
fill: var(--amsterdam-dialog-close-fill);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.amsterdam-dialog__close:hover svg {
|
|
91
|
+
fill: var(--amsterdam-dialog-close-hover-fill);
|
|
92
|
+
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
font-weight: var(--amsterdam-form-label-font-weight);
|
|
17
17
|
line-height: var(--amsterdam-form-label-line-height);
|
|
18
18
|
|
|
19
|
-
@media screen and (width
|
|
19
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
20
20
|
font-size: var(--amsterdam-form-label-wide-font-size);
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Grid cell
|
|
2
|
+
|
|
3
|
+
Beslaat een aantal kolommen in een [Grid](?path=/docs/react_layout-grid--docs).
|
|
4
|
+
|
|
5
|
+
## Gebruik
|
|
6
|
+
|
|
7
|
+
Verdeel hiermee een grid in cellen.
|
|
8
|
+
Geef aan hoeveel kolommen van het grid de cel beslaat.
|
|
9
|
+
Dat aantal kan variëren voor smalle, middelbrede of brede schermen.
|
|
10
|
+
In elke cel plaats je vervolgens de gewenste inhoud.
|
|
11
|
+
|
|
12
|
+
## Ontwerp
|
|
13
|
+
|
|
14
|
+
De [ontwerpkeuzes](?path=/docs/docs-designrichtlijnen-grid--docs) staan beschreven onder de designrichtlijnen.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Grid
|
|
2
|
+
|
|
3
|
+
Levert een tweedimensionaal raster waarop alle elementen van een pagina uitgelijnd worden.
|
|
4
|
+
|
|
5
|
+
## Gebruik
|
|
6
|
+
|
|
7
|
+
Elke pagina moet het grid gebruiken als basis voor de layout, dus direct binnen [Screen](?path=/docs/layout-screen--docs).
|
|
8
|
+
|
|
9
|
+
Een [Footer](?path=/docs/react_containers-footer--docs) en een [Highlight](?path=/docs/react_containers-highlight--docs) zijn iets breder dan het grid.
|
|
10
|
+
Daarom wordt in HTML vóór deze componenten een instantie van Grid afgesloten en erbinnen een nieuwe geopend.
|
|
11
|
+
|
|
12
|
+
Meerdere instanties van dit component zijn dus mogelijk op een pagina.
|
|
13
|
+
Visueel moeten ze wel allemaal op elkaar aansluiten.
|
|
14
|
+
|
|
15
|
+
## Ontwerp
|
|
16
|
+
|
|
17
|
+
De [ontwerpkeuzes](?path=/docs/docs-designrichtlijnen-grid--docs) staan beschreven onder de designrichtlijnen.
|
package/src/grid/grid-cell.scss
CHANGED
|
@@ -5,14 +5,42 @@
|
|
|
5
5
|
|
|
6
6
|
@import "../../utils/breakpoint";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
.amsterdam-grid-cell--full-width {
|
|
9
|
+
grid-column: 1 / -1;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// The order of the following declaration blocks ensures the intended specificity.
|
|
13
|
+
|
|
14
|
+
@for $i from 1 through 12 {
|
|
15
|
+
.amsterdam-grid-cell--span-#{$i} {
|
|
16
|
+
grid-column-end: span $i;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.amsterdam-grid-cell--start-#{$i} {
|
|
20
|
+
grid-column-start: $i;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@media screen and (min-width: $amsterdam-breakpoint-medium) {
|
|
9
25
|
@for $i from 1 through 12 {
|
|
10
|
-
.amsterdam-grid-
|
|
26
|
+
.amsterdam-grid-cell--span-#{$i}-medium {
|
|
27
|
+
grid-column-end: span $i;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.amsterdam-grid-cell--start-#{$i}-medium {
|
|
11
31
|
grid-column-start: $i;
|
|
12
32
|
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
13
35
|
|
|
14
|
-
|
|
36
|
+
@media screen and (min-width: $amsterdam-breakpoint-wide) {
|
|
37
|
+
@for $i from 1 through 12 {
|
|
38
|
+
.amsterdam-grid-cell--span-#{$i}-wide {
|
|
15
39
|
grid-column-end: span $i;
|
|
16
40
|
}
|
|
41
|
+
|
|
42
|
+
.amsterdam-grid-cell--start-#{$i}-wide {
|
|
43
|
+
grid-column-start: $i;
|
|
44
|
+
}
|
|
17
45
|
}
|
|
18
46
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@import "../../utils/breakpoint";
|
|
7
|
+
|
|
8
|
+
.amsterdam-grid {
|
|
9
|
+
--amsterdam-grid-gap: var(--amsterdam-grid-density-low-gap);
|
|
10
|
+
--amsterdam-grid-padding-inline: var(--amsterdam-grid-density-low-padding-inline);
|
|
11
|
+
|
|
12
|
+
display: grid;
|
|
13
|
+
gap: var(--amsterdam-grid-gap);
|
|
14
|
+
grid-template-columns: repeat(var(--amsterdam-grid-column-count), 1fr);
|
|
15
|
+
padding-inline: var(--amsterdam-grid-padding-inline);
|
|
16
|
+
|
|
17
|
+
@media screen and (min-width: $amsterdam-breakpoint-medium) {
|
|
18
|
+
grid-template-columns: repeat(var(--amsterdam-grid-medium-column-count), 1fr);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media screen and (min-width: $amsterdam-breakpoint-wide) {
|
|
22
|
+
grid-template-columns: repeat(var(--amsterdam-grid-wide-column-count), 1fr);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.amsterdam-grid--density-high {
|
|
27
|
+
--amsterdam-grid-gap: var(--amsterdam-grid-density-high-gap);
|
|
28
|
+
--amsterdam-grid-padding-inline: var(--amsterdam-grid-density-high-padding-inline);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.amsterdam-grid--padding-bottom--small {
|
|
32
|
+
padding-block-end: calc(var(--amsterdam-grid-gap) / 2);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.amsterdam-grid--padding-bottom--medium {
|
|
36
|
+
padding-block-end: var(--amsterdam-grid-gap);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.amsterdam-grid--padding-bottom--large {
|
|
40
|
+
padding-block-end: calc(var(--amsterdam-grid-gap) * 2);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.amsterdam-grid--padding-top--small {
|
|
44
|
+
padding-block-start: calc(var(--amsterdam-grid-gap) / 2);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.amsterdam-grid--padding-top--medium {
|
|
48
|
+
padding-block-start: var(--amsterdam-grid-gap);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.amsterdam-grid--padding-top--large {
|
|
52
|
+
padding-block-start: calc(var(--amsterdam-grid-gap) * 2);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.amsterdam-grid--padding-vertical--small {
|
|
56
|
+
padding-block: calc(var(--amsterdam-grid-gap) / 2);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.amsterdam-grid--padding-vertical--medium {
|
|
60
|
+
padding-block: var(--amsterdam-grid-gap);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.amsterdam-grid--padding-vertical--large {
|
|
64
|
+
padding-block: calc(var(--amsterdam-grid-gap) * 2);
|
|
65
|
+
}
|
package/src/heading/heading.scss
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
font-size: var(--amsterdam-heading-1-narrow-font-size);
|
|
26
26
|
line-height: var(--amsterdam-heading-1-line-height);
|
|
27
27
|
|
|
28
|
-
@media screen and (width
|
|
28
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
29
29
|
font-size: var(--amsterdam-heading-1-wide-font-size);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
font-size: var(--amsterdam-heading-2-narrow-font-size);
|
|
35
35
|
line-height: var(--amsterdam-heading-2-line-height);
|
|
36
36
|
|
|
37
|
-
@media screen and (width
|
|
37
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
38
38
|
font-size: var(--amsterdam-heading-2-wide-font-size);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
font-size: var(--amsterdam-heading-3-narrow-font-size);
|
|
44
44
|
line-height: var(--amsterdam-heading-3-line-height);
|
|
45
45
|
|
|
46
|
-
@media screen and (width
|
|
46
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
47
47
|
font-size: var(--amsterdam-heading-3-wide-font-size);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
font-size: var(--amsterdam-heading-4-narrow-font-size);
|
|
53
53
|
line-height: var(--amsterdam-heading-4-line-height);
|
|
54
54
|
|
|
55
|
-
@media screen and (width
|
|
55
|
+
@media screen and (min-width: $amsterdam-breakpoint-typography) {
|
|
56
56
|
font-size: var(--amsterdam-heading-4-wide-font-size);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Highlight
|
|
2
|
+
|
|
3
|
+
Benadrukt een sectie op een pagina middels een opvallende achtergrondkleur.
|
|
4
|
+
|
|
5
|
+
## Richtlijnen
|
|
6
|
+
|
|
7
|
+
Raadpleeg [dit overzicht op Stijlweb](https://amsterdam.nl/stijlweb/basiselementen/kleuren/#PagCls_15671872) om na te gaan of je zwarte of witte tekst kunt gebruiken op de achtergrondkleur van je keuze.
|
|
8
|
+
|
|
9
|
+
## Relevante WCAG eisen
|
|
10
|
+
|
|
11
|
+
- [WCAG 1.4.3](https://www.w3.org/TR/WCAG21/#contrast-minimum): Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;
|
|
12
|
+
|
|
13
|
+
## Referenties
|
|
14
|
+
|
|
15
|
+
- [Color and contrast accessibility](https://web.dev/articles/color-and-contrast-accessibility)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright (c) 2023 Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.amsterdam-highlight--blue {
|
|
7
|
+
background-color: var(--amsterdam-highlight-blue-background-color);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.amsterdam-highlight--dark-green {
|
|
11
|
+
background-color: var(--amsterdam-highlight-dark-green-background-color);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.amsterdam-highlight--green {
|
|
15
|
+
background-color: var(--amsterdam-highlight-green-background-color);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.amsterdam-highlight--light-blue {
|
|
19
|
+
background-color: var(--amsterdam-highlight-light-blue-background-color);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.amsterdam-highlight--magenta {
|
|
23
|
+
background-color: var(--amsterdam-highlight-magenta-background-color);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.amsterdam-highlight--orange {
|
|
27
|
+
background-color: var(--amsterdam-highlight-orange-background-color);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.amsterdam-highlight--purple {
|
|
31
|
+
background-color: var(--amsterdam-highlight-purple-background-color);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.amsterdam-highlight--yellow {
|
|
35
|
+
background-color: var(--amsterdam-highlight-yellow-background-color);
|
|
36
|
+
}
|