@amsterdam/design-system-css 1.0.0 → 2.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 (106) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +2 -2
  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/breakout/breakout.css +1 -1
  8. package/dist/breakout/breakout.css.map +1 -1
  9. package/dist/button/button.css +1 -1
  10. package/dist/button/button.css.map +1 -1
  11. package/dist/call-to-action-link/call-to-action-link.css +1 -0
  12. package/dist/call-to-action-link/call-to-action-link.css.map +1 -0
  13. package/dist/checkbox/checkbox.css +1 -1
  14. package/dist/checkbox/checkbox.css.map +1 -1
  15. package/dist/date-input/date-input.css +1 -1
  16. package/dist/date-input/date-input.css.map +1 -1
  17. package/dist/description-list/description-list.css +1 -1
  18. package/dist/description-list/description-list.css.map +1 -1
  19. package/dist/dialog/dialog.css +1 -1
  20. package/dist/dialog/dialog.css.map +1 -1
  21. package/dist/file-input/file-input.css +1 -1
  22. package/dist/file-input/file-input.css.map +1 -1
  23. package/dist/grid/grid.css +1 -1
  24. package/dist/grid/grid.css.map +1 -1
  25. package/dist/icon/icon.css +1 -1
  26. package/dist/icon/icon.css.map +1 -1
  27. package/dist/icon/icon.deprecated.css +1 -0
  28. package/dist/icon/icon.deprecated.css.map +1 -0
  29. package/dist/image-slider/image-slider.css +1 -1
  30. package/dist/image-slider/image-slider.css.map +1 -1
  31. package/dist/index.css +1 -1
  32. package/dist/index.css.map +1 -1
  33. package/dist/invalid-form-alert/invalid-form-alert.css +1 -1
  34. package/dist/invalid-form-alert/invalid-form-alert.css.map +1 -1
  35. package/dist/menu/menu.css +1 -0
  36. package/dist/menu/menu.css.map +1 -0
  37. package/dist/ordered-list/ordered-list.css +1 -1
  38. package/dist/ordered-list/ordered-list.css.map +1 -1
  39. package/dist/page-footer/page-footer.css +1 -1
  40. package/dist/page-footer/page-footer.css.map +1 -1
  41. package/dist/page-header/page-header.css +1 -1
  42. package/dist/page-header/page-header.css.map +1 -1
  43. package/dist/page-heading/{page-heading.css → page-heading.deprecated.css} +1 -1
  44. package/dist/page-heading/page-heading.deprecated.css.map +1 -0
  45. package/dist/password-input/password-input.css +1 -1
  46. package/dist/password-input/password-input.css.map +1 -1
  47. package/dist/search-field/search-field.css +1 -1
  48. package/dist/search-field/search-field.css.map +1 -1
  49. package/dist/select/select.css +1 -1
  50. package/dist/select/select.css.map +1 -1
  51. package/dist/standalone-link/standalone-link.css +1 -1
  52. package/dist/standalone-link/standalone-link.css.map +1 -1
  53. package/dist/switch/switch.css +1 -1
  54. package/dist/switch/switch.css.map +1 -1
  55. package/dist/text-area/text-area.css +1 -1
  56. package/dist/text-area/text-area.css.map +1 -1
  57. package/dist/text-input/text-input.css +1 -1
  58. package/dist/text-input/text-input.css.map +1 -1
  59. package/dist/time-input/time-input.css +1 -1
  60. package/dist/time-input/time-input.css.map +1 -1
  61. package/dist/unordered-list/unordered-list.css +1 -1
  62. package/dist/unordered-list/unordered-list.css.map +1 -1
  63. package/documentation/coding-conventions.md +27 -0
  64. package/package.json +4 -4
  65. package/src/common/breakpoint.scss +5 -5
  66. package/src/components/accordion/accordion.scss +5 -10
  67. package/src/components/alert/alert.scss +1 -0
  68. package/src/components/button/README.md +5 -2
  69. package/src/components/button/button.scss +5 -1
  70. package/src/components/call-to-action-link/README.md +19 -0
  71. package/src/components/call-to-action-link/call-to-action-link.scss +32 -0
  72. package/src/components/card/README.md +1 -1
  73. package/src/components/checkbox/checkbox.scss +112 -207
  74. package/src/components/date-input/date-input.scss +22 -7
  75. package/src/components/file-input/file-input.scss +1 -0
  76. package/src/components/grid/README.md +1 -1
  77. package/src/components/heading/README.md +13 -6
  78. package/src/components/icon/README.md +2 -0
  79. package/src/components/icon/icon.deprecated.scss +12 -0
  80. package/src/components/icon/icon.scss +15 -1
  81. package/src/components/index.scss +4 -1
  82. package/src/components/invalid-form-alert/invalid-form-alert.scss +0 -11
  83. package/src/components/link/README.md +1 -0
  84. package/src/components/logo/README.md +1 -1
  85. package/src/components/menu/README.md +8 -0
  86. package/src/components/menu/menu.scss +82 -0
  87. package/src/components/ordered-list/ordered-list.scss +13 -8
  88. package/src/components/page/README.md +1 -1
  89. package/src/components/page-footer/README.md +11 -10
  90. package/src/components/page-header/README.md +1 -0
  91. package/src/components/page-heading/README.md +0 -16
  92. package/src/components/page-heading/{page-heading.scss → page-heading.deprecated.scss} +1 -0
  93. package/src/components/password-input/password-input.scss +14 -8
  94. package/src/components/radio/README.md +4 -2
  95. package/src/components/search-field/search-field.scss +17 -13
  96. package/src/components/select/select.scss +14 -15
  97. package/src/components/skip-link/README.md +5 -4
  98. package/src/components/standalone-link/README.md +7 -3
  99. package/src/components/standalone-link/standalone-link.scss +4 -7
  100. package/src/components/switch/switch.scss +1 -0
  101. package/src/components/table/README.md +3 -4
  102. package/src/components/text-area/text-area.scss +14 -8
  103. package/src/components/text-input/text-input.scss +14 -8
  104. package/src/components/time-input/time-input.scss +18 -7
  105. package/src/components/unordered-list/unordered-list.scss +13 -8
  106. package/dist/page-heading/page-heading.css.map +0 -1
