@amsterdam/design-system-css 0.15.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +1 -1
  3. package/dist/accordion/accordion.css +1 -1
  4. package/dist/accordion/accordion.css.map +1 -1
  5. package/dist/alert/alert.css +1 -1
  6. package/dist/alert/alert.css.map +1 -1
  7. package/dist/avatar/avatar.css +1 -1
  8. package/dist/avatar/avatar.css.map +1 -1
  9. package/dist/breakout/breakout.css +1 -1
  10. package/dist/breakout/breakout.css.map +1 -1
  11. package/dist/button/button.css +1 -1
  12. package/dist/button/button.css.map +1 -1
  13. package/dist/card/card.css +1 -1
  14. package/dist/card/card.css.map +1 -1
  15. package/dist/checkbox/checkbox.css +1 -1
  16. package/dist/checkbox/checkbox.css.map +1 -1
  17. package/dist/date-input/date-input.css +1 -1
  18. package/dist/date-input/date-input.css.map +1 -1
  19. package/dist/dialog/dialog.css +1 -1
  20. package/dist/dialog/dialog.css.map +1 -1
  21. package/dist/field-set/field-set.css +1 -1
  22. package/dist/field-set/field-set.css.map +1 -1
  23. package/dist/file-input/file-input.css +1 -1
  24. package/dist/file-input/file-input.css.map +1 -1
  25. package/dist/grid/grid.css +1 -1
  26. package/dist/grid/grid.css.map +1 -1
  27. package/dist/heading/heading.css +1 -1
  28. package/dist/heading/heading.css.map +1 -1
  29. package/dist/hint/hint.css +1 -1
  30. package/dist/hint/hint.css.map +1 -1
  31. package/dist/icon/icon.css +1 -1
  32. package/dist/icon/icon.css.map +1 -1
  33. package/dist/image/image.css +1 -1
  34. package/dist/image/image.css.map +1 -1
  35. package/dist/index.css +1 -1
  36. package/dist/index.css.map +1 -1
  37. package/dist/invalid-form-alert/invalid-form-alert.css.map +1 -1
  38. package/dist/label/label.css +1 -1
  39. package/dist/label/label.css.map +1 -1
  40. package/dist/link/link.css +1 -1
  41. package/dist/link/link.css.map +1 -1
  42. package/dist/page/page.css +1 -0
  43. package/dist/page/page.css.map +1 -0
  44. package/dist/page-footer/page-footer.css +1 -0
  45. package/dist/page-footer/page-footer.css.map +1 -0
  46. package/dist/page-header/page-header.css +1 -0
  47. package/dist/page-header/page-header.css.map +1 -0
  48. package/dist/page-heading/page-heading.css +1 -1
  49. package/dist/page-heading/page-heading.css.map +1 -1
  50. package/dist/password-input/password-input.css +1 -1
  51. package/dist/password-input/password-input.css.map +1 -1
  52. package/dist/radio/radio.css +1 -1
  53. package/dist/radio/radio.css.map +1 -1
  54. package/dist/search-field/search-field.css +1 -1
  55. package/dist/search-field/search-field.css.map +1 -1
  56. package/dist/select/select.css +1 -1
  57. package/dist/select/select.css.map +1 -1
  58. package/dist/standalone-link/standalone-link.css +1 -0
  59. package/dist/standalone-link/standalone-link.css.map +1 -0
  60. package/dist/switch/switch.css +1 -1
  61. package/dist/switch/switch.css.map +1 -1
  62. package/dist/text-area/text-area.css +1 -1
  63. package/dist/text-area/text-area.css.map +1 -1
  64. package/dist/text-input/text-input.css +1 -1
  65. package/dist/text-input/text-input.css.map +1 -1
  66. package/dist/time-input/time-input.css +1 -1
  67. package/dist/time-input/time-input.css.map +1 -1
  68. package/dist/visually-hidden/visually-hidden.css +1 -1
  69. package/dist/visually-hidden/visually-hidden.css.map +1 -1
  70. package/package.json +4 -4
  71. package/src/components/accordion/accordion.scss +1 -0
  72. package/src/components/alert/README.md +1 -1
  73. package/src/components/alert/alert.scss +6 -9
  74. package/src/components/aspect-ratio/README.md +1 -0
  75. package/src/components/avatar/avatar.scss +14 -10
  76. package/src/components/breakout/breakout.scss +19 -19
  77. package/src/components/button/README.md +6 -6
  78. package/src/components/button/button.scss +7 -18
  79. package/src/components/card/README.md +15 -14
  80. package/src/components/card/card.scss +9 -1
  81. package/src/components/checkbox/checkbox.scss +229 -125
  82. package/src/components/date-input/date-input.scss +9 -9
  83. package/src/components/dialog/README.md +3 -5
  84. package/src/components/dialog/dialog.scss +24 -1
  85. package/src/components/field-set/field-set.scss +7 -6
  86. package/src/components/file-input/file-input.scss +6 -10
  87. package/src/components/grid/README.md +9 -8
  88. package/src/components/grid/_mixins.scss +22 -22
  89. package/src/components/grid/grid.scss +19 -19
  90. package/src/components/heading/heading.scss +1 -0
  91. package/src/components/hint/hint.scss +1 -1
  92. package/src/components/icon/icon.scss +2 -1
  93. package/src/components/icon-button/README.md +6 -5
  94. package/src/components/image/image.scss +1 -2
  95. package/src/components/image-slider/README.md +1 -1
  96. package/src/components/index.scss +4 -6
  97. package/src/components/invalid-form-alert/invalid-form-alert.scss +5 -0
  98. package/src/components/label/label.scss +1 -0
  99. package/src/components/link/README.md +9 -10
  100. package/src/components/link/link.scss +6 -28
  101. package/src/components/logo/README.md +1 -1
  102. package/src/components/page/README.md +23 -0
  103. package/src/components/page/page.scss +12 -0
  104. package/src/components/{footer → page-footer}/README.md +7 -5
  105. package/src/components/page-footer/page-footer.scss +56 -0
  106. package/src/components/{header → page-header}/README.md +5 -5
  107. package/src/components/{header/header.scss → page-header/page-header.scss} +74 -57
  108. package/src/components/page-heading/README.md +1 -1
  109. package/src/components/page-heading/page-heading.scss +1 -0
  110. package/src/components/password-input/password-input.scss +13 -9
  111. package/src/components/radio/radio.scss +6 -4
  112. package/src/components/search-field/search-field.scss +5 -3
  113. package/src/components/select/select.scss +14 -8
  114. package/src/components/skip-link/README.md +3 -3
  115. package/src/components/spotlight/README.md +2 -3
  116. package/src/components/standalone-link/README.md +11 -0
  117. package/src/components/standalone-link/standalone-link.scss +53 -0
  118. package/src/components/switch/switch.scss +1 -1
  119. package/src/components/tabs/README.md +1 -1
  120. package/src/components/text-area/text-area.scss +9 -9
  121. package/src/components/text-input/text-input.scss +13 -9
  122. package/src/components/time-input/time-input.scss +9 -9
  123. package/src/components/visually-hidden/visually-hidden.scss +1 -0
  124. package/dist/footer/footer.css +0 -1
  125. package/dist/footer/footer.css.map +0 -1
  126. package/dist/header/header.css +0 -1
  127. package/dist/header/header.css.map +0 -1
  128. package/dist/mega-menu/mega-menu.css +0 -1
  129. package/dist/mega-menu/mega-menu.css.map +0 -1
  130. package/dist/page-menu/page-menu.css +0 -1
  131. package/dist/page-menu/page-menu.css.map +0 -1
  132. package/dist/screen/screen.css +0 -1
  133. package/dist/screen/screen.css.map +0 -1
  134. package/dist/top-task-link/top-task-link.css +0 -1
  135. package/dist/top-task-link/top-task-link.css.map +0 -1
  136. package/src/components/footer/footer.scss +0 -47
  137. package/src/components/mega-menu/README.md +0 -3
  138. package/src/components/mega-menu/mega-menu.scss +0 -16
  139. package/src/components/page-menu/README.md +0 -24
  140. package/src/components/page-menu/page-menu.scss +0 -65
  141. package/src/components/screen/README.md +0 -23
  142. package/src/components/screen/screen.scss +0 -23
  143. package/src/components/top-task-link/README.md +0 -27
  144. package/src/components/top-task-link/top-task-link.scss +0 -45
