@amsterdam/design-system-css 0.15.0 → 0.16.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.
- package/CHANGELOG.md +40 -0
- package/README.md +1 -1
- package/dist/accordion/accordion.css +1 -1
- package/dist/accordion/accordion.css.map +1 -1
- package/dist/breakout/breakout.css +1 -1
- package/dist/breakout/breakout.css.map +1 -1
- package/dist/card/card.css +1 -1
- package/dist/card/card.css.map +1 -1
- package/dist/dialog/dialog.css +1 -1
- package/dist/dialog/dialog.css.map +1 -1
- package/dist/field-set/field-set.css +1 -1
- package/dist/field-set/field-set.css.map +1 -1
- package/dist/grid/grid.css +1 -1
- package/dist/grid/grid.css.map +1 -1
- package/dist/heading/heading.css +1 -1
- package/dist/heading/heading.css.map +1 -1
- package/dist/icon/icon.css +1 -1
- package/dist/icon/icon.css.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/label/label.css +1 -1
- package/dist/label/label.css.map +1 -1
- package/dist/link/link.css +1 -1
- package/dist/link/link.css.map +1 -1
- package/dist/page/page.css +1 -0
- package/dist/page/page.css.map +1 -0
- package/dist/page-footer/page-footer.css +1 -0
- package/dist/page-footer/page-footer.css.map +1 -0
- package/dist/page-header/page-header.css +1 -0
- package/dist/page-header/page-header.css.map +1 -0
- package/dist/page-heading/page-heading.css +1 -1
- package/dist/page-heading/page-heading.css.map +1 -1
- package/dist/standalone-link/standalone-link.css +1 -0
- package/dist/standalone-link/standalone-link.css.map +1 -0
- package/dist/visually-hidden/visually-hidden.css +1 -1
- package/dist/visually-hidden/visually-hidden.css.map +1 -1
- package/package.json +3 -3
- package/src/components/accordion/accordion.scss +1 -0
- package/src/components/alert/README.md +1 -1
- package/src/components/breakout/breakout.scss +19 -19
- package/src/components/card/README.md +15 -14
- package/src/components/card/card.scss +9 -1
- package/src/components/dialog/README.md +3 -5
- package/src/components/dialog/dialog.scss +21 -0
- package/src/components/field-set/field-set.scss +7 -6
- package/src/components/grid/README.md +9 -8
- package/src/components/grid/_mixins.scss +22 -22
- package/src/components/grid/grid.scss +19 -19
- package/src/components/heading/heading.scss +1 -0
- package/src/components/icon/icon.scss +2 -1
- package/src/components/image-slider/README.md +1 -1
- package/src/components/index.scss +4 -6
- package/src/components/label/label.scss +1 -0
- package/src/components/link/README.md +9 -10
- package/src/components/link/link.scss +6 -28
- package/src/components/logo/README.md +1 -1
- package/src/components/page/README.md +23 -0
- package/src/components/page/page.scss +12 -0
- package/src/components/{footer → page-footer}/README.md +7 -5
- package/src/components/page-footer/page-footer.scss +56 -0
- package/src/components/{header → page-header}/README.md +5 -5
- package/src/components/{header/header.scss → page-header/page-header.scss} +65 -56
- package/src/components/page-heading/README.md +1 -1
- package/src/components/page-heading/page-heading.scss +1 -0
- package/src/components/skip-link/README.md +3 -3
- package/src/components/spotlight/README.md +2 -3
- package/src/components/standalone-link/README.md +11 -0
- package/src/components/standalone-link/standalone-link.scss +53 -0
- package/src/components/tabs/README.md +1 -1
- package/src/components/visually-hidden/visually-hidden.scss +1 -0
- package/dist/footer/footer.css +0 -1
- package/dist/footer/footer.css.map +0 -1
- package/dist/header/header.css +0 -1
- package/dist/header/header.css.map +0 -1
- package/dist/mega-menu/mega-menu.css +0 -1
- package/dist/mega-menu/mega-menu.css.map +0 -1
- package/dist/page-menu/page-menu.css +0 -1
- package/dist/page-menu/page-menu.css.map +0 -1
- package/dist/screen/screen.css +0 -1
- package/dist/screen/screen.css.map +0 -1
- package/dist/top-task-link/top-task-link.css +0 -1
- package/dist/top-task-link/top-task-link.css.map +0 -1
- package/src/components/footer/footer.scss +0 -47
- package/src/components/mega-menu/README.md +0 -3
- package/src/components/mega-menu/mega-menu.scss +0 -16
- package/src/components/page-menu/README.md +0 -24
- package/src/components/page-menu/page-menu.scss +0 -65
- package/src/components/screen/README.md +0 -23
- package/src/components/screen/screen.scss +0 -23
- package/src/components/top-task-link/README.md +0 -27
- package/src/components/top-task-link/top-task-link.scss +0 -45
|
@@ -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
|
|
13
|
-
- To navigate to
|
|
14
|
-
- To
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
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
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
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.
|
|
@@ -6,35 +6,43 @@
|
|
|
6
6
|
@use "../../common/breakpoint" as *;
|
|
7
7
|
@use "../../common/text-rendering" as *;
|
|
8
8
|
|
|
9
|
-
.ams-header {
|
|
9
|
+
.ams-page-header {
|
|
10
10
|
/*
|
|
11
11
|
* The logo link section is created twice: once outside the navigation and once hidden inside it.
|
|
12
12
|
* This keeps all navigation in one nav element and lets the menu wrap around the logo link section.
|
|
13
13
|
* Display grid is used to let both logo link sections overlap.
|
|
14
14
|
*/
|
|
15
15
|
display: grid;
|
|
16
|
-
font-family: var(--ams-header-font-family);
|
|
17
|
-
padding-block: var(--ams-header-padding-block);
|
|
18
|
-
padding-inline: var(--ams-header-padding-inline);
|
|
16
|
+
font-family: var(--ams-page-header-font-family);
|
|
17
|
+
padding-block: var(--ams-page-header-padding-block);
|
|
18
|
+
padding-inline: var(--ams-page-header-padding-inline);
|
|
19
|
+
|
|
20
|
+
@media screen and (min-width: $ams-breakpoint-medium) {
|
|
21
|
+
padding-inline: var(--ams-page-header-medium-padding-inline);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@media screen and (min-width: $ams-breakpoint-wide) {
|
|
25
|
+
padding-inline: var(--ams-page-header-wide-padding-inline);
|
|
26
|
+
}
|
|
19
27
|
}
|
|
20
28
|
|
|
21
|
-
.ams-header__logo-link {
|
|
29
|
+
.ams-page-header__logo-link {
|
|
22
30
|
align-items: center;
|
|
23
31
|
align-self: start; // To align the logo link section to the top of the header when it wraps
|
|
24
|
-
column-gap: var(--ams-header-logo-link-column-gap);
|
|
32
|
+
column-gap: var(--ams-page-header-logo-link-column-gap);
|
|
25
33
|
display: flex;
|
|
26
34
|
grid-area: 1 / 1; // To allow this section to overlap with the second logo link section
|
|
27
35
|
inline-size: fit-content;
|
|
28
|
-
outline-offset: var(--ams-header-logo-link-outline-offset);
|
|
36
|
+
outline-offset: var(--ams-page-header-logo-link-outline-offset);
|
|
29
37
|
text-decoration: none;
|
|
30
38
|
}
|
|
31
39
|
|
|
32
|
-
.ams-header__logo-link--hidden {
|
|
40
|
+
.ams-page-header__logo-link--hidden {
|
|
33
41
|
opacity: 0%;
|
|
34
42
|
user-select: none; // The hidden logo link section should not be selectable
|
|
35
43
|
}
|
|
36
44
|
|
|
37
|
-
.ams-header__logo-container {
|
|
45
|
+
.ams-page-header__logo-container {
|
|
38
46
|
flex-shrink: 0;
|
|
39
47
|
inline-size: 0.75rem;
|
|
40
48
|
overflow: hidden;
|
|
@@ -44,22 +52,23 @@
|
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
|
|
47
|
-
.ams-header__brand-name {
|
|
48
|
-
color: var(--ams-header-brand-name-color);
|
|
49
|
-
font-size: var(--ams-header-brand-name-font-size);
|
|
50
|
-
font-weight: var(--ams-header-brand-name-font-weight);
|
|
55
|
+
.ams-page-header__brand-name {
|
|
56
|
+
color: var(--ams-page-header-brand-name-color);
|
|
57
|
+
font-size: var(--ams-page-header-brand-name-font-size);
|
|
58
|
+
font-weight: var(--ams-page-header-brand-name-font-weight);
|
|
51
59
|
line-height: 1.35;
|
|
60
|
+
text-wrap: var(--ams-page-header-brand-name-text-wrap);
|
|
52
61
|
}
|
|
53
62
|
|
|
54
|
-
.ams-header__navigation {
|
|
55
|
-
column-gap: var(--ams-header-navigation-column-gap);
|
|
63
|
+
.ams-page-header__navigation {
|
|
64
|
+
column-gap: var(--ams-page-header-navigation-column-gap);
|
|
56
65
|
display: flex;
|
|
57
66
|
flex-wrap: wrap;
|
|
58
67
|
grid-area: 1 / 1; // To allow this section to overlap with the logo link section
|
|
59
68
|
// This section blocks pointer events initially, so the hidden logo link section can't be activated.
|
|
60
69
|
// The menu and collapsible menu set it back to auto, to make sure they can be activated.
|
|
61
70
|
pointer-events: none;
|
|
62
|
-
row-gap: var(--ams-header-navigation-row-gap);
|
|
71
|
+
row-gap: var(--ams-page-header-navigation-row-gap);
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
@mixin reset-list {
|
|
@@ -68,62 +77,62 @@
|
|
|
68
77
|
padding-inline-start: 0;
|
|
69
78
|
}
|
|
70
79
|
|
|
71
|
-
.ams-header__menu {
|
|
80
|
+
.ams-page-header__menu {
|
|
72
81
|
align-items: center;
|
|
73
|
-
column-gap: var(--ams-header-menu-column-gap);
|
|
82
|
+
column-gap: var(--ams-page-header-menu-column-gap);
|
|
74
83
|
display: flex;
|
|
75
84
|
flex-wrap: wrap;
|
|
76
85
|
justify-content: flex-end;
|
|
77
86
|
margin-inline-start: auto;
|
|
78
87
|
pointer-events: auto; // Set pointer events back to auto to allow the menu to be activated
|
|
79
|
-
row-gap: var(--ams-header-menu-row-gap);
|
|
88
|
+
row-gap: var(--ams-page-header-menu-row-gap);
|
|
80
89
|
|
|
81
90
|
@include reset-list;
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
// Do not show menu items below the wide breakpoint...
|
|
85
|
-
.ams-header__menu-item {
|
|
94
|
+
.ams-page-header__menu-item {
|
|
86
95
|
@media screen and (not (min-width: $ams-breakpoint-wide)) {
|
|
87
96
|
display: none;
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
|
|
91
100
|
// ...unless they're fixed.
|
|
92
|
-
.ams-header__menu-item--fixed {
|
|
101
|
+
.ams-page-header__menu-item--fixed {
|
|
93
102
|
display: revert;
|
|
94
103
|
}
|
|
95
104
|
|
|
96
|
-
@mixin header-menu-action {
|
|
97
|
-
color: var(--ams-header-menu-item-color);
|
|
98
|
-
font-size: var(--ams-header-menu-item-font-size);
|
|
99
|
-
font-weight: var(--ams-header-menu-item-font-weight);
|
|
100
|
-
line-height: var(--ams-header-menu-item-line-height);
|
|
101
|
-
outline-offset: var(--ams-header-menu-item-outline-offset);
|
|
102
|
-
padding-block: var(--ams-header-menu-item-padding-block);
|
|
105
|
+
@mixin page-header-menu-action {
|
|
106
|
+
color: var(--ams-page-header-menu-item-color);
|
|
107
|
+
font-size: var(--ams-page-header-menu-item-font-size);
|
|
108
|
+
font-weight: var(--ams-page-header-menu-item-font-weight);
|
|
109
|
+
line-height: var(--ams-page-header-menu-item-line-height);
|
|
110
|
+
outline-offset: var(--ams-page-header-menu-item-outline-offset);
|
|
111
|
+
padding-block: var(--ams-page-header-menu-item-padding-block);
|
|
103
112
|
touch-action: manipulation;
|
|
104
113
|
white-space: nowrap;
|
|
105
114
|
|
|
106
115
|
@include text-rendering;
|
|
107
116
|
|
|
108
117
|
&:hover {
|
|
109
|
-
color: var(--ams-header-menu-item-hover-color);
|
|
118
|
+
color: var(--ams-page-header-menu-item-hover-color);
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
121
|
|
|
113
|
-
.ams-header__menu-link {
|
|
122
|
+
.ams-page-header__menu-link {
|
|
114
123
|
display: inline-block;
|
|
115
|
-
text-decoration-line: var(--ams-header-menu-link-text-decoration-line);
|
|
116
|
-
text-decoration-thickness: var(--ams-header-menu-link-text-decoration-thickness);
|
|
117
|
-
text-underline-offset: var(--ams-header-menu-link-text-underline-offset);
|
|
124
|
+
text-decoration-line: var(--ams-page-header-menu-link-text-decoration-line);
|
|
125
|
+
text-decoration-thickness: var(--ams-page-header-menu-link-text-decoration-thickness);
|
|
126
|
+
text-underline-offset: var(--ams-page-header-menu-link-text-underline-offset);
|
|
118
127
|
|
|
119
|
-
@include header-menu-action;
|
|
128
|
+
@include page-header-menu-action;
|
|
120
129
|
|
|
121
130
|
&:hover {
|
|
122
|
-
text-decoration-line: var(--ams-header-menu-link-hover-text-decoration-line);
|
|
131
|
+
text-decoration-line: var(--ams-page-header-menu-link-hover-text-decoration-line);
|
|
123
132
|
}
|
|
124
133
|
}
|
|
125
134
|
|
|
126
|
-
.ams-header__mega-menu-button-item--hide-on-wide-window {
|
|
135
|
+
.ams-page-header__mega-menu-button-item--hide-on-wide-window {
|
|
127
136
|
@media screen and (min-width: $ams-breakpoint-wide) {
|
|
128
137
|
display: none;
|
|
129
138
|
}
|
|
@@ -139,36 +148,36 @@
|
|
|
139
148
|
// [1] Remove the margin in older Safari.
|
|
140
149
|
}
|
|
141
150
|
|
|
142
|
-
.ams-header__mega-menu-button {
|
|
143
|
-
column-gap: var(--ams-header-menu-item-column-gap);
|
|
144
|
-
cursor: var(--ams-header-mega-menu-button-cursor);
|
|
151
|
+
.ams-page-header__mega-menu-button {
|
|
152
|
+
column-gap: var(--ams-page-header-menu-item-column-gap);
|
|
153
|
+
cursor: var(--ams-page-header-mega-menu-button-cursor);
|
|
145
154
|
display: grid;
|
|
146
155
|
font-family: inherit;
|
|
147
156
|
grid-auto-flow: column;
|
|
148
157
|
|
|
149
|
-
@include header-menu-action;
|
|
158
|
+
@include page-header-menu-action;
|
|
150
159
|
@include reset-button;
|
|
151
160
|
}
|
|
152
161
|
|
|
153
|
-
.ams-header__mega-menu-button[aria-expanded="true"] {
|
|
154
|
-
font-weight: var(--ams-header-mega-menu-button-label-open-font-weight);
|
|
162
|
+
.ams-page-header__mega-menu-button[aria-expanded="true"] {
|
|
163
|
+
font-weight: var(--ams-page-header-mega-menu-button-label-open-font-weight);
|
|
155
164
|
}
|
|
156
165
|
|
|
157
|
-
.ams-header__mega-menu-button-label,
|
|
158
|
-
.ams-header__mega-menu-button-hidden-label {
|
|
166
|
+
.ams-page-header__mega-menu-button-label,
|
|
167
|
+
.ams-page-header__mega-menu-button-hidden-label {
|
|
159
168
|
grid-area: 1 / 1; // To allow the label and the hidden label to overlap
|
|
160
169
|
}
|
|
161
170
|
|
|
162
171
|
// This hidden label is used to prevent a layout shift when the mega menu is opened
|
|
163
172
|
// and the button text becomes bold.
|
|
164
|
-
.ams-header__mega-menu-button-hidden-label {
|
|
165
|
-
font-weight: var(--ams-header-mega-menu-button-label-open-font-weight);
|
|
173
|
+
.ams-page-header__mega-menu-button-hidden-label {
|
|
174
|
+
font-weight: var(--ams-page-header-mega-menu-button-label-open-font-weight);
|
|
166
175
|
pointer-events: none;
|
|
167
176
|
user-select: none;
|
|
168
177
|
visibility: hidden;
|
|
169
178
|
}
|
|
170
179
|
|
|
171
|
-
.ams-header__menu-icon {
|
|
180
|
+
.ams-page-header__menu-icon {
|
|
172
181
|
line {
|
|
173
182
|
stroke: currentColor;
|
|
174
183
|
stroke-width: 3px;
|
|
@@ -183,30 +192,30 @@
|
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
194
|
|
|
186
|
-
.ams-header__menu-icon-top {
|
|
195
|
+
.ams-page-header__menu-icon-top {
|
|
187
196
|
translate: 0 -7px;
|
|
188
197
|
}
|
|
189
198
|
|
|
190
|
-
.ams-header__menu-icon-bottom {
|
|
199
|
+
.ams-page-header__menu-icon-bottom {
|
|
191
200
|
translate: 0 7px;
|
|
192
201
|
}
|
|
193
202
|
}
|
|
194
203
|
|
|
195
|
-
.ams-header__menu-icon--open {
|
|
196
|
-
.ams-header__menu-icon-top {
|
|
204
|
+
.ams-page-header__menu-icon--open {
|
|
205
|
+
.ams-page-header__menu-icon-top {
|
|
197
206
|
rotate: 45deg;
|
|
198
207
|
translate: 0;
|
|
199
208
|
}
|
|
200
|
-
.ams-header__menu-icon-middle {
|
|
209
|
+
.ams-page-header__menu-icon-middle {
|
|
201
210
|
opacity: 0%;
|
|
202
211
|
}
|
|
203
|
-
.ams-header__menu-icon-bottom {
|
|
212
|
+
.ams-page-header__menu-icon-bottom {
|
|
204
213
|
rotate: -45deg;
|
|
205
214
|
translate: 0;
|
|
206
215
|
}
|
|
207
216
|
}
|
|
208
217
|
|
|
209
|
-
.ams-header__mega-menu {
|
|
218
|
+
.ams-page-header__mega-menu {
|
|
210
219
|
inline-size: 100%;
|
|
211
220
|
pointer-events: auto; // Set pointer events back to auto to allow the mega menu to be activated
|
|
212
221
|
|
|
@@ -217,11 +226,11 @@
|
|
|
217
226
|
}
|
|
218
227
|
}
|
|
219
228
|
|
|
220
|
-
.ams-header__mega-menu--closed.ams-header__mega-menu--closed {
|
|
229
|
+
.ams-page-header__mega-menu--closed.ams-page-header__mega-menu--closed {
|
|
221
230
|
display: none;
|
|
222
231
|
}
|
|
223
232
|
|
|
224
|
-
.ams-header__grid-cell-narrow-window-only {
|
|
233
|
+
.ams-page-header__grid-cell-narrow-window-only {
|
|
225
234
|
@media screen and (min-width: $ams-breakpoint-wide) {
|
|
226
235
|
display: none;
|
|
227
236
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Page Heading
|
|
4
4
|
|
|
5
|
-
The page heading component is a prominent text at the beginning of a page, immediately after the
|
|
5
|
+
The page heading component is a prominent text at the beginning of a page, immediately after the Page Header.
|
|
6
6
|
Use this component for a name, title, or motto.
|
|
7
7
|
|
|
8
8
|
## Guidelines
|
|
@@ -6,13 +6,13 @@ Allows skipping past recurring navigation blocks at the top of a page.
|
|
|
6
6
|
|
|
7
7
|
## Design
|
|
8
8
|
|
|
9
|
-
The Skip Link sits above the
|
|
9
|
+
The Skip Link sits above the Page Header and is as wide as the Page container.
|
|
10
10
|
It remains hidden until activated with the ‘Tab’ key.
|
|
11
|
-
After appearing, it pushes the
|
|
11
|
+
After appearing, it pushes the rest of the page down.
|
|
12
12
|
|
|
13
13
|
## Guidelines
|
|
14
14
|
|
|
15
|
-
- Place the Skip Link as the first element in the
|
|
15
|
+
- Place the Skip Link as the first element in the [Page](/docs/components-containers-page--docs) container.
|
|
16
16
|
- Target the Skip Link to the main content.
|
|
17
17
|
On an article page, for example, it could be the title of the article.
|
|
18
18
|
On a search page, it could be the search field.
|
|
@@ -6,13 +6,12 @@ Emphasizes a section on a page through a distinctive background colour.
|
|
|
6
6
|
|
|
7
7
|
## Guidelines
|
|
8
8
|
|
|
9
|
-
- Display the Spotlight at the entire width of the [
|
|
9
|
+
- Display the Spotlight at the entire width of the [Page](/docs/components-containers-page--docs) container; do not position it on the [Grid](/docs/components-layout-grid--docs).
|
|
10
10
|
- Add a Grid with medium vertical padding inside the Spotlight to add whitespace around the content, even for a single element.
|
|
11
11
|
- Use any of the [highlight colours](/docs/brand-design-tokens-colour--docs) for the background.
|
|
12
12
|
The design system does not prescribe a meaning to any of these colours.
|
|
13
13
|
The default is purple.
|
|
14
|
-
-
|
|
15
|
-
Use the inverse text colour (white) on a green, magenta or purple background.
|
|
14
|
+
- Select [the correct colour](?path=/docs/brand-design-tokens-colour--docs#pairing-foreground-with-background-colours) for text and links against the background you choose.
|
|
16
15
|
|
|
17
16
|
## Relevant WCAG requirements
|
|
18
17
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!-- @license CC0-1.0 -->
|
|
2
|
+
|
|
3
|
+
# Standalone Link
|
|
4
|
+
|
|
5
|
+
A navigation element that is seperated from the text around it.
|
|
6
|
+
|
|
7
|
+
## Guidelines
|
|
8
|
+
|
|
9
|
+
- Use a Standalone Link for links that need to stand out.
|
|
10
|
+
- Use a regular [Link](/docs/components-navigation-link--docs) within sentences or paragraphs of text.
|
|
11
|
+
- For additional guidelines, refer to the [Link](/docs/components-navigation-link--docs) component.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@use "../../common/hyphenation" as *;
|
|
7
|
+
@use "../../common/text-rendering" as *;
|
|
8
|
+
|
|
9
|
+
.ams-standalone-link {
|
|
10
|
+
color: var(--ams-standalone-link-color);
|
|
11
|
+
column-gap: var(--ams-standalone-link-column-gap);
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
font-family: var(--ams-standalone-link-font-family);
|
|
14
|
+
font-size: var(--ams-standalone-link-font-size);
|
|
15
|
+
font-weight: var(--ams-standalone-link-font-weight);
|
|
16
|
+
line-height: var(--ams-standalone-link-line-height);
|
|
17
|
+
outline-offset: var(--ams-standalone-link-outline-offset);
|
|
18
|
+
text-decoration-thickness: var(--ams-standalone-link-text-decoration-thickness);
|
|
19
|
+
text-underline-offset: var(--ams-standalone-link-text-underline-offset);
|
|
20
|
+
|
|
21
|
+
@include hyphenation;
|
|
22
|
+
@include text-rendering;
|
|
23
|
+
|
|
24
|
+
&:hover {
|
|
25
|
+
color: var(--ams-standalone-link-hover-color);
|
|
26
|
+
text-decoration-thickness: var(--ams-standalone-link-hover-text-decoration-thickness);
|
|
27
|
+
text-underline-offset: var(--ams-standalone-link-hover-text-underline-offset);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.ams-standalone-link--contrast {
|
|
32
|
+
color: var(--ams-standalone-link-contrast-color);
|
|
33
|
+
|
|
34
|
+
&:hover {
|
|
35
|
+
color: var(--ams-standalone-link-contrast-hover-color);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ams-standalone-link--inverse {
|
|
40
|
+
color: var(--ams-standalone-link-inverse-color);
|
|
41
|
+
|
|
42
|
+
&:hover {
|
|
43
|
+
color: var(--ams-standalone-link-inverse-hover-color);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.ams-standalone-link--with-icon {
|
|
48
|
+
text-decoration-line: var(--ams-standalone-link-with-icon-text-decoration-line);
|
|
49
|
+
|
|
50
|
+
&:hover {
|
|
51
|
+
text-decoration-line: var(--ams-standalone-link-with-icon-hover-text-decoration-line);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -10,7 +10,7 @@ Tabs are used to bundle related content in a compact overview within a page. Eac
|
|
|
10
10
|
- The content within each tab should have a similar structure.
|
|
11
11
|
- Use when there is limited visual space and content needs to be divided into sections.
|
|
12
12
|
- Each tab consists of a button and a panel.
|
|
13
|
-
|
|
13
|
+
The button has an `aria-controls` attribute that matches the `id` of the associated panel.
|
|
14
14
|
|
|
15
15
|
You can navigate tabs with your keyboard:
|
|
16
16
|
|
package/dist/footer/footer.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.ams-footer__spotlight{background-color:var(--ams-footer-spotlight-background-color)}.ams-footer__menu{column-gap:var(--ams-footer-menu-column-gap);display:flex;flex-wrap:wrap;padding-block:var(--ams-footer-menu-padding-block);padding-inline:var(--ams-footer-menu-padding-inline);row-gap:var(--ams-footer-menu-row-gap);list-style:none;margin-block:0}.ams-footer__menu-link{color:var(--ams-footer-menu-link-color);font-family:var(--ams-footer-menu-link-font-family);font-size:var(--ams-footer-menu-link-font-size);font-weight:var(--ams-footer-menu-link-font-weight);line-height:var(--ams-footer-menu-link-line-height);outline-offset:var(--ams-footer-menu-link-outline-offset);text-decoration-line:var(--ams-footer-menu-link-text-decoration-line);text-decoration-thickness:var(--ams-footer-menu-link-text-decoration-thickness);text-underline-offset:var(--ams-footer-menu-link-text-underline-offset);hyphenate-limit-chars:var(--ams-typography-hyphenate-limit-chars);hyphens:auto;overflow-wrap:break-word;text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}.ams-footer__menu-link:hover{color:var(--ams-footer-menu-link-hover-color);text-decoration-line:var(--ams-footer-menu-link-hover-text-decoration-line)}/*# sourceMappingURL=footer.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../src/components/footer/footer.scss","../../src/common/hyphenation.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAaA,uBACE,8DAGF,kBACE,6CACA,aACA,eACA,mDACA,qDACA,uCAdA,gBACA,eAkBF,uBACE,wCACA,oDACA,gDACA,oDACA,oDACA,0DACA,sEACA,gFACA,wEC/BA,kEACA,aACA,yBCEA,kCACA,2BACA,8BACA,sBF6BA,6BACE,8CACA","file":"footer.css"}
|