@@ -0,0 +1,82 @@
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
+ padding-inline-start: 0;
14
+ }
15
+
16
+ .ams-menu {
17
+ font-family: var(--ams-menu-font-family);
18
+ font-size: var(--ams-menu-font-size);
19
+ font-weight: var(--ams-menu-font-weight);
20
+ line-height: var(--ams-menu-line-height);
21
+ }
22
+
23
+ .ams-menu__list {
24
+ display: grid;
25
+
26
+ @include hyphenation;
27
+ @include text-rendering;
28
+ @include reset-ul;
29
+
30
+ @media screen and (min-width: $ams-breakpoint-wide) {
31
+ gap: var(--ams-menu-list-gap);
32
+ }
33
+ }
34
+
35
+ .ams-menu__link {
36
+ align-items: flex-start;
37
+ color: var(--ams-menu-link-color);
38
+ display: flex;
39
+ gap: var(--ams-menu-link-gap);
40
+ outline-offset: var(--ams-menu-link-outline-offset);
41
+ padding-block: var(--ams-menu-link-padding-block);
42
+ padding-inline: var(--ams-menu-link-padding-inline);
43
+ text-decoration-line: var(--ams-menu-link-text-decoration-line);
44
+ text-decoration-thickness: var(--ams-menu-link-text-decoration-thickness);
45
+ text-underline-offset: var(--ams-menu-link-text-underline-offset);
46
+
47
+ &:hover {
48
+ color: var(--ams-menu-link-hover-color);
49
+ text-decoration-line: var(--ams-menu-link-hover-text-decoration-line);
50
+ }
51
+
52
+ .ams-menu__icon {
53
+ align-self: initial;
54
+ }
55
+
56
+ @media screen and (min-width: $ams-breakpoint-wide) {
57
+ align-items: center;
58
+ flex-direction: column;
59
+ gap: 0;
60
+
61
+ .ams-menu__icon {
62
+ --ams-icon-font-size: var(--ams-icon-heading-3-font-size);
63
+ --ams-icon-line-height: var(--ams-icon-heading-3-line-height);
64
+ }
65
+ }
66
+ }
67
+
68
+ .ams-menu__link--contrast {
69
+ color: var(--ams-menu-link-contrast-color);
70
+
71
+ &:hover {
72
+ color: var(--ams-menu-link-contrast-hover-color);
73
+ }
74
+ }
75
+
76
+ .ams-menu__link--inverse {
77
+ color: var(--ams-menu-link-inverse-color);
78
+
79
+ &:hover {
80
+ color: var(--ams-menu-link-inverse-hover-color);
81
+ }
82
+ }
@@ -45,14 +45,19 @@
45
45
  line-height: var(--ams-ordered-list-small-line-height);
