@amsterdam/design-system-css 0.6.1 → 0.7.1

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 (156) hide show
  1. package/CHANGELOG.md +24 -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/aspect-ratio/aspect-ratio.css +1 -1
  8. package/dist/aspect-ratio/aspect-ratio.css.map +1 -1
  9. package/dist/avatar/avatar.css +1 -0
  10. package/dist/avatar/avatar.css.map +1 -0
  11. package/dist/badge/badge.css +1 -1
  12. package/dist/badge/badge.css.map +1 -1
  13. package/dist/blockquote/blockquote.css +1 -1
  14. package/dist/blockquote/blockquote.css.map +1 -1
  15. package/dist/breadcrumb/breadcrumb.css +1 -1
  16. package/dist/breadcrumb/breadcrumb.css.map +1 -1
  17. package/dist/button/button.css +1 -1
  18. package/dist/button/button.css.map +1 -1
  19. package/dist/card/card.css +1 -1
  20. package/dist/card/card.css.map +1 -1
  21. package/dist/checkbox/checkbox.css +1 -1
  22. package/dist/checkbox/checkbox.css.map +1 -1
  23. package/dist/column/column.css +1 -1
  24. package/dist/column/column.css.map +1 -1
  25. package/dist/dialog/dialog.css +1 -1
  26. package/dist/dialog/dialog.css.map +1 -1
  27. package/dist/fieldset/fieldset.css +1 -1
  28. package/dist/fieldset/fieldset.css.map +1 -1
  29. package/dist/form-field-character-counter/form-field-character-counter.css +1 -0
  30. package/dist/form-field-character-counter/form-field-character-counter.css.map +1 -0
  31. package/dist/form-label/form-label.css +1 -1
  32. package/dist/form-label/form-label.css.map +1 -1
  33. package/dist/gap/gap.css +1 -1
  34. package/dist/gap/gap.css.map +1 -1
  35. package/dist/grid/grid.css +1 -1
  36. package/dist/grid/grid.css.map +1 -1
  37. package/dist/header/header.css +1 -1
  38. package/dist/header/header.css.map +1 -1
  39. package/dist/heading/heading.css +1 -1
  40. package/dist/heading/heading.css.map +1 -1
  41. package/dist/icon/icon.css +1 -1
  42. package/dist/icon/icon.css.map +1 -1
  43. package/dist/icon-button/icon-button.css +1 -1
  44. package/dist/icon-button/icon-button.css.map +1 -1
  45. package/dist/image/image.css +1 -1
  46. package/dist/image/image.css.map +1 -1
  47. package/dist/index.css +1 -1
  48. package/dist/index.css.map +1 -1
  49. package/dist/link/link.css +1 -1
  50. package/dist/link/link.css.map +1 -1
  51. package/dist/link-list/link-list.css +1 -1
  52. package/dist/link-list/link-list.css.map +1 -1
  53. package/dist/logo/logo.css +1 -1
  54. package/dist/logo/logo.css.map +1 -1
  55. package/dist/margin/margin.css +1 -1
  56. package/dist/margin/margin.css.map +1 -1
  57. package/dist/mark/mark.css +1 -1
  58. package/dist/mark/mark.css.map +1 -1
  59. package/dist/mega-menu/mega-menu.css +1 -1
  60. package/dist/mega-menu/mega-menu.css.map +1 -1
  61. package/dist/ordered-list/ordered-list.css +1 -1
  62. package/dist/ordered-list/ordered-list.css.map +1 -1
  63. package/dist/overlap/overlap.css +1 -1
  64. package/dist/overlap/overlap.css.map +1 -1
  65. package/dist/page-heading/page-heading.css +1 -1
  66. package/dist/page-heading/page-heading.css.map +1 -1
  67. package/dist/page-menu/page-menu.css +1 -1
  68. package/dist/page-menu/page-menu.css.map +1 -1
  69. package/dist/pagination/pagination.css +1 -1
  70. package/dist/pagination/pagination.css.map +1 -1
  71. package/dist/paragraph/paragraph.css +1 -1
  72. package/dist/paragraph/paragraph.css.map +1 -1
  73. package/dist/radio/radio.css +1 -1
  74. package/dist/radio/radio.css.map +1 -1
  75. package/dist/row/row.css +1 -1
  76. package/dist/row/row.css.map +1 -1
  77. package/dist/screen/screen.css +1 -1
  78. package/dist/screen/screen.css.map +1 -1
  79. package/dist/search-field/search-field.css +1 -1
  80. package/dist/search-field/search-field.css.map +1 -1
  81. package/dist/skip-link/skip-link.css +1 -1
  82. package/dist/skip-link/skip-link.css.map +1 -1
  83. package/dist/spotlight/spotlight.css +1 -1
  84. package/dist/spotlight/spotlight.css.map +1 -1
  85. package/dist/switch/switch.css +1 -1
  86. package/dist/switch/switch.css.map +1 -1
  87. package/dist/table/table.css +1 -1
  88. package/dist/table/table.css.map +1 -1
  89. package/dist/tabs/tabs.css +1 -1
  90. package/dist/tabs/tabs.css.map +1 -1
  91. package/dist/text-area/text-area.css +1 -1
  92. package/dist/text-area/text-area.css.map +1 -1
  93. package/dist/text-input/text-input.css +1 -1
  94. package/dist/text-input/text-input.css.map +1 -1
  95. package/dist/top-task-link/top-task-link.css +1 -1
  96. package/dist/top-task-link/top-task-link.css.map +1 -1
  97. package/dist/unordered-list/unordered-list.css +1 -1
  98. package/dist/unordered-list/unordered-list.css.map +1 -1
  99. package/dist/visually-hidden/visually-hidden.css +1 -1
  100. package/dist/visually-hidden/visually-hidden.css.map +1 -1
  101. package/documentation/coding-conventions.md +2 -2
  102. package/package.json +3 -3
  103. package/src/common/breakpoint.scss +2 -2
  104. package/src/common/hyphenation.scss +3 -3
  105. package/src/common/size.scss +1 -1
  106. package/src/components/accordion/accordion.scss +16 -16
  107. package/src/components/alert/alert.scss +15 -15
  108. package/src/components/aspect-ratio/aspect-ratio.scss +13 -13
  109. package/src/components/avatar/README.md +15 -0
  110. package/src/components/avatar/avatar.scss +74 -0
  111. package/src/components/badge/badge.scss +30 -30
  112. package/src/components/blockquote/blockquote.scss +8 -8
  113. package/src/components/breadcrumb/breadcrumb.scss +17 -17
  114. package/src/components/button/button.scss +37 -37
  115. package/src/components/card/card.scss +10 -10
  116. package/src/components/checkbox/checkbox.scss +80 -82
  117. package/src/components/column/column.scss +4 -4
  118. package/src/components/dialog/dialog.scss +16 -32
  119. package/src/components/fieldset/fieldset.scss +7 -7
  120. package/src/components/form-field-character-counter/README.md +19 -0
  121. package/src/components/form-field-character-counter/form-field-character-counter.scss +22 -0
  122. package/src/components/form-label/form-label.scss +6 -6
  123. package/src/components/gap/gap.scss +4 -4
  124. package/src/components/grid/grid.scss +41 -41
  125. package/src/components/header/header.scss +21 -21
  126. package/src/components/heading/heading.scss +24 -24
  127. package/src/components/icon/icon.scss +23 -23
  128. package/src/components/icon-button/icon-button.scss +18 -18
  129. package/src/components/image/image.scss +1 -1
  130. package/src/components/index.scss +2 -0
  131. package/src/components/link/link.scss +32 -32
  132. package/src/components/link-list/link-list.scss +27 -27
  133. package/src/components/logo/logo.scss +8 -8
  134. package/src/components/margin/margin.scss +3 -3
  135. package/src/components/mark/mark.scss +2 -2
  136. package/src/components/mega-menu/mega-menu.scss +5 -5
  137. package/src/components/ordered-list/ordered-list.scss +19 -19
  138. package/src/components/overlap/overlap.scss +1 -1
  139. package/src/components/page-heading/page-heading.scss +8 -8
  140. package/src/components/page-menu/page-menu.scss +20 -20
  141. package/src/components/pagination/pagination.scss +17 -17
  142. package/src/components/paragraph/paragraph.scss +14 -14
  143. package/src/components/radio/radio.scss +48 -48
  144. package/src/components/row/row.scss +4 -4
  145. package/src/components/screen/screen.scss +5 -5
  146. package/src/components/search-field/search-field.scss +25 -25
  147. package/src/components/skip-link/skip-link.scss +11 -11
  148. package/src/components/spotlight/spotlight.scss +16 -16
  149. package/src/components/switch/switch.scss +18 -18
  150. package/src/components/table/table.scss +16 -16
  151. package/src/components/tabs/tabs.scss +20 -20
  152. package/src/components/text-area/text-area.scss +27 -27
  153. package/src/components/text-input/text-input.scss +21 -21
  154. package/src/components/top-task-link/top-task-link.scss +20 -20
  155. package/src/components/unordered-list/unordered-list.scss +19 -19
  156. package/src/components/visually-hidden/visually-hidden.scss +1 -1