@@ -6,13 +6,14 @@
6
6
  @use "../../common/text-rendering" as *;
7
7
 
8
8
  @mixin reset-button {
9
- border: none;
10
9
  border-radius: 0; // Reset rounded borders on iOS devices
11
10
  }
12
11
 
13
12
  .ams-file-input {
14
13
  background-color: var(--ams-file-input-background-color);
15
- border: var(--ams-file-input-border);
14
+ border-color: var(--ams-file-input-border-color);
15
+ border-style: var(--ams-file-input-border-style);
16
+ border-width: var(--ams-file-input-border-width);
16
17
  box-sizing: border-box;
17
18
  color: var(--ams-file-input-color);
18
19
  cursor: var(--ams-file-input-cursor);
@@ -38,7 +39,9 @@
38
39
  -webkit-appearance: none; // Reset appearance for Safari < 15.4
39
40
  appearance: none; // Reset native appearance, this causes issues on iOS and Android devices
40
41
  background-color: var(--ams-file-input-file-selector-button-background-color);
41
- box-shadow: var(--ams-file-input-file-selector-button-box-shadow);
42
+ border-color: var(--ams-file-input-file-selector-button-border-color);
43
+ border-style: var(--ams-file-input-file-selector-button-border-style);
44
+ border-width: var(--ams-file-input-file-selector-button-border-width);
42
45
  box-sizing: border-box;
43
46
  color: var(--ams-file-input-file-selector-button-color);
44
47
  cursor: var(--ams-file-input-file-selector-button-cursor);
@@ -50,16 +53,9 @@
50
53
  padding-inline: var(--ams-file-input-file-selector-button-padding-inline);
51
54
 
52
55
  @include reset-button;
53
-
54
- @media screen and (-ms-high-contrast: active), screen and (forced-colors: active) {
55
- border: var(
56
- --ams-file-input-file-selector-button-forced-color-mode-border
57
- ); // add border because forced colors changes box-shadow to none
58
- }
59
56
  }