46
46
  }
47
47
 
48
- :is(.ams-ordered-list, .ams-unordered-list) .ams-ordered-list {
49
- gap: var(--ams-ordered-list-ordered-list-gap);
50
- list-style-type: var(--ams-ordered-list-ordered-list-list-style-type);
51
- padding-block-end: var(--ams-ordered-list-ordered-list-padding-block-end);
52
- padding-block-start: var(--ams-ordered-list-ordered-list-padding-block-start);
48
+ :is(.ams-ordered-list, .ams-unordered-list) {
49
+ .ams-ordered-list {
50
+ gap: var(--ams-ordered-list-ordered-list-gap);
51
+ list-style-type: var(--ams-ordered-list-ordered-list-list-style-type);
52
+ padding-block-start: var(--ams-ordered-list-ordered-list-padding-block-start);
53
+
54
+ .ams-ordered-list__item {
55
+ margin-inline-start: var(--ams-ordered-list-ordered-list-item-margin-inline-start);
56
+ padding-inline-start: var(--ams-ordered-list-ordered-list-item-padding-inline-start);
57
+ }
58
+ }
53
59
 
54
- .ams-ordered-list__item {
55
- margin-inline-start: var(--ams-ordered-list-ordered-list-item-margin-inline-start);
56
- padding-inline-start: var(--ams-ordered-list-ordered-list-item-padding-inline-start);
60
+ > :not(:last-child) > .ams-ordered-list {
61
+ padding-block-end: var(--ams-ordered-list-ordered-list-padding-block-end);
57
62
  }
58
63
  }
@@ -19,5 +19,5 @@ Sets the background colour and its maximum width, and is horizontally centered.
19
19
 
20
20
  ## Design
21
21
 
22
- The Page container sets the maximum width for a website of the City of Amsterdam, which is 1600 pixels.
22
+ The Page container sets the maximum width for a website of the City of Amsterdam, which is 1440 pixels.
23
23
  It horizontally centres both itself and its content and sets a white background.
@@ -7,19 +7,20 @@ Provides service information at the bottom of every page.
7
7
  ## Guidelines
8
8
 
9
9
  - The Page Footer must be used on all websites and applications for the City of Amsterdam.
10
+ - It must be the same on every page.
10
11
  - 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
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.
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.
13
+ - Set [the inverse colour](?path=/docs/brand-design-tokens-colour--docs#pairing-foreground-with-background-colours) on all text and links in the Spotlight area.
14
+ - If the Page Footer contains [Headings](https://designsystem.amsterdam/?path=/docs/components-text-heading--docs), give them level 2 and a size of ‘level-3’.
15
+ A visually hidden heading to group them is not necessary the footer’s landmark provides enough guidance.
16
+
17
+ ## Content
16
18
 
17
19
  The top section offers space for various practical links:
18
20
 
19
- - The first column focuses on contact information.
20
- The information is as specific as possible and tailored to the respective website or page (e.g., including a chat option if available).
21
- - The second column contains links to relevant (online) sites or sources.
22
- - The third column refers to newsletters, social media, etc.
21
+ 1. The first column focuses on contact information.
22
+ The information is as specific as possible and tailored to the respective website or page (e.g., including a chat option if available).
23
+ 1. The second column contains links to relevant (online) sites or sources.
24
+ 1. The third column refers to newsletters, events, social media, etc.
23
25
 
24
- The menu in the bottom section is for links to privacy policies, cookie statements, information about the website itself, etc.
25
- Contact details should not go here.
26
+ The menu is for links to privacy policies, cookie statements, and other information about the website itself.
@@ -19,6 +19,7 @@ Includes the name of the application if it is not the general website.
19
19
  - Labels should be short to help the inline menu fit on a single line whenever possible.
20
20
  - An icon can be added to the end of a link to make its destination easier to guess.
21
21
  - For websites with a brand name that feature the standard Amsterdam logo, only the emblem is shown on narrow screens.
22
+ - If the collapsible menu contains [Headings](https://designsystem.amsterdam/?path=/docs/components-text-heading--docs), give them level 2 and a size of ‘level-3’.
22
23
 
23
24
  ## References
24
25
 
@@ -1,19 +1,3 @@
1
1
  <!-- @license CC0-1.0 -->
2
2
 
3
3
  # Page Heading
4
-
5
- The page heading component is a prominent text at the beginning of a page, immediately after the Page Header.
6
- Use this component for a name, title, or motto.
7
-
8
- ## Guidelines
9
-
10
- - Use this component to capture the user’s attention.
11
- - Only use this component once per page, typically only on the homepage.
12
- - Avoid using it if you need to display long pieces of text; the text should be short and precise.
13
-
14
- ## Relevant WCAG requirements
15
-
16
- The page heading component is a variant of a heading level 1 with a distinct style.
17
- When using this component, ensure that the heading hierarchy of the page remains logical.
18
-
19
- For this component, the same WCAG requirements apply as for [the heading component](/docs/components-text-heading--docs).
@@ -10,6 +10,7 @@
10
10
  margin-block: 0;
11
11
  }
12
12
 
13
+ /* @deprecated We no longer use this size of headings. Use `.ams-heading.ams-heading--1` instead. */
13
14
  .ams-page-heading {
14
15
  box-sizing: border-box;
15
16
  break-after: avoid;
@@ -37,9 +37,14 @@
37
37
  inline-size: 100%;
38
38
  }
39
39
 
40
+ @mixin reset-placeholder {
41
+ opacity: 100%; // Reset lower opacity set by Firefox
42
+ }
43
+
40
44
  .ams-password-input::placeholder {
41
45
  color: var(--ams-password-input-placeholder-color);
42
- opacity: 100%; // This resets the lower opacity set by Firefox
46
+
47
+ @include reset-placeholder;
43
48
  }
44
49
 
45
50
  .ams-password-input:disabled {
@@ -47,16 +52,17 @@
47
52
  cursor: var(--ams-password-input-disabled-cursor);
48
53
  }
49
54
 
50
- .ams-password-input:invalid,
51
- .ams-password-input[aria-invalid="true"] {
55
+ .ams-password-input:not(:disabled):invalid,
56
+ .ams-password-input:not(:disabled)[aria-invalid="true"] {
52
57
  border-color: var(--ams-password-input-invalid-border-color);
53
-
54
- &:hover {
55
- border-color: var(--ams-password-input-invalid-hover-border-color);
56
- box-shadow: var(--ams-password-input-invalid-hover-box-shadow);
57
- }
58
58
  }
59
59
 
60
60
  .ams-password-input:not(:disabled):hover {
61
61
  box-shadow: var(--ams-password-input-hover-box-shadow);
62
62
  }
63
+
64
+ .ams-password-input:not(:disabled):invalid:hover,
65
+ .ams-password-input:not(:disabled)[aria-invalid="true"]:hover {
66
+ border-color: var(--ams-password-input-invalid-hover-border-color);
67
+ box-shadow: var(--ams-password-input-invalid-hover-box-shadow);
68
+ }
@@ -14,5 +14,7 @@ Allows users to select one option from a list.
14
14
  However you should do this with extreme caution as it can reinforce bias.
15
15
  If in doubt, order alphabetically.
16
16
  - Labels should be concise. Try to keep labels shorter than 4 words.
17
-
18
- Use a [Checkbox](/docs/components-forms-checkbox--docs) when a user can select more than 1 option from a list.
17
+ - Do not check a radio button initially.
18
+ This prevents users from leaving the question unanswered.
19
+ It also increases the chance of submitting a wrong answer.
20
+ - Use a [Checkbox](/docs/components-forms-checkbox--docs) when a user can select more than 1 option from a list.
@@ -37,28 +37,32 @@
37
37
  @include text-rendering;
38
38
  @include reset-input;
39
39
 
40
- &:hover {
41
- box-shadow: var(--ams-search-field-input-hover-box-shadow);
42
- }
43
-
44
40
  &:focus {
45
41
  z-index: 1; // Make sure the focus outline isn’t cut off by the adjacent button
46
42
  }
47
43
  }
48
44
 
49
- .ams-search-field__input:invalid,
50
- .ams-search-field__input[aria-invalid="true"] {
51
- border-color: var(--ams-search-field-input-invalid-border-color);
52
-
53
- &:hover {
54
- border-color: var(--ams-search-field-input-invalid-hover-border-color);
55
- box-shadow: var(--ams-search-field-input-invalid-hover-box-shadow);
56
- }
45
+ @mixin reset-placeholder {
46
+ opacity: 100%; // Reset lower opacity set by Firefox
57
47
  }
58
48
 
59
49
  .ams-search-field__input::placeholder {
60
50
  color: var(--ams-search-field-input-placeholder-color);
61
- opacity: 100%; // This resets the lower opacity set by Firefox
51
+ }
52
+
53
+ .ams-search-field__input:not(:disabled):invalid,
54
+ .ams-search-field__input:not(:disabled)[aria-invalid="true"] {
55
+ border-color: var(--ams-search-field-input-invalid-border-color);
56
+ }
57
+
58
+ .ams-search-field__input:not(:disabled):hover {
59
+ box-shadow: var(--ams-search-field-input-hover-box-shadow);
60
+ }
61
+
62
+ .ams-search-field__input:not(:disabled):invalid:hover,
63
+ .ams-search-field__input:not(:disabled)[aria-invalid="true"]:hover {
64
+ border-color: var(--ams-search-field-input-invalid-hover-border-color);
65
+ box-shadow: var(--ams-search-field-input-invalid-hover-box-shadow);
62
66
  }
63
67
 
64
68
  .ams-search-field__input::-webkit-search-cancel-button {
@@ -17,8 +17,8 @@
17
17
  font-family: var(--ams-select-font-family);
18
18
  font-size: var(--ams-select-font-size);
19
19
  font-weight: var(--ams-select-font-weight);
20
- inline-size: 100%;
21
20
  line-height: var(--ams-select-line-height);
21
+ max-inline-size: 100%;
22
22
  outline-offset: var(--ams-select-outline-offset);
23
23
  padding-block: var(--ams-select-padding-block);
24
24
  padding-inline: var(--ams-select-padding-inline);
@@ -34,33 +34,32 @@
34
34
  }
35
35
  }
36
36
 
37
- .ams-select:invalid,
38
- .ams-select[aria-invalid="true"] {
39
- border-color: var(--ams-select-invalid-border-color);
40
- }
41
-
42
37
  .ams-select:disabled {
43
38
  color: var(--ams-select-disabled-color);
44
39
  cursor: var(--ams-select-disabled-cursor);
45
40
 
46
41
  &:not([multiple]) {
47
42
  background-image: var(--ams-select-disabled-background-image);
48
-
49
- /* stylelint-disable no-descending-specificity */
50
- &:hover {
51
- background-image: var(--ams-select-hover-background-image);
52
- }
53
43
  }
54
44
  }
55
45
 
56
- .ams-select:invalid:hover,
57
- .ams-select[aria-invalid="true"]:hover {
58
- border-color: var(--ams-select-invalid-hover-border-color);
59
- box-shadow: var(--ams-select-invalid-hover-box-shadow);
46
+ .ams-select:not(:disabled):invalid,
47
+ .ams-select:not(:disabled)[aria-invalid="true"] {
48
+ border-color: var(--ams-select-invalid-border-color);
60
49
  }
61
50
 
62
51
  .ams-select:not(:disabled):hover {
63
52
  box-shadow: var(--ams-select-hover-box-shadow);
53
+
54
+ &:not([multiple]) {
55
+ background-image: var(--ams-select-hover-background-image);
56
+ }
57
+ }
58
+
59
+ .ams-select:not(:disabled):invalid:hover,
60
+ .ams-select:not(:disabled)[aria-invalid="true"]:hover {
61
+ border-color: var(--ams-select-invalid-hover-border-color);
62
+ box-shadow: var(--ams-select-invalid-hover-box-shadow);
64
63
  }
65
64
 
66
65
  .ams-select__option:disabled {
@@ -13,9 +13,10 @@ After appearing, it pushes the rest of the page down.
13
13
  ## Guidelines
14
14
 
15
15
  - Place the Skip Link as the first element in the [Page](/docs/components-containers-page--docs) container.
16
- - Target the Skip Link to the main content.
17
- On an article page, for example, it could be the title of the article.
18
- On a search page, it could be the search field.
19
- - Set `id="example-id"` on the container of that element and then use `href="#example-id"` on the Skip Link.
16
+ - Direct the Skip Link to the main content area on the Page.
17
+ Typically, this is the `main` HTML element.
18
+ Repeated navigation blocks such as Breadcrumbs and back Links do not belong to the main content area.
19
+ - Set `id="inhoud"` on the `main` HTML element and then use `href="#inhoud"` on the Skip Link.
20
20
  - Complex pages with multiple sections may benefit from more than one Skip Link.
21
+ If you need multiple words to describe a Skip Link target, use kebab case (`id="op-deze-manier"`).
21
22
  - Skip Links are unnecessary on a simple page with only text and minimal navigation.
@@ -2,10 +2,14 @@
2
2
 
3
3
  # Standalone Link
4
4
 
5
- A navigation element that is seperated from the text around it.
5
+ A navigation element that is separated from the text around it.
6
+
7
+ The Standalone Link has a chevron icon at the start to signify that it is a link.
8
+ This also makes it visually identical to a single link in a [Link List](/docs/components-navigation-link--docs).
9
+ As a result, pages can have sections with either one or several links used interchangeably; they look alike, and their semantics are correct.
6
10
 
7
11
  ## Guidelines
8
12
 
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.
13
+ - Use a Standalone Link for a single link on its own line of text.
14
+ - Within running body text, use a regular Link instead.
11
15
  - For additional guidelines, refer to the [Link](/docs/components-navigation-link--docs) component.
@@ -15,6 +15,7 @@
15
15
  font-weight: var(--ams-standalone-link-font-weight);
16
16
  line-height: var(--ams-standalone-link-line-height);
17
17
  outline-offset: var(--ams-standalone-link-outline-offset);
18
+ text-decoration-line: var(--ams-standalone-link-text-decoration-line);
18
19
  text-decoration-thickness: var(--ams-standalone-link-text-decoration-thickness);
19
20
  text-underline-offset: var(--ams-standalone-link-text-underline-offset);
20
21
 
@@ -23,8 +24,7 @@
23
24
 
24
25
  &:hover {
25
26
  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);
27
+ text-decoration-line: var(--ams-standalone-link-hover-text-decoration-line);
28
28
  }
29
29
  }
30
30
 
@@ -44,10 +44,7 @@
44
44
  }
45
45
  }
46
46
 
47
+ /* stylelint-disable-next-line block-no-empty */
47
48
  .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
- }
49
+ /* This class name is deprecated. */
53
50
  }