@@ -10,26 +10,26 @@
10
10
  -webkit-text-size-adjust: 100%;
11
11
  }
12
12
 
13
- .amsterdam-breadcrumb {
14
- font-family: var(--amsterdam-breadcrumb-font-family, inherit);
15
- font-size: var(--amsterdam-breadcrumb-font-size);
16
- font-weight: var(--amsterdam-breadcrumb-font-weight);
17
- line-height: var(--amsterdam-breadcrumb-line-height);
13
+ .ams-breadcrumb {
14
+ font-family: var(--ams-breadcrumb-font-family, inherit);
15
+ font-size: var(--ams-breadcrumb-font-size);
16
+ font-weight: var(--ams-breadcrumb-font-weight);
17
+ line-height: var(--ams-breadcrumb-line-height);
18
18
  }
19
19
 
20
- .amsterdam-breadcrumb__list {
20
+ .ams-breadcrumb__list {
21
21
  break-after: avoid;
22
22
  break-inside: avoid;
23
23
 
24
24
  @include reset;
25
25
  }
26
26
 
27
- .amsterdam-breadcrumb__item {
27
+ .ams-breadcrumb__item {
28
28
  display: inline;
29
29
  }
30
30
 
31
- .amsterdam-breadcrumb__item:not(:last-child)::after {
32
- background-image: var(--amsterdam-breadcrumb-separator-background-image);
31
+ .ams-breadcrumb__item:not(:last-child)::after {
32
+ background-image: var(--ams-breadcrumb-separator-background-image);
33
33
  background-repeat: no-repeat;
34
34
  content: "";
35
35
  display: inline-block;
@@ -38,15 +38,15 @@
38
38
  width: 1ex;
39
39
  }
40
40
 
41
- .amsterdam-breadcrumb__link {
42
- color: var(--amsterdam-breadcrumb-item-link-color);
43
- outline-offset: var(--amsterdam-breadcrumb-item-link-outline-offset);
44
- text-decoration-line: var(--amsterdam-breadcrumb-item-link-text-decoration-line);
45
- text-decoration-thickness: var(--amsterdam-breadcrumb-item-link-text-decoration-thickness);
46
- text-underline-offset: var(--amsterdam-breadcrumb-item-link-text-underline-offset);
41
+ .ams-breadcrumb__link {
42
+ color: var(--ams-breadcrumb-item-link-color);
43
+ outline-offset: var(--ams-breadcrumb-item-link-outline-offset);
44
+ text-decoration-line: var(--ams-breadcrumb-item-link-text-decoration-line);
45
+ text-decoration-thickness: var(--ams-breadcrumb-item-link-text-decoration-thickness);
46
+ text-underline-offset: var(--ams-breadcrumb-item-link-text-underline-offset);
47
47
 
48
48
  &:hover {
49
- color: var(--amsterdam-breadcrumb-item-link-hover-color);
50
- text-decoration-line: var(--amsterdam-breadcrumb-item-link-hover-text-decoration-line);
49
+ color: var(--ams-breadcrumb-item-link-hover-color);
50
+ text-decoration-line: var(--ams-breadcrumb-item-link-hover-text-decoration-line);
51
51
  }
52
52
  }
@@ -7,84 +7,84 @@
7
7
  -webkit-text-size-adjust: 100%;
8
8
  }
9
9
 
10
- .amsterdam-button {
10
+ .ams-button {
11
11
  border: none;
12
- cursor: var(--amsterdam-button-cursor);
12
+ cursor: var(--ams-button-cursor);
13
13
  display: inline-flex;
14
- font-family: var(--amsterdam-button-font-family);
15
- font-size: var(--amsterdam-button-font-size);
16
- gap: var(--amsterdam-button-gap);
17
- line-height: var(--amsterdam-button-line-height);
18
- outline-offset: var(--amsterdam-button-outline-offset);
19
- padding-block: var(--amsterdam-button-padding-block);
20
- padding-inline: var(--amsterdam-button-padding-inline);
14
+ font-family: var(--ams-button-font-family);
15
+ font-size: var(--ams-button-font-size);
16
+ gap: var(--ams-button-gap);
17
+ line-height: var(--ams-button-line-height);
18
+ outline-offset: var(--ams-button-outline-offset);
19
+ padding-block: var(--ams-button-padding-block);
20
+ padding-inline: var(--ams-button-padding-inline);
21
21
  touch-action: manipulation;
22
22
 
23
23
  &:disabled,
24
24
  &[aria-disabled="true"] {
25
- cursor: var(--amsterdam-button-disabled-cursor);
25
+ cursor: var(--ams-button-disabled-cursor);
26
26
  }
27
27
 
28
28
  @include reset;
29
29
  }
30
30
 
31
- @mixin amsterdam-button-forced-color-mode {
31
+ @mixin ams-button-forced-color-mode {
32
32
  @media screen and (-ms-high-contrast: active), screen and (forced-colors: active) {
33
33
  border: 2px solid ButtonBorder; // add border because forced colors changes box-shadow to none
34
34
  }
35
35
  }
36
36
 
37
- .amsterdam-button--primary {
38
- background-color: var(--amsterdam-button-primary-background-color);
39
- box-shadow: var(--amsterdam-button-primary-box-shadow);
40
- color: var(--amsterdam-button-primary-color);
37
+ .ams-button--primary {
38
+ background-color: var(--ams-button-primary-background-color);
39
+ box-shadow: var(--ams-button-primary-box-shadow);
40
+ color: var(--ams-button-primary-color);
41
41
 
42
42
  &:disabled,
43
43
  [aria-disabled="true"] {
44
- background-color: var(--amsterdam-button-primary-disabled-background-color);
45
- box-shadow: var(--amsterdam-button-primary-disabled-box-shadow);
44
+ background-color: var(--ams-button-primary-disabled-background-color);
45
+ box-shadow: var(--ams-button-primary-disabled-box-shadow);
46
46
  }
47
47
 
48
48
  &:hover:not(:disabled, [aria-disabled="true"]) {
49
- background-color: var(--amsterdam-button-primary-hover-background-color);
50
- box-shadow: var(--amsterdam-button-primary-hover-box-shadow);
49
+ background-color: var(--ams-button-primary-hover-background-color);
50
+ box-shadow: var(--ams-button-primary-hover-box-shadow);
51
51
  }
52
52
 
53
- @include amsterdam-button-forced-color-mode;
53
+ @include ams-button-forced-color-mode;
54
54
  }
55
55
 
56
- .amsterdam-button--secondary {
57
- background-color: var(--amsterdam-button-secondary-background-color);
58
- box-shadow: var(--amsterdam-button-secondary-box-shadow);
59
- color: var(--amsterdam-button-secondary-color);
56
+ .ams-button--secondary {
57
+ background-color: var(--ams-button-secondary-background-color);
58
+ box-shadow: var(--ams-button-secondary-box-shadow);
59
+ color: var(--ams-button-secondary-color);
60
60
 
61
61
  &:disabled,
62
62
  [aria-disabled="true"] {
63
- background-color: var(--amsterdam-button-secondary-disabled-background-color);
64
- box-shadow: var(--amsterdam-button-secondary-disabled-box-shadow);
65
- color: var(--amsterdam-button-secondary-disabled-color);
63
+ background-color: var(--ams-button-secondary-disabled-background-color);
64
+ box-shadow: var(--ams-button-secondary-disabled-box-shadow);
65
+ color: var(--ams-button-secondary-disabled-color);
66
66
  }
67
67
 
68
68
  &:hover:not(:disabled, [aria-disabled="true"]) {
69
- box-shadow: var(--amsterdam-button-secondary-hover-box-shadow);
70
- color: var(--amsterdam-button-secondary-hover-color);
69
+ box-shadow: var(--ams-button-secondary-hover-box-shadow);
70
+ color: var(--ams-button-secondary-hover-color);
71
71
  }
72
72
 
73
- @include amsterdam-button-forced-color-mode;
73
+ @include ams-button-forced-color-mode;
74
74
  }
75
75
 
76
- .amsterdam-button--tertiary {
77
- background-color: var(--amsterdam-button-tertiary-background-color);
78
- color: var(--amsterdam-button-tertiary-color);
76
+ .ams-button--tertiary {
77
+ background-color: var(--ams-button-tertiary-background-color);
78
+ color: var(--ams-button-tertiary-color);
79
79
 
80
80
  &:disabled,
81
81
  [aria-disabled="true"] {
82
- background-color: var(--amsterdam-button-tertiary-disabled-background-color);
83
- color: var(--amsterdam-button-tertiary-disabled-color);
82
+ background-color: var(--ams-button-tertiary-disabled-background-color);
83
+ color: var(--ams-button-tertiary-disabled-color);
84
84
  }
85
85
 
86
86
  &:hover:not(:disabled, [aria-disabled="true"]) {
87
- box-shadow: var(--amsterdam-button-tertiary-hover-box-shadow);
88
- color: var(--amsterdam-button-tertiary-hover-color);
87
+ box-shadow: var(--ams-button-tertiary-hover-box-shadow);
88
+ color: var(--ams-button-tertiary-hover-color);
89
89
  }
90
90
  }
@@ -3,10 +3,10 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
- .amsterdam-card {
6
+ .ams-card {
7
7
  display: grid;
8
8
  gap: 0.5rem;
9
- outline-offset: var(--amsterdam-card-outline-offset);
9
+ outline-offset: var(--ams-card-outline-offset);
10
10
  position: relative;
11
11
  touch-action: manipulation;
12
12
 
@@ -37,20 +37,20 @@
37
37
  }
38
38
  }
39
39
 
40
- .amsterdam-card__heading-group {
40
+ .ams-card__heading-group {
41
41
  display: flex;
42
42
  flex-direction: column-reverse;
43
43
  gap: 0.5rem;
44
44
  }
45
45
 
46
- .amsterdam-card__link {
47
- color: var(--amsterdam-card-link-color);
48
- text-decoration-line: var(--amsterdam-card-link-text-decoration-line);
49
- text-decoration-thickness: var(--amsterdam-card-link-text-decoration-thickness);
50
- text-underline-offset: var(--amsterdam-card-link-text-underline-offset);
46
+ .ams-card__link {
47
+ color: var(--ams-card-link-color);
48
+ text-decoration-line: var(--ams-card-link-text-decoration-line);
49
+ text-decoration-thickness: var(--ams-card-link-text-decoration-thickness);
50
+ text-underline-offset: var(--ams-card-link-text-underline-offset);
51
51
 
52
52
  &:hover {
53
- color: var(--amsterdam-card-link-hover-color);
54
- text-decoration-line: var(--amsterdam-card-link-hover-text-decoration-line);
53
+ color: var(--ams-card-link-hover-color);
54
+ text-decoration-line: var(--ams-card-link-hover-text-decoration-line);
55
55
  }
56
56
  }
@@ -6,23 +6,23 @@
6
6
  @import "../../common/input-label-focus";
7
7
  @import "../../common/hide-input";
8
8
 
9
- .amsterdam-checkbox__input {
9
+ .ams-checkbox__input {
10
10
  @include hide-input;
11
11
  @include input-label-focus;
12
12
  }
13
13
 
14
- .amsterdam-checkbox__checkmark {
14
+ .ams-checkbox__checkmark {
15
15
  align-items: center;
16
16
  display: flex;
17
17
  flex-shrink: 0;
18
- height: calc(var(--amsterdam-checkbox-font-size) * var(--amsterdam-checkbox-line-height));
18
+ height: calc(var(--ams-checkbox-font-size) * var(--ams-checkbox-line-height));
19
19
  width: 1.5rem;
20
20
 
21
21
  &::after {
22
22
  background-position: center;
23
23
  background-repeat: no-repeat;
24
24
  background-size: 1rem;
25
- border-color: var(--amsterdam-checkbox-checkmark-border-color);
25
+ border-color: var(--ams-checkbox-checkmark-border-color);
26
26
  border-style: solid;
27
27
  border-width: 0.125rem;
28
28
  box-sizing: border-box;
@@ -36,25 +36,25 @@
36
36
  -webkit-text-size-adjust: 100%;
37
37
  }
38
38
 
39
- .amsterdam-checkbox__label {
40
- color: var(--amsterdam-checkbox-color);
39
+ .ams-checkbox__label {
40
+ color: var(--ams-checkbox-color);
41
41
  cursor: pointer;
42
42
  display: inline-flex;
43
- font-family: var(--amsterdam-checkbox-font-family);
44
- font-size: var(--amsterdam-checkbox-font-size);
45
- font-weight: var(--amsterdam-checkbox-font-weight);
43
+ font-family: var(--ams-checkbox-font-family);
44
+ font-size: var(--ams-checkbox-font-size);
45
+ font-weight: var(--ams-checkbox-font-weight);
46
46
  gap: 0.5rem;
47
- line-height: var(--amsterdam-checkbox-line-height);
48
- outline-offset: var(--amsterdam-checkbox-outline-offset);
47
+ line-height: var(--ams-checkbox-line-height);
48
+ outline-offset: var(--ams-checkbox-outline-offset);
49
49
 
50
50
  &:hover {
51
- color: var(--amsterdam-checkbox-hover-color);
51
+ color: var(--ams-checkbox-hover-color);
52
52
  text-decoration-line: underline;
53
53
  text-decoration-thickness: 0.125rem;
54
54
  text-underline-offset: 0.375rem;
55
55
 
56
- .amsterdam-checkbox__checkmark::after {
57
- border-color: var(--amsterdam-checkbox-checkmark-hover-border-color);
56
+ .ams-checkbox__checkmark::after {
57
+ border-color: var(--ams-checkbox-checkmark-hover-border-color);
58
58
  border-width: 0.1875rem;
59
59
  }
60
60
  }
@@ -63,19 +63,19 @@
63
63
  }
64
64
 
65
65
  // Default checked
66
- .amsterdam-checkbox__input:checked {
67
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
68
- background-color: var(--amsterdam-checkbox-checkmark-checked-background-color);
69
- background-image: var(--amsterdam-checkbox-checkmark-checked-background-image);
66
+ .ams-checkbox__input:checked {
67
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
68
+ background-color: var(--ams-checkbox-checkmark-checked-background-color);
69
+ background-image: var(--ams-checkbox-checkmark-checked-background-image);
70
70
  border: none;
71
71
  }
72
72
  }
73
73
 
74
74
  // Default indeterminate
75
- .amsterdam-checkbox__input:indeterminate {
76
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
77
- background-color: var(--amsterdam-checkbox-checkmark-indeterminate-background-color);
78
- background-image: var(--amsterdam-checkbox-checkmark-indeterminate-background-image);
75
+ .ams-checkbox__input:indeterminate {
76
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
77
+ background-color: var(--ams-checkbox-checkmark-indeterminate-background-color);
78
+ background-image: var(--ams-checkbox-checkmark-indeterminate-background-image);
79
79
  background-position: center;
80
80
  background-repeat: no-repeat;
81
81
  background-size: 1rem;
@@ -84,135 +84,133 @@
84
84
  }
85
85
 
86
86
  // Invalid unchecked
87
- .amsterdam-checkbox__input:invalid,
88
- .amsterdam-checkbox__input[aria-invalid="true"] {
89
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
90
- border-color: var(--amsterdam-checkbox-checkmark-invalid-border-color);
87
+ .ams-checkbox__input:invalid,
88
+ .ams-checkbox__input[aria-invalid="true"] {
89
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
90
+ border-color: var(--ams-checkbox-checkmark-invalid-border-color);
91
91
  }
92
92
  }
93
93
 
94
94
  // Disabled unchecked
95
- .amsterdam-checkbox__input:disabled {
96
- + .amsterdam-checkbox__label {
97
- color: var(--amsterdam-checkbox-disabled-color);
95
+ .ams-checkbox__input:disabled {
96
+ + .ams-checkbox__label {
97
+ color: var(--ams-checkbox-disabled-color);
98
98
  cursor: not-allowed;
99
99
 
100
- .amsterdam-checkbox__checkmark::after {
101
- border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
100
+ .ams-checkbox__checkmark::after {
101
+ border-color: var(--ams-checkbox-checkmark-disabled-border-color);
102
102
  border-width: 0.125rem;
103
103
  }
104
104
  }
105
105
  }
106
106
 
107
107
  // Invalid checked
108
- .amsterdam-checkbox__input:invalid:checked,
109
- .amsterdam-checkbox__input[aria-invalid="true"]:checked {
110
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
111
- background-color: var(--amsterdam-checkbox-checkmark-invalid-checked-background-color);
108
+ .ams-checkbox__input:invalid:checked,
109
+ .ams-checkbox__input[aria-invalid="true"]:checked {
110
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
111
+ background-color: var(--ams-checkbox-checkmark-invalid-checked-background-color);
112
112
  }
113
113
  }
114
114
 
115
115
  // Invalid indeterminate
116
- .amsterdam-checkbox__input:invalid:indeterminate,
117
- .amsterdam-checkbox__input[aria-invalid="true"]:indeterminate {
118
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
119
- background-color: var(--amsterdam-checkbox-checkmark-invalid-indeterminate-background-color);
116
+ .ams-checkbox__input:invalid:indeterminate,
117
+ .ams-checkbox__input[aria-invalid="true"]:indeterminate {
118
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
119
+ background-color: var(--ams-checkbox-checkmark-invalid-indeterminate-background-color);
120
120
  }
121
121
  }
122
122
 
123
123
  // Disabled label
124
- .amsterdam-checkbox__input:disabled + .amsterdam-checkbox__label:hover {
124
+ .ams-checkbox__input:disabled + .ams-checkbox__label:hover {
125
125
  text-decoration: none;
126
126
  }
127
127
 
128
128
  // Disabled checked
129
- .amsterdam-checkbox__input:disabled:checked {
130
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
131
- background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-background-color);
129
+ .ams-checkbox__input:disabled:checked {
130
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
131
+ background-color: var(--ams-checkbox-checkmark-disabled-checked-background-color);
132
132
  }
133
133
  }
134
134
 
135
135
  // Disabled indeterminate
136
- .amsterdam-checkbox__input:disabled:indeterminate {
137
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
138
- background-color: var(--amsterdam-checkbox-checkmark-disabled-indeterminate-background-color);
136
+ .ams-checkbox__input:disabled:indeterminate {
137
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
138
+ background-color: var(--ams-checkbox-checkmark-disabled-indeterminate-background-color);
139
139
  }
140
140
  }
141
141
 
142
142
  // Disabled invalid unchecked
143
- .amsterdam-checkbox__input:invalid:disabled,
144
- .amsterdam-checkbox__input[aria-invalid="true"]:disabled {
145
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
143
+ .ams-checkbox__input:invalid:disabled,
144
+ .ams-checkbox__input[aria-invalid="true"]:disabled {
145
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
146
146
  // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
147
- border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
147
+ border-color: var(--ams-checkbox-checkmark-disabled-border-color);
148
148
  }
149
149
  }
150
150
 
151
151
  // HOVER STATES
152
152
 
153
153
  // Invalid unchecked hover
154
- :is(.amsterdam-checkbox__input:invalid, .amsterdam-checkbox__input[aria-invalid="true"])
155
- + .amsterdam-checkbox__label:hover
156
- .amsterdam-checkbox__checkmark::after {
154
+ :is(.ams-checkbox__input:invalid, .ams-checkbox__input[aria-invalid="true"])
155
+ + .ams-checkbox__label:hover
156
+ .ams-checkbox__checkmark::after {
157
157
  // TODO: this should be the (currently non-existent) dark red hover color
158
- border-color: var(--amsterdam-checkbox-checkmark-invalid-hover-border-color);
158
+ border-color: var(--ams-checkbox-checkmark-invalid-hover-border-color);
159
159
  }
160
160
 
161
161
  // Default checked hover
162
- .amsterdam-checkbox__input:checked + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
163
- background-color: var(--amsterdam-checkbox-checkmark-checked-hover-background-color);
162
+ .ams-checkbox__input:checked + .ams-checkbox__label:hover .ams-checkbox__checkmark::after {
163
+ background-color: var(--ams-checkbox-checkmark-checked-hover-background-color);
164
164
  }
165
165
 
166
166
  // Default indeterminate hover
167
- .amsterdam-checkbox__input:indeterminate + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
168
- background-color: var(--amsterdam-checkbox-checkmark-indeterminate-hover-background-color);
167
+ .ams-checkbox__input:indeterminate + .ams-checkbox__label:hover .ams-checkbox__checkmark::after {
168
+ background-color: var(--ams-checkbox-checkmark-indeterminate-hover-background-color);
169
169
  }
170
170
 
171
171
  // Invalid checked hover
172
- :is(.amsterdam-checkbox__input:invalid:checked, .amsterdam-checkbox__input[aria-invalid="true"]:checked)
173
- + .amsterdam-checkbox__label:hover
174
- .amsterdam-checkbox__checkmark::after {
172
+ :is(.ams-checkbox__input:invalid:checked, .ams-checkbox__input[aria-invalid="true"]:checked)
173
+ + .ams-checkbox__label:hover
174
+ .ams-checkbox__checkmark::after {
175
175
  // TODO: this should be the (currently non-existent) dark red hover color
176
- background-color: var(--amsterdam-checkbox-checkmark-invalid-checked-hover-background-color);
176
+ background-color: var(--ams-checkbox-checkmark-invalid-checked-hover-background-color);
177
177
  }
178
178
 
179
179
  // Invalid indeterminate hover
180
- :is(.amsterdam-checkbox__input:invalid:indeterminate, .amsterdam-checkbox__input[aria-invalid="true"]:indeterminate)
181
- + .amsterdam-checkbox__label:hover
182
- .amsterdam-checkbox__checkmark::after {
180
+ :is(.ams-checkbox__input:invalid:indeterminate, .ams-checkbox__input[aria-invalid="true"]:indeterminate)
181
+ + .ams-checkbox__label:hover
182
+ .ams-checkbox__checkmark::after {
183
183
  // TODO: this should be the (currently non-existent) dark red hover color
184
- background-color: var(--amsterdam-checkbox-checkmark-invalid-indeterminate-hover-background-color);
184
+ background-color: var(--ams-checkbox-checkmark-invalid-indeterminate-hover-background-color);
185
185
  }
186
186
 
187
187
  // Disabled checked hover
188
- .amsterdam-checkbox__input:disabled:checked + .amsterdam-checkbox__label:hover .amsterdam-checkbox__checkmark::after {
189
- background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-hover-background-color);
188
+ .ams-checkbox__input:disabled:checked + .ams-checkbox__label:hover .ams-checkbox__checkmark::after {
189
+ background-color: var(--ams-checkbox-checkmark-disabled-checked-hover-background-color);
190
190
  }
191
191
 
192
192
  // Disabled indeterminate hover
193
- .amsterdam-checkbox__input:disabled:indeterminate
194
- + .amsterdam-checkbox__label:hover
195
- .amsterdam-checkbox__checkmark::after {
196
- background-color: var(--amsterdam-checkbox-checkmark-disabled-indeterminate-hover-background-color);
193
+ .ams-checkbox__input:disabled:indeterminate + .ams-checkbox__label:hover .ams-checkbox__checkmark::after {
194
+ background-color: var(--ams-checkbox-checkmark-disabled-indeterminate-hover-background-color);
197
195
  }
198
196
 
199
197
  // Disabled invalid unchecked hover
200
- :is(.amsterdam-checkbox__input:invalid:disabled, .amsterdam-checkbox__input[aria-invalid="true"]:disabled)
201
- + .amsterdam-checkbox__label:hover
202
- .amsterdam-checkbox__checkmark::after {
198
+ :is(.ams-checkbox__input:invalid:disabled, .ams-checkbox__input[aria-invalid="true"]:disabled)
199
+ + .ams-checkbox__label:hover
200
+ .ams-checkbox__checkmark::after {
203
201
  // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
204
- border-color: var(--amsterdam-checkbox-checkmark-disabled-border-color);
202
+ border-color: var(--ams-checkbox-checkmark-disabled-border-color);
205
203
  }
206
204
 
207
205
  // DISABLED INVALID STATES
208
206
 
209
207
  // Disabled invalid checked & indeterminate
210
- .amsterdam-checkbox__input:invalid:disabled:checked,
211
- .amsterdam-checkbox__input:invalid:disabled:indeterminate,
212
- .amsterdam-checkbox__input[aria-invalid="true"]:disabled:checked,
213
- .amsterdam-checkbox__input[aria-invalid="true"]:disabled:indeterminate {
214
- + .amsterdam-checkbox__label .amsterdam-checkbox__checkmark::after {
208
+ .ams-checkbox__input:invalid:disabled:checked,
209
+ .ams-checkbox__input:invalid:disabled:indeterminate,
210
+ .ams-checkbox__input[aria-invalid="true"]:disabled:checked,
211
+ .ams-checkbox__input[aria-invalid="true"]:disabled:indeterminate {
212
+ + .ams-checkbox__label .ams-checkbox__checkmark::after {
215
213
  // TODO: currently disabled invalid gets the same styling as disabled. This should get its own styling.
216
- background-color: var(--amsterdam-checkbox-checkmark-disabled-checked-background-color);
214
+ background-color: var(--ams-checkbox-checkmark-disabled-checked-background-color);
217
215
  }
218
216
  }
@@ -5,12 +5,12 @@
5
5
 
6
6
  @import "../../common/size";
7
7
 
8
- .amsterdam-column {
8
+ .ams-column {
9
9
  display: grid;
10
10
  }
11
11
 
12
- @each $size, $label in $amsterdam-sizes {
13
- .amsterdam-column--#{$label} {
14
- gap: var(--amsterdam-column-gap-#{$size});
12
+ @each $size, $label in $ams-sizes {
13
+ .ams-column--#{$label} {
14
+ gap: var(--ams-column-gap-#{$size});
15
15
  }
16
16
  }
@@ -4,13 +4,12 @@
4
4
  */
5
5
 
6
6
  @import "../../common/breakpoint";
7
- @import "../../common/hyphenation";
8
7
 
9
- .amsterdam-dialog {
10
- background-color: var(--amsterdam-dialog-background-color);
11
- border: var(--amsterdam-dialog-border);
8
+ .ams-dialog {
9
+ background-color: var(--ams-dialog-background-color);
10
+ border: var(--ams-dialog-border);
12
11
  inset: 0;
13
- max-inline-size: var(--amsterdam-dialog-max-inline-size);
12
+ max-inline-size: var(--ams-dialog-max-inline-size);
14
13
  padding-block: 0;
15
14
  padding-inline: 0;
16
15
  position: fixed;
@@ -21,18 +20,18 @@
21
20
  }
22
21
  }
23
22
 
24
- .amsterdam-dialog__form {
23
+ .ams-dialog__form {
25
24
  display: grid;
26
- gap: var(--amsterdam-dialog-form-gap);
25
+ gap: var(--ams-dialog-form-gap);
27
26
  grid-template-rows: auto 1fr auto;
28
- max-block-size: var(--amsterdam-dialog-form-max-block-size);
27
+ max-block-size: var(--ams-dialog-form-max-block-size);
29
28
 
30
29
  // TODO Decide on these widths
31
- padding-block: var(--amsterdam-dialog-form-padding-block);
32
- padding-inline: var(--amsterdam-dialog-form-padding-inline);
30
+ padding-block: var(--ams-dialog-form-padding-block);
31
+ padding-inline: var(--ams-dialog-form-padding-inline);
33
32
  }
34
33
 
35
- .amsterdam-dialog__article {
34
+ .ams-dialog__article {
36
35
  display: grid;
37
36
  gap: 1.5rem; /* Until we have a consistent way of spacing text elements */
38
37
  max-block-size: 100%; /* safari */
@@ -40,34 +39,19 @@
40
39
  overscroll-behavior-y: contain;
41
40
  }
42
41
 
43
- .amsterdam-dialog__header {
42
+ .ams-dialog__header {
44
43
  align-items: flex-start;
45
44
  display: flex;
46
- gap: var(--amsterdam-dialog-header-gap);
45
+ gap: var(--ams-dialog-header-gap);
46
+ justify-content: space-between;
47
47
  }
48
48
 
49
- @mixin reset {
50
- -webkit-text-size-adjust: 100%;
51
- }
52
-
53
- .amsterdam-dialog__title {
54
- color: var(--amsterdam-dialog-title-color);
55
- flex: auto;
56
- font-family: var(--amsterdam-dialog-title-font-family);
57
- font-size: var(--amsterdam-dialog-title-font-size);
58
- font-weight: var(--amsterdam-dialog-title-font-weight);
59
- line-height: var(--amsterdam-dialog-title-line-height);
60
-
61
- @include hyphenation;
62
- @include reset;
63
- }
64
-
65
- .amsterdam-dialog__footer {
49
+ .ams-dialog__footer {
66
50
  display: flex;
67
51
  flex-direction: column;
68
- grid-gap: var(--amsterdam-dialog-footer-gap);
52
+ grid-gap: var(--ams-dialog-footer-gap);
69
53
 
70
- @media screen and (min-width: $amsterdam-breakpoint-medium) {
54
+ @media screen and (min-width: $ams-breakpoint-medium) {
71
55
  flex-direction: row;
72
56
  justify-content: end;
73
57
  }
@@ -12,7 +12,7 @@
12
12
  padding-inline: 0;
13
13
  }
14
14
 
15
- .amsterdam-fieldset {
15
+ .ams-fieldset {
16
16
  @include reset;
17
17
  }
18
18
 
@@ -21,12 +21,12 @@
21
21
  -webkit-text-size-adjust: 100%;
22
22
  }
23
23
 
24
- .amsterdam-fieldset__legend {
25
- color: var(--amsterdam-fieldset-legend-color);
26
- font-family: var(--amsterdam-fieldset-legend-font-family);
27
- font-size: var(--amsterdam-fieldset-legend-font-size);
28
- font-weight: var(--amsterdam-fieldset-legend-font-weight);
29
- line-height: var(--amsterdam-fieldset-legend-line-height);
24
+ .ams-fieldset__legend {
25
+ color: var(--ams-fieldset-legend-color);
26
+ font-family: var(--ams-fieldset-legend-font-family);
27
+ font-size: var(--ams-fieldset-legend-font-size);
28
+ font-weight: var(--ams-fieldset-legend-font-weight);
29
+ line-height: var(--ams-fieldset-legend-line-height);
30
30
  margin-block-end: 1rem; /* Because of a bug in Chrome we can’t use display grid or flex for this gap */
31
31
 
32
32
  @include hyphenation;
@@ -0,0 +1,19 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Form Field Character Counter
4
+
5
+ Help users know how much text they can enter when there is a limit on the number of characters.
6
+
7
+ Users will get updates at a pace that works best for the way they interact with the textarea. This means:
8
+
9
+ - sighted users will see a count message that updates as they type
10
+ - screen reader users will hear the count announcement when they stop typing.
11
+
12
+ This component does not restrict the user from entering information. The user can enter more than the character limit, but are told they’ve entered too many characters. This lets them type or copy and paste their full answer, then edit it down.
13
+
14
+ ## Guidelines
15
+
16
+ - Only use a character counter when there is a good reason for limiting the number of characters users can enter.
17
+ For example, if there is an indication that users are likely to enter more information than they need to.
18
+ Or when there is a legal or technical reason that means an entry must be no more than a certain number of characters.
19
+ - If your users keep hitting the character limit imposed by the backend of your service then try to increase the limit rather than use a character counter.