60
57
 
61
58
  .ams-file-input:disabled::file-selector-button {
62
- box-shadow: var(--ams-file-input-file-selector-button-disabled-box-shadow);
63
59
  color: var(--ams-file-input-disabled-color);
64
60
  cursor: var(--ams-file-input-file-selector-button-disabled-cursor);
65
61
  }
@@ -6,14 +6,15 @@ Divides the screen into columns to align the elements of a page.
6
6
 
7
7
  ## Guidelines
8
8
 
9
- - Every page should use the grid as the foundation for its layout.
10
- It is placed directly within the [Screen](/docs/components-layout-screen--docs).
11
- - A [Footer](/docs/components-containers-footer--docs) and a [Spotlight](/docs/components-containers-spotlight--docs) are slightly wider than the grid.
12
- You close one instance of the grid before these components.
13
- Inside and optionally after them, you start a new one.
14
- Multiple instances of the grid component are possible on a page, but the columns of all grids must align precisely.
15
- - Within the grid, you create cells containing the desired content.
16
- A cell often spans multiple columns of the grid.
9
+ - Every page uses the Grid component as the foundation for its layout.
10
+ It is a direct child of the [Page](/docs/components-containers-page--docs) container.
11
+ - The Grid provides 4, 8, or 12 columns, depending on the width of the window.
12
+ - Its children are `Grid.Cell` components that define how many columns they span, and optionally where they start.
13
+ Both its `span` and `start` properties accept a single value, or separate values for the narrow, medium and wide variations of the Grid.
14
+ - A single page can have several Grids.
15
+ This allows mixing a Grid with a [Spotlight](/docs/components-containers-spotlight--docs), [Breakout](/docs/components-layout-breakout--docs) or full width [Image](/docs/components-media-image--docs) which ‘bleed out’ of the main layout.
16
+ - Grids must not be nested.
17
+ The component is currently intended for the full width of the page only.
17
18
  - The Gap utility classes must not be used on the Grid component.
18
19
 
19
20
  ## Design
@@ -1,16 +1,16 @@
1
- @use "../../common/breakpoint" as *;
2
-
3
1
  /**
4
2
  * @license EUPL-1.2+
5
3
  * Copyright Gemeente Amsterdam
6
4
  */
7
5
 