@@ -25,6 +25,7 @@
25
25
  inline-size: var(--ams-switch-inline-size);
26
26
  outline-offset: var(--ams-switch-outline-offset);
27
27
  transition: background-color 0.2s ease-in-out;
28
+ vertical-align: middle;
28
29
  }
29
30
 
30
31
  .ams-switch__label::before {
@@ -7,7 +7,6 @@ Table is used to display simple information that does not need to be filtered or
7
7
 
8
8
  ## Guidelines
9
9
 
10
- - Use `<Table.Caption>` to describe a table in the same way you would use a heading.
11
- A caption helps users find, navigate and understand tables.
12
- - Never use the table component to layout content on a page.
13
- Instead, use [Grid](/docs/components-layout-grid--docs).
10
+ - Add a caption to help users find, navigate and understand the table.
11
+ - Include a [Heading](https://designsystem.amsterdam/?path=/docs/components-text-heading--docs) in the Table Caption,
12
+ unless the table is in a [Figure](http://designsystem.amsterdam/?path=/docs/components-media-figure--docs) which has a Figure Caption.
@@ -35,9 +35,14 @@
35
35
  @include reset-textarea;
36
36
  }
37
37
 
38
+ @mixin reset-placeholder {
39
+ opacity: 100%; // Reset lower opacity set by Firefox
40
+ }
41
+
38
42
  .ams-text-area::placeholder {
39
43
  color: var(--ams-text-area-placeholder-color);
40
- opacity: 100%; // This resets the lower opacity set by Firefox
44
+
45
+ @include reset-placeholder;
41
46
  }
42
47
 
43
48
  .ams-text-area:disabled {
@@ -45,20 +50,21 @@
45
50
  cursor: var(--ams-text-area-disabled-cursor);
46
51
  }
47
52
 
48
- .ams-text-area:invalid,
49
- .ams-text-area[aria-invalid="true"] {
53
+ .ams-text-area:not(:disabled):invalid,
54
+ .ams-text-area:not(:disabled)[aria-invalid="true"] {
50
55
  border-color: var(--ams-text-area-invalid-border-color);
51
-
52
- &:hover {
53
- border-color: var(--ams-text-area-invalid-hover-border-color);
54
- box-shadow: var(--ams-text-area-invalid-hover-box-shadow);
55
- }
56
56
  }
57
57
 
58
58
  .ams-text-area:not(:disabled):hover {
59
59
  box-shadow: var(--ams-text-area-hover-box-shadow);
60
60
  }
61
61
 
62
+ .ams-text-area:not(:disabled):invalid:hover,
63
+ .ams-text-area:not(:disabled)[aria-invalid="true"]:hover {
64
+ border-color: var(--ams-text-area-invalid-hover-border-color);
65
+ box-shadow: var(--ams-text-area-invalid-hover-box-shadow);
66
+ }
67
+
62
68
  .ams-text-area--resize-none {
63
69
  resize: none;
64
70
  }
@@ -37,9 +37,14 @@
37
37
  inline-size: 100%;
38
38
  }
39
39
 
40
+ @mixin reset-placeholder {
41
+ opacity: 100%; // Reset lower opacity set by Firefox
42
+ }
43
+
40
44
  .ams-text-input::placeholder {
41
45
  color: var(--ams-text-input-placeholder-color);
42
- opacity: 100%; // This resets the lower opacity set by Firefox
46
+
47
+ @include reset-placeholder;
43
48
  }
44
49
 
45
50
  .ams-text-input:disabled {
@@ -47,16 +52,17 @@
47
52
  cursor: var(--ams-text-input-disabled-cursor);
48
53
  }
49
54
 
50
- .ams-text-input:invalid,
51
- .ams-text-input[aria-invalid="true"] {
55
+ .ams-text-input:not(:disabled):invalid,
56
+ .ams-text-input:not(:disabled)[aria-invalid="true"] {
52
57
  border-color: var(--ams-text-input-invalid-border-color);
53
-
54
- &:hover {
55
- border-color: var(--ams-text-input-invalid-hover-border-color);
56
- box-shadow: var(--ams-text-input-invalid-hover-box-shadow);
57
- }
58
58
  }
59
59
 
60
60
  .ams-text-input:not(:disabled):hover {
61
61
  box-shadow: var(--ams-text-input-hover-box-shadow);
62
62
  }
63
+
64
+ .ams-text-input:not(:disabled):invalid:hover,
65
+ .ams-text-input:not(:disabled)[aria-invalid="true"]:hover {
66
+ border-color: var(--ams-text-input-invalid-hover-border-color);
67
+ box-shadow: var(--ams-text-input-invalid-hover-box-shadow);
68
+ }
@@ -11,6 +11,16 @@
11
11
  border-radius: 0; // Reset rounded borders on iOS devices
12
12
  inline-size: auto; // Reset inline size of 10em set by Android devices
13
13
  margin-block: 0;
14
+
15
+ &::-webkit-datetime-edit,
16
+ &::-webkit-datetime-edit-ampm-field,
17
+ &::-webkit-datetime-edit-fields-wrapper,
18
+ &::-webkit-datetime-edit-hour-field,
19
+ &::-webkit-datetime-edit-millisecond-field,
20
+ &::-webkit-datetime-edit-minute-field,
21
+ &::-webkit-datetime-edit-second-field {
22
+ padding-block: 0; // Override value of 1px in UA stylesheet
23
+ }
14
24
  }
15
25
 
16
26
  .ams-time-input {
@@ -62,16 +72,17 @@
62
72
  visibility: visible;
63
73
  }
64
74
 
65
- .ams-time-input:invalid,
66
- .ams-time-input[aria-invalid="true"] {
75
+ .ams-time-input:not(:disabled):invalid,
76
+ .ams-time-input:not(:disabled)[aria-invalid="true"] {
67
77
  border-color: var(--ams-time-input-invalid-border-color);
68
-
69
- &:hover {
70
- border-color: var(--ams-time-input-invalid-hover-border-color);
71
- box-shadow: var(--ams-time-input-invalid-hover-box-shadow);
72
- }
73
78
  }
74
79
 
75
80
  .ams-time-input:not(:disabled):hover {
76
81
  box-shadow: var(--ams-time-input-hover-box-shadow);
77
82
  }
83
+
84
+ .ams-time-input:not(:disabled):invalid:hover,
85
+ .ams-time-input:not(:disabled)[aria-invalid="true"]:hover {
86
+ border-color: var(--ams-time-input-invalid-hover-border-color);
87
+ box-shadow: var(--ams-time-input-invalid-hover-box-shadow);
88
+ }
@@ -45,14 +45,19 @@
45
45
  line-height: var(--ams-unordered-list-small-line-height);
46
46
  }
47
47
 
48
- :is(.ams-ordered-list, .ams-unordered-list) .ams-unordered-list {
49
- gap: var(--ams-unordered-list-unordered-list-gap);
50
- list-style-type: var(--ams-unordered-list-unordered-list-list-style-type);
51
- padding-block-end: var(--ams-unordered-list-unordered-list-padding-block-end);
52
- padding-block-start: var(--ams-unordered-list-unordered-list-padding-block-start);
48
+ :is(.ams-ordered-list, .ams-unordered-list) {
49
+ .ams-unordered-list {
50
+ gap: var(--ams-unordered-list-unordered-list-gap);
51
+ list-style-type: var(--ams-unordered-list-unordered-list-list-style-type);
52
+ padding-block-start: var(--ams-unordered-list-unordered-list-padding-block-start);
53
+
54
+ .ams-unordered-list__item {
55
+ margin-inline-start: var(--ams-unordered-list-unordered-list-item-margin-inline-start);
56
+ padding-inline-start: var(--ams-unordered-list-unordered-list-item-padding-inline-start);
57
+ }
58
+ }
53
59
 
54
- .ams-unordered-list__item {
55
- margin-inline-start: var(--ams-unordered-list-unordered-list-item-margin-inline-start);
56
- padding-inline-start: var(--ams-unordered-list-unordered-list-item-padding-inline-start);
60
+ > :not(:last-child) > .ams-unordered-list {
61
+ padding-block-end: var(--ams-unordered-list-unordered-list-padding-block-end);
57
62
  }
58
63
  }
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/page-heading/page-heading.scss","../../src/common/hyphenation.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAYA,kBACE,sBACA,kBACA,mBACA,oCACA,gDACA,4CACA,gDACA,gDACA,4CCfA,kEACA,aACA,yBCEA,kCACA,2BACA,8BACA,sBFJA,eAmBF,2BACE","file":"page-heading.css"}