6
+ @use "../../common/breakpoint" as *;
7
+
8
8
  @mixin ams-grid {
9
9
  column-gap: var(--ams-grid-column-gap);
10
10
  display: grid;
11
11
  grid-template-columns: repeat(var(--ams-grid-column-count), 1fr);
12
12
  padding-inline: var(--ams-grid-padding-inline);
13
- row-gap: var(--ams-grid-row-gap-m);
13
+ row-gap: var(--ams-grid-row-gap-xl);
14
14
 
15
15
  @media screen and (min-width: $ams-breakpoint-medium) {
16
16
  grid-template-columns: repeat(var(--ams-grid-medium-column-count), 1fr);
@@ -29,52 +29,52 @@
29
29
  row-gap: initial;
30
30
  }
31
31
 
32
- @mixin ams-grid--gap-vertical--small {
33
- row-gap: var(--ams-grid-row-gap-s);
34
- }
35
-
36
32
  @mixin ams-grid--gap-vertical--large {
37
33
  row-gap: var(--ams-grid-row-gap-l);
38
34
  }
39
35
 
40
- // Grid padding
41
-
42
- @mixin ams-grid--padding-bottom--small {
43
- padding-block-end: var(--ams-grid-padding-block-s);
36
+ @mixin ams-grid--gap-vertical--2x-large {
37
+ row-gap: var(--ams-grid-row-gap-2xl);
44
38
  }
45
39
 
46
- @mixin ams-grid--padding-bottom--medium {
47
- padding-block-end: var(--ams-grid-padding-block-m);
48
- }
40
+ // Grid padding
49
41
 
50
42
  @mixin ams-grid--padding-bottom--large {
51
43
  padding-block-end: var(--ams-grid-padding-block-l);
52
44
  }
53
45
 
54
- @mixin ams-grid--padding-top--small {
55
- padding-block-start: var(--ams-grid-padding-block-s);
46
+ @mixin ams-grid--padding-bottom--x-large {
47
+ padding-block-end: var(--ams-grid-padding-block-xl);
56
48
  }
57
49
 
58
- @mixin ams-grid--padding-top--medium {
59
- padding-block-start: var(--ams-grid-padding-block-m);
50
+ @mixin ams-grid--padding-bottom--2x-large {
51
+ padding-block-end: var(--ams-grid-padding-block-2xl);
60
52
  }
61
53
 
62
54
  @mixin ams-grid--padding-top--large {
63
55
  padding-block-start: var(--ams-grid-padding-block-l);
64
56
  }
65
57
 
66
- @mixin ams-grid--padding-vertical--small {
67
- padding-block: var(--ams-grid-padding-block-s);
58
+ @mixin ams-grid--padding-top--x-large {
59
+ padding-block-start: var(--ams-grid-padding-block-xl);
68
60
  }
69
61
 
70
- @mixin ams-grid--padding-vertical--medium {
71
- padding-block: var(--ams-grid-padding-block-m);
62
+ @mixin ams-grid--padding-top--2x-large {
63
+ padding-block-start: var(--ams-grid-padding-block-2xl);
72
64
  }
73
65
 
74
66
  @mixin ams-grid--padding-vertical--large {
75
67
  padding-block: var(--ams-grid-padding-block-l);
76
68
  }
77
69
 
70
+ @mixin ams-grid--padding-vertical--x-large {
71
+ padding-block: var(--ams-grid-padding-block-xl);
72
+ }
73
+
74
+ @mixin ams-grid--padding-vertical--2x-large {
75
+ padding-block: var(--ams-grid-padding-block-2xl);
76
+ }
77
+
78
78
  @mixin ams-grid__cell--span-all {
79
79
  grid-column: 1 / -1;
80
80
  }
@@ -18,52 +18,52 @@ $ams-grid-column-count: 12;
18
18
  @include ams-grid--gap-vertical--none;
19
19
  }
20
20
 
21
- .ams-grid--gap-vertical--small {
22
- @include ams-grid--gap-vertical--small;
23
- }
24
-
25
21
  .ams-grid--gap-vertical--large {
26
22
  @include ams-grid--gap-vertical--large;
27
23
  }
28
24
 
29
- // Grid padding
30
-
31
- .ams-grid--padding-bottom--small {
32
- @include ams-grid--padding-bottom--small;
25
+ .ams-grid--gap-vertical--2x-large {
26
+ @include ams-grid--gap-vertical--2x-large;
33
27
  }
34
28
 
35
- .ams-grid--padding-bottom--medium {
36
- @include ams-grid--padding-bottom--medium;
37
- }
29
+ // Grid padding
38
30
 
39
31
  .ams-grid--padding-bottom--large {
40
32
  @include ams-grid--padding-bottom--large;
41
33
  }
42
34
 
43
- .ams-grid--padding-top--small {
44
- @include ams-grid--padding-top--small;
35
+ .ams-grid--padding-bottom--x-large {
36
+ @include ams-grid--padding-bottom--x-large;
45
37
  }
46
38
 
47
- .ams-grid--padding-top--medium {
48
- @include ams-grid--padding-top--medium;
39
+ .ams-grid--padding-bottom--2x-large {
40
+ @include ams-grid--padding-bottom--2x-large;
49
41
  }
50
42
 
51
43
  .ams-grid--padding-top--large {
52
44
  @include ams-grid--padding-top--large;
53
45
  }
54
46
 
55
- .ams-grid--padding-vertical--small {
56
- @include ams-grid--padding-vertical--small;
47
+ .ams-grid--padding-top--x-large {
48
+ @include ams-grid--padding-top--x-large;
57
49
  }
58
50
 
59
- .ams-grid--padding-vertical--medium {
60
- @include ams-grid--padding-vertical--medium;
51
+ .ams-grid--padding-top--2x-large {
52
+ @include ams-grid--padding-top--2x-large;
61
53
  }
62
54
 
63
55
  .ams-grid--padding-vertical--large {
64
56
  @include ams-grid--padding-vertical--large;
65
57
  }
66
58
 
59
+ .ams-grid--padding-vertical--x-large {
60
+ @include ams-grid--padding-vertical--x-large;
61
+ }
62
+
63
+ .ams-grid--padding-vertical--2x-large {
64
+ @include ams-grid--padding-vertical--2x-large;
65
+ }
66
+
67
67
  // Column span
68
68
  // The order of these declaration blocks ensures the intended specificity.
69
69
 
@@ -17,6 +17,7 @@
17
17
  color: var(--ams-heading-color);
18
18
  font-family: var(--ams-heading-font-family);
19
19
  font-weight: var(--ams-heading-font-weight);
20
+ text-wrap: var(--ams-heading-text-wrap);
20
21
 
21
22
  @include hyphenation;
22
23
  @include text-rendering;
@@ -4,6 +4,6 @@
4
4
  */
5
5
 
6
6
  .ams-hint {
7
- color: var(--ams-hint-color);
8
7
  display: inline-block;
8
+ font-weight: var(--ams-hint-font-weight);
9
9
  }
@@ -6,8 +6,9 @@
6
6
  .ams-icon {
7
7
  --ams-line-height: var(--ams-icon-line-height);
8
8
 
9
+ align-items: center;
9
10
  align-self: baseline; // Aligns the icon with text in flex or grid context
10
- display: inline-flex; // Stretches the svg in order to align the icon vertically
11
+ display: inline-flex;
11
12
  font-size: var(--ams-icon-font-size);
12
13
  line-height: var(--ams-line-height);
13
14
 
@@ -2,14 +2,15 @@
2
2
 
3
3
  # Icon Button
4
4
 
5
- A button containing only an icon.
5
+ An icon in a button that can be aligned with text.
6
6
 
7
7
  ## Guidelines
8
8
 
9
- - Use this button only if the icon is entirely clear and understandable.
10
- Many icons are interpreted differently by different users.
11
- Only use universally recognized icons, such as a close icon or a play icon.
12
- - Provide a label text that describes what the button does for screen reader users.
9
+ - Choose an Icon Button instead of a regular Button if it must align with text.
10
+ Match the size of the Icon Button to that text.
11
+ - Only [functional icons](https://designsystem.amsterdam/?path=/docs/brand-assets-icons--docs#functional-icons) can be used in an Icon Button.
12
+ For other icons, use a [Button](https://designsystem.amsterdam/?path=/docs/components-buttons-button--docs) to allow the user to read its label.
13
+ - Icon Button still needs a label to describe the button to users of screen readers.
13
14
 
14
15
  ## Relevant WCAG requirements
15
16
 
@@ -7,8 +7,7 @@
7
7
  aspect-ratio: var(--ams-image-aspect-ratio);
8
8
  block-size: auto; /* [1] */
9
9
  font-style: italic; /* [3] */
10
- inline-size: fit-content;
11
- max-inline-size: 100%; /* [1] */
10
+ inline-size: 100%; /* [1] */
12
11
  object-fit: cover; /* [4] */
13
12
  vertical-align: middle; /* [2] */
14
13
  }
@@ -19,7 +19,7 @@ The images do not slide automatically.
19
19
  - Feature the most essential image first.
20
20
  - Assume that some or many users will not navigate between the slides and only see the first image.
21
21
  Display all images separately if you want each of them to receive attention.
22
- - A full-width Image Slider should run from one edge of the Screen to the other;
22
+ - A full-width Image Slider should run from one edge of the [Page](/docs/components-containers-page--docs) container to the other;
23
23
  position it next to a Grid, not in a Cell spanning all columns.
24
24
  Smaller sliders are fine in a Grid Cell.
25
25
  - Consult the [Image](/docs/components-media-image--docs) docs for guidelines on the individual images.
@@ -28,10 +28,8 @@
28
28
  @use "figure/figure";
29
29
  @use "file-input/file-input";
30
30
  @use "file-list/file-list";
31
- @use "footer/footer";
32
31
  @use "gap/gap";
33
32
  @use "grid/grid";
34
- @use "header/header";
35
33
  @use "heading/heading";
36
34
  @use "hint/hint";
37
35
  @use "icon-button/icon-button";
@@ -45,21 +43,22 @@
45
43
  @use "logo/logo";
46
44
  @use "margin/margin";
47
45
  @use "mark/mark";
48
- @use "mega-menu/mega-menu";
49
46
  @use "ordered-list/ordered-list";
50
47
  @use "overlap/overlap";
48
+ @use "page/page";
49
+ @use "page-footer/page-footer";
50
+ @use "page-header/page-header";
51
51
  @use "page-heading/page-heading";
52
- @use "page-menu/page-menu";
53
52
  @use "pagination/pagination";
54
53
  @use "paragraph/paragraph";
55
54
  @use "password-input/password-input";
56
55
  @use "radio/radio";
57
56
  @use "row/row";
58
- @use "screen/screen";
59
57
  @use "search-field/search-field";
60
58
  @use "select/select";
61
59
  @use "skip-link/skip-link";
62
60
  @use "spotlight/spotlight";
61
+ @use "standalone-link/standalone-link";
63
62
  @use "switch/switch";
64
63
  @use "table-of-contents/table-of-contents";
65
64
  @use "table/table";
@@ -67,6 +66,5 @@
67
66
  @use "text-area/text-area";
68
67
  @use "text-input/text-input";
69
68
  @use "time-input/time-input";
70
- @use "top-task-link/top-task-link";
71
69
  @use "unordered-list/unordered-list";
72
70
  @use "visually-hidden/visually-hidden";
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
1
6
  .ams-invalid-form-alert {
2
7
  outline-offset: var(--ams-invalid-form-alert-outline-offset);
3
8
 
@@ -12,6 +12,7 @@
12
12
  font-size: var(--ams-label-font-size);
13
13
  font-weight: var(--ams-label-font-weight);
14
14
  line-height: var(--ams-label-line-height);
15
+ text-wrap: var(--ams-label-text-wrap);
15
16
 
16
17
  @include hyphenation;
17
18
  @include text-rendering;
@@ -7,16 +7,15 @@ It is the lightweight variant for navigation.
7
7
 
8
8
  ## Guidelines
9
9
 
10
- Use a link in the following cases:
11
-
12
- - To navigate to another page within the website or application
13
- - To navigate to another website (see [External links](#external-links))
14
- - To navigate to an element on the same page
15
- - To link to emails or phone numbers (start the link with `mailto:` or `tel:`)
16
- - Wrap 2 or more consecutive buttons and/or links in an [Action Group](https://designsystem.amsterdam/?path=/docs/components-layout-action-group--docs).
17
-
18
- A link is a navigation component.
19
- Use a button instead of a link when an action is desired.
10
+ - Use a link in the following cases:
11
+ - To navigate to another page within the website or application
12
+ - To navigate to another website (see [External links](#external-links))
13
+ - To navigate to an element on the same page
14
+ - To link to emails or phone numbers (start the link with `mailto:` or `tel:`)
15
+ - A link is a navigation component.
16
+ Use a button instead of a link when an action is desired.
17
+ - An icon can be added to links, positioned after the link.
18
+ - Too many links on the same page may confuse the user.
20
19
 
21
20
  ### External links
22
21
 
@@ -9,41 +9,19 @@
9
9
  .ams-link {
10
10
  color: var(--ams-link-color);
11
11
  font-family: var(--ams-link-font-family);
12
+ font-size: var(--ams-link-font-size);
12
13
  font-weight: var(--ams-link-font-weight);
14
+ line-height: var(--ams-link-line-height);
13
15
  outline-offset: var(--ams-link-outline-offset);
16
+ text-decoration-thickness: var(--ams-link-text-decoration-thickness);
17
+ text-underline-offset: var(--ams-link-text-underline-offset);
14
18
 
15
19
  @include text-rendering;
16
20
 
17
21
  &:hover {
18
22
  color: var(--ams-link-hover-color);
19
- }
20
- }
21
-
22
- .ams-link--standalone {
23
- display: inline-block;
24
- font-size: var(--ams-link-standalone-font-size);
25
- line-height: var(--ams-link-standalone-line-height);
26
- text-decoration-thickness: var(--ams-link-standalone-text-decoration-thickness);
27
- text-underline-offset: var(--ams-link-standalone-text-underline-offset);
28
-
29
- @include hyphenation;
30
-
31
- &:hover {
32
- text-decoration-thickness: var(--ams-link-standalone-hover-text-decoration-thickness);
33
- text-underline-offset: var(--ams-link-standalone-hover-text-underline-offset);
34
- }
35
- }
36
-
37
- .ams-link--inline {
38
- font-family: var(--ams-link-inline-font-family);
39
- font-size: var(--ams-link-inline-font-size);
40
- line-height: var(--ams-link-inline-line-height);
41
- text-decoration-thickness: var(--ams-link-inline-text-decoration-thickness);
42
- text-underline-offset: var(--ams-link-inline-text-underline-offset);
43
-
44
- &:hover {
45
- text-decoration-thickness: var(--ams-link-inline-hover-text-decoration-thickness);
46
- text-underline-offset: var(--ams-link-inline-hover-text-underline-offset);
23
+ text-decoration-thickness: var(--ams-link-hover-text-decoration-thickness);
24
+ text-underline-offset: var(--ams-link-hover-text-underline-offset);
47
25
  }
48
26
  }
49
27
 
@@ -30,7 +30,7 @@ The sub-brands are:
30
30
  ## Requirements for all logos
31
31
 
32
32
  - The logo is always displayed.
33
- - The logo is left-aligned in the header.
33
+ - The logo is left-aligned in the Page Header.
34
34
  - The logo links to the homepage of the website or application.
35
35
  - If the application is a form, application, or tool without a homepage, the logo links to the page where the form, application, or tool is referred to.
36
36
 
@@ -0,0 +1,23 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Page
4
+
5
+ Contains the entire website.
6
+ Sets the background colour and its maximum width, and is horizontally centered.
7
+
8
+ ## Guidelines
9
+
10
+ - The Page component must be used on all websites for the City of Amsterdam.
11
+ Applications can use it as well, although a specific layout for them is in development.
12
+ - It is the outermost container. Within it, combine components such as
13
+ [Grid](https://designsystem.amsterdam/?path=/docs/components-layout-grid--docs),
14
+ [Page Header](https://designsystem.amsterdam/?path=/docs/components-containers-page-header--docs),
15
+ [Page Footer](https://designsystem.amsterdam/?path=/docs/components-containers-page-footer--docs),
16
+ [Spotlight](https://designsystem.amsterdam/?path=/docs/components-containers-spotlight--docs),
17
+ [Image Slider](https://designsystem.amsterdam/?path=/docs/components-media-image-slider--docs),
18
+ and [Figure](https://designsystem.amsterdam/?path=/docs/components-media-figure--docs).
19
+
20
+ ## Design
21
+
22
+ The Page container sets the maximum width for a website of the City of Amsterdam, which is 1600 pixels.
23
+ It horizontally centres both itself and its content and sets a white background.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ .ams-page {
7
+ background-color: var(--ams-page-background-color);
8
+ margin-inline: auto;
9
+ max-inline-size: var(--ams-page-max-inline-size);
10
+ min-block-size: 100vh; /* Fallback for browsers that do not support dvh */
11
+ min-block-size: 100dvh;
12
+ }
@@ -1,16 +1,18 @@
1
1
  <!-- @license CC0-1.0 -->
2
2
 
3
- # Footer
3
+ # Page Footer
4
4
 
5
5
  Provides service information at the bottom of every page.
6
6
 
7
7
  ## Guidelines
8
8
 
9
- - The Footer usually consists of two sections: a full-width blue area and a `Footer.Menu` below it.
10
- - Both sections are preceded by a visually hidden `Heading` for accessibility.
11
- - A Footer containing only a `Footer.Menu` can be sufficient for applications.
12
- - The Footer must be used on all websites for the City of Amsterdam.
9
+ - The Page Footer must be used on all websites and applications for the City of Amsterdam.
10
+ - It usually consists of two sections: a full-width blue `PageFooter.Spotlight` and a `PageFooter.Menu` below it.
11
+ - `Footer.Menu` is preceded by a visually hidden `Heading` for accessibility.
12
+ - A Page Footer containing only a `PageFooter.Menu` can be sufficient for applications.
13
+ - The Page Footer must be used on all websites for the City of Amsterdam.
13
14
  - It must be the same on every page.
15
+ - Set [the inverse colour](?path=/docs/brand-design-tokens-colour--docs#pairing-foreground-with-background-colours) on all text and links in this area.
14
16
 
15
17
  The top section offers space for various practical links:
16
18
 
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ @use "../../common/breakpoint" as *;
7
+ @use "../../common/hyphenation" as *;
8
+ @use "../../common/text-rendering" as *;
9
+
10
+ @mixin reset-ul {
11
+ list-style: none;
12
+ margin-block: 0;
13
+ }
14
+
15
+ .ams-page-footer__spotlight {
16
+ background-color: var(--ams-page-footer-spotlight-background-color);
17
+ }
18
+
19
+ .ams-page-footer__menu {
20
+ column-gap: var(--ams-page-footer-menu-column-gap);
21
+ display: flex;
22
+ flex-wrap: wrap;
23
+ padding-block: var(--ams-page-footer-menu-padding-block);
24
+ padding-inline: var(--ams-page-footer-menu-padding-inline);
25
+ row-gap: var(--ams-page-footer-menu-row-gap);
26
+
27
+ @include reset-ul;
28
+
29
+ @media screen and (min-width: $ams-breakpoint-medium) {
30
+ padding-inline: var(--ams-page-footer-menu-medium-padding-inline);
31
+ }
32
+
33
+ @media screen and (min-width: $ams-breakpoint-wide) {
34
+ padding-inline: var(--ams-page-footer-menu-wide-padding-inline);
35
+ }
36
+ }
37
+
38
+ .ams-page-footer__menu-link {
39
+ color: var(--ams-page-footer-menu-link-color);
40
+ font-family: var(--ams-page-footer-menu-link-font-family);
41
+ font-size: var(--ams-page-footer-menu-link-font-size);
42
+ font-weight: var(--ams-page-footer-menu-link-font-weight);
43
+ line-height: var(--ams-page-footer-menu-link-line-height);
44
+ outline-offset: var(--ams-page-footer-menu-link-outline-offset);
45
+ text-decoration-line: var(--ams-page-footer-menu-link-text-decoration-line);
46
+ text-decoration-thickness: var(--ams-page-footer-menu-link-text-decoration-thickness);
47
+ text-underline-offset: var(--ams-page-footer-menu-link-text-underline-offset);
48
+
49
+ @include hyphenation;
50
+ @include text-rendering;
51
+
52
+ &:hover {
53
+ color: var(--ams-page-footer-menu-link-hover-color);
54
+ text-decoration-line: var(--ams-page-footer-menu-link-hover-text-decoration-line);
55
+ }
56
+ }
@@ -1,17 +1,17 @@
1
1
  <!-- @license CC0-1.0 -->
2
2
 
3
- # Header
3
+ # Page Header
4
4
 
5
5
  Displays the City’s logo at the top of every page, and optionally a navigation menu.
6
6
  Includes the name of the application if it is not the general website.
7
7
 
8
8
  ## Guidelines
9
9
 
10
- - The Header must be used on all websites and applications for the City of Amsterdam.
10
+ - The Page Header must be used on all websites and applications for the City of Amsterdam.
11
11
  - It includes the logo of the City or the organization, the site title (except for the general website), and a menu with links to commonly used pages.
12
- - The Header is important because it conveys our corporate identity and is the first thing people see.
12
+ - The Page Header is important because it conveys our corporate identity and is the first thing people see.
13
13
  Using it consistently helps users recognize and trust the website.
14
- - The Header is the same on every page of the application, although full-screen pages may hide it, e.g. a video or a map.
14
+ - The Page Header is the same on every page of the application, although full-screen pages may hide it, e.g. a video or a map.
15
15
  - The inline menu can contain a maximum of 5 items.
16
16
  The last two will often be ‘Search’ and ‘Menu’.
17
17
  - The 'Menu' button opens a collapsible menu, which has room for more links.
@@ -22,5 +22,5 @@ Includes the name of the application if it is not the general website.
22
22
 
23
23
  ## References
24
24
 
25
- - A Header is a [landmark](https://www.w3.org/TR/wai-aria-practices-1.1/#aria_landmark_roles) and can be used to group navigation elements.
25
+ - A Page Header is a [landmark](https://www.w3.org/TR/wai-aria-practices-1.1/#aria_landmark_roles) and can be used to group navigation elements.
26
26
  - [WCAG 3.2.3](https://wcag.com/designers/3-2-3-consistent-navigation/) Consistent Navigation: Navigation menus that appear on multiple pages are consistent.