@amsterdam/design-system-css 0.7.1 → 0.9.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 (156) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +21 -0
  3. package/dist/accordion/accordion.css +1 -1
  4. package/dist/accordion/accordion.css.map +1 -1
  5. package/dist/avatar/avatar.css +1 -1
  6. package/dist/avatar/avatar.css.map +1 -1
  7. package/dist/badge/badge.css +1 -1
  8. package/dist/badge/badge.css.map +1 -1
  9. package/dist/blockquote/blockquote.css +1 -1
  10. package/dist/blockquote/blockquote.css.map +1 -1
  11. package/dist/breadcrumb/breadcrumb.css +1 -1
  12. package/dist/breadcrumb/breadcrumb.css.map +1 -1
  13. package/dist/button/button.css +1 -1
  14. package/dist/button/button.css.map +1 -1
  15. package/dist/card/card.css +1 -1
  16. package/dist/card/card.css.map +1 -1
  17. package/dist/checkbox/checkbox.css +1 -1
  18. package/dist/checkbox/checkbox.css.map +1 -1
  19. package/dist/date-input/date-input.css +1 -0
  20. package/dist/date-input/date-input.css.map +1 -0
  21. package/dist/description-list/description-list.css +1 -0
  22. package/dist/description-list/description-list.css.map +1 -0
  23. package/dist/dialog/dialog.css +1 -1
  24. package/dist/dialog/dialog.css.map +1 -1
  25. package/dist/document/document.css +1 -0
  26. package/dist/document/document.css.map +1 -0
  27. package/dist/error-message/error-message.css +1 -0
  28. package/dist/error-message/error-message.css.map +1 -0
  29. package/dist/field/field.css +1 -0
  30. package/dist/field/field.css.map +1 -0
  31. package/dist/field-set/field-set.css +1 -0
  32. package/dist/field-set/field-set.css.map +1 -0
  33. package/dist/file-input/file-input.css +1 -0
  34. package/dist/file-input/file-input.css.map +1 -0
  35. package/dist/form-field-character-counter/form-field-character-counter.css +1 -1
  36. package/dist/form-field-character-counter/form-field-character-counter.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/image/image.css +1 -1
  44. package/dist/image/image.css.map +1 -1
  45. package/dist/index.css +1 -1
  46. package/dist/index.css.map +1 -1
  47. package/dist/label/label.css +1 -0
  48. package/dist/label/label.css.map +1 -0
  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/ordered-list/ordered-list.css +1 -1
  56. package/dist/ordered-list/ordered-list.css.map +1 -1
  57. package/dist/page-heading/page-heading.css +1 -1
  58. package/dist/page-heading/page-heading.css.map +1 -1
  59. package/dist/page-menu/page-menu.css +1 -1
  60. package/dist/page-menu/page-menu.css.map +1 -1
  61. package/dist/pagination/pagination.css +1 -1
  62. package/dist/pagination/pagination.css.map +1 -1
  63. package/dist/paragraph/paragraph.css +1 -1
  64. package/dist/paragraph/paragraph.css.map +1 -1
  65. package/dist/radio/radio.css +1 -1
  66. package/dist/radio/radio.css.map +1 -1
  67. package/dist/screen/screen.css +1 -1
  68. package/dist/screen/screen.css.map +1 -1
  69. package/dist/search-field/search-field.css +1 -1
  70. package/dist/search-field/search-field.css.map +1 -1
  71. package/dist/select/select.css +1 -0
  72. package/dist/select/select.css.map +1 -0
  73. package/dist/switch/switch.css +1 -1
  74. package/dist/switch/switch.css.map +1 -1
  75. package/dist/table/table.css +1 -1
  76. package/dist/table/table.css.map +1 -1
  77. package/dist/tabs/tabs.css +1 -1
  78. package/dist/tabs/tabs.css.map +1 -1
  79. package/dist/text-area/text-area.css +1 -1
  80. package/dist/text-area/text-area.css.map +1 -1
  81. package/dist/text-input/text-input.css +1 -1
  82. package/dist/text-input/text-input.css.map +1 -1
  83. package/dist/time-input/time-input.css +1 -0
  84. package/dist/time-input/time-input.css.map +1 -0
  85. package/dist/top-task-link/top-task-link.css +1 -1
  86. package/dist/top-task-link/top-task-link.css.map +1 -1
  87. package/dist/unordered-list/unordered-list.css +1 -1
  88. package/dist/unordered-list/unordered-list.css.map +1 -1
  89. package/dist/visually-hidden/visually-hidden.css +1 -1
  90. package/dist/visually-hidden/visually-hidden.css.map +1 -1
  91. package/documentation/coding-conventions.md +16 -4
  92. package/package.json +5 -5
  93. package/src/common/hide-input.scss +1 -1
  94. package/src/common/text-rendering.scss +15 -0
  95. package/src/components/accordion/accordion.scss +23 -15
  96. package/src/components/avatar/avatar.scss +2 -2
  97. package/src/components/badge/badge.scss +35 -5
  98. package/src/components/blockquote/blockquote.scss +2 -1
  99. package/src/components/breadcrumb/breadcrumb.scss +12 -10
  100. package/src/components/button/button.scss +8 -5
  101. package/src/components/card/card.scss +1 -1
  102. package/src/components/checkbox/checkbox.scss +12 -15
  103. package/src/components/date-input/README.md +11 -0
  104. package/src/components/date-input/date-input.scss +77 -0
  105. package/src/components/description-list/README.md +18 -0
  106. package/src/components/description-list/description-list.scss +55 -0
  107. package/src/components/dialog/README.md +7 -0
  108. package/src/components/dialog/dialog.scss +7 -7
  109. package/src/components/document/document.scss +14 -0
  110. package/src/components/error-message/README.md +11 -0
  111. package/src/components/error-message/error-message.scss +22 -0
  112. package/src/components/field/README.md +9 -0
  113. package/src/components/field/field.scss +16 -0
  114. package/src/components/field-set/README.md +17 -0
  115. package/src/components/field-set/field-set.scss +48 -0
  116. package/src/components/file-input/README.md +9 -0
  117. package/src/components/file-input/file-input.scss +69 -0
  118. package/src/components/form-field-character-counter/form-field-character-counter.scss +2 -4
  119. package/src/components/header/header.scss +5 -5
  120. package/src/components/heading/heading.scss +2 -1
  121. package/src/components/icon/icon.scss +12 -12
  122. package/src/components/image/image.scss +3 -3
  123. package/src/components/index.scss +10 -2
  124. package/src/components/{form-label → label}/README.md +1 -1
  125. package/src/components/label/label.scss +18 -0
  126. package/src/components/link/link.scss +2 -4
  127. package/src/components/link-list/link-list.scss +6 -5
  128. package/src/components/logo/logo.scss +1 -1
  129. package/src/components/ordered-list/ordered-list.scss +10 -3
  130. package/src/components/page-heading/page-heading.scss +2 -1
  131. package/src/components/page-menu/page-menu.scss +8 -1
  132. package/src/components/pagination/README.md +1 -0
  133. package/src/components/pagination/pagination.scss +10 -7
  134. package/src/components/paragraph/paragraph.scss +5 -3
  135. package/src/components/radio/radio.scss +9 -12
  136. package/src/components/screen/screen.scss +8 -3
  137. package/src/components/search-field/search-field.scss +34 -8
  138. package/src/components/select/README.md +9 -0
  139. package/src/components/select/select.scss +62 -0
  140. package/src/components/switch/switch.scss +12 -9
  141. package/src/components/table/table.scss +1 -1
  142. package/src/components/tabs/tabs.scss +9 -3
  143. package/src/components/text-area/text-area.scss +13 -6
  144. package/src/components/text-input/text-input.scss +10 -3
  145. package/src/components/time-input/README.md +11 -0
  146. package/src/components/time-input/time-input.scss +78 -0
  147. package/src/components/top-task-link/top-task-link.scss +2 -1
  148. package/src/components/unordered-list/unordered-list.scss +10 -3
  149. package/src/components/visually-hidden/visually-hidden.scss +2 -2
  150. package/dist/fieldset/fieldset.css +0 -1
  151. package/dist/fieldset/fieldset.css.map +0 -1
  152. package/dist/form-label/form-label.css +0 -1
  153. package/dist/form-label/form-label.css.map +0 -1
  154. package/src/components/fieldset/README.md +0 -18
  155. package/src/components/fieldset/fieldset.scss +0 -34
  156. package/src/components/form-label/form-label.scss +0 -21
@@ -1 +1 @@
1
- .ams-tabs__list{border-bottom:var(--ams-tabs-list-border-bottom);display:flex;overflow-x:auto}.ams-tabs__button{background-color:var(--ams-tabs-button-background-color);border:var(--ams-tabs-button-border);color:var(--ams-tabs-button-color);cursor:var(--ams-tabs-button-cursor);font-family:var(--ams-tabs-button-font-family);font-size:var(--ams-tabs-button-font-size);font-weight:var(--ams-tabs-button-font-weight);line-height:var(--ams-tabs-button-line-height);outline-offset:var(--ams-tabs-button-outline-offset);padding-block:var(--ams-tabs-button-padding-block);padding-inline:var(--ams-tabs-button-padding-inline)}.ams-tabs__button:disabled{color:var(--ams-tabs-button-disabled-color);cursor:var(--ams-tab-button-disabled-cursor)}.ams-tabs__button:hover:not([aria-selected=true],[disabled]){box-shadow:var(--ams-tabs-button-hover-box-shadow);color:var(--ams-tabs-button-hover-color)}.ams-tabs__button[aria-selected=true]{background-color:var(--ams-tabs-button-selected-background-color);color:var(--ams-tabs-button-selected-color)}/*# sourceMappingURL=tabs.css.map */
1
+ .ams-tabs__list{background-color:var(--ams-tabs-list-background-color);border-block-end:var(--ams-tabs-list-border-block-end);display:flex;overflow-x:auto}.ams-tabs__button{color:var(--ams-tabs-button-color);cursor:var(--ams-tabs-button-cursor);font-family:var(--ams-tabs-button-font-family);font-size:var(--ams-tabs-button-font-size);font-weight:var(--ams-tabs-button-font-weight);line-height:var(--ams-tabs-button-line-height);outline-offset:var(--ams-tabs-button-outline-offset);padding-block:var(--ams-tabs-button-padding-block);padding-inline:var(--ams-tabs-button-padding-inline);background-color:rgba(0,0,0,0);border:0}.ams-tabs__button:disabled{color:var(--ams-tabs-button-disabled-color);cursor:var(--ams-tab-button-disabled-cursor)}.ams-tabs__button:hover:not([aria-selected=true],[disabled]){box-shadow:var(--ams-tabs-button-hover-box-shadow);color:var(--ams-tabs-button-hover-color)}.ams-tabs__button[aria-selected=true]{background-color:var(--ams-tabs-button-selected-background-color);color:var(--ams-tabs-button-selected-color)}/*# sourceMappingURL=tabs.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/tabs/tabs.scss"],"names":[],"mappings":"AAOA,gBACE,iDACA,aACA,gBAGF,kBACE,yDACA,qCACA,mCACA,qCACA,+CACA,2CACA,+CACA,+CACA,qDACA,mDACA,qDAEA,2BACE,4CACA,6CAGF,6DACE,mDACA,yCAGF,sCACE,kEACA","file":"tabs.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/tabs/tabs.scss"],"names":[],"mappings":"AAYA,gBACE,uDACA,uDACA,aACA,gBAGF,kBACE,mCACA,qCACA,+CACA,2CACA,+CACA,+CACA,qDACA,mDACA,qDApBA,+BACA,SAuBA,2BACE,4CACA,6CAGF,6DACE,mDACA,yCAGF,sCACE,kEACA","file":"tabs.css"}
@@ -1 +1 @@
1
- .ams-text-area{border:none;box-shadow:var(--ams-text-area-box-shadow);color:var(--ams-text-area-color);font-family:var(--ams-text-area-font-family);font-size:var(--ams-text-area-font-size);font-weight:var(--ams-text-area-font-weight);line-height:var(--ams-text-area-line-height);max-width:100%;min-height:var(--ams-text-area-min-height);outline-offset:var(--ams-text-area-outline-offset);padding-block:var(--ams-text-area-padding-block);padding-inline:var(--ams-text-area-padding-inline);touch-action:manipulation;width:100%;box-sizing:border-box;margin-block:0;-webkit-text-size-adjust:100%}.ams-text-area:hover{box-shadow:var(--ams-text-area-hover-box-shadow)}.ams-text-area::placeholder{color:var(--ams-text-area-placeholder-color)}.ams-text-area:disabled{background-color:var(--ams-text-area-disabled-background-color);box-shadow:var(--ams-text-area-disabled-box-shadow);color:var(--ams-text-area-disabled-color);cursor:var(--ams-text-area-disabled-cursor)}.ams-text-area:invalid,.ams-text-area[aria-invalid=true]{box-shadow:var(--ams-text-area-invalid-box-shadow)}.ams-text-area:invalid:hover,.ams-text-area[aria-invalid=true]:hover{box-shadow:var(--ams-text-area-invalid-hover-box-shadow)}.ams-text-area--resize-none{resize:none}.ams-text-area--resize-horizontal{resize:inline}.ams-text-area--resize-vertical{resize:block}.ams-text-area--cols{width:auto}/*# sourceMappingURL=text-area.css.map */
1
+ .ams-text-area{background-color:var(--ams-text-area-background-color);box-shadow:var(--ams-text-area-box-shadow);color:var(--ams-text-area-color);font-family:var(--ams-text-area-font-family);font-size:var(--ams-text-area-font-size);font-weight:var(--ams-text-area-font-weight);inline-size:100%;line-height:var(--ams-text-area-line-height);max-inline-size:100%;min-block-size:var(--ams-text-area-min-block-size);outline-offset:var(--ams-text-area-outline-offset);padding-block:var(--ams-text-area-padding-block);padding-inline:var(--ams-text-area-padding-inline);touch-action:manipulation;text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-appearance:none;appearance:none;border:0;border-radius:0;box-sizing:border-box;margin-block:0}.ams-text-area:hover{box-shadow:var(--ams-text-area-hover-box-shadow)}.ams-text-area::placeholder{color:var(--ams-text-area-placeholder-color);opacity:100%}.ams-text-area:disabled{background-color:var(--ams-text-area-disabled-background-color);box-shadow:var(--ams-text-area-disabled-box-shadow);color:var(--ams-text-area-disabled-color);cursor:var(--ams-text-area-disabled-cursor)}.ams-text-area:invalid,.ams-text-area[aria-invalid=true]{box-shadow:var(--ams-text-area-invalid-box-shadow)}.ams-text-area:invalid:hover,.ams-text-area[aria-invalid=true]:hover{box-shadow:var(--ams-text-area-invalid-hover-box-shadow)}.ams-text-area--resize-none{resize:none}.ams-text-area--resize-horizontal{resize:inline}.ams-text-area--resize-vertical{resize:block}.ams-text-area--cols{inline-size:auto}/*# sourceMappingURL=text-area.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/text-area/text-area.scss"],"names":[],"mappings":"AAWA,eACE,YACA,2CACA,iCACA,6CACA,yCACA,6CACA,6CACA,eACA,2CACA,mDACA,iDACA,mDACA,0BACA,WAnBA,sBACA,eACA,8BAqBA,qBACE,iDAIJ,4BACE,6CAGF,wBACE,gEACA,oDACA,0CACA,4CAGF,yDAEE,mDAEA,qEAEE,yDAIJ,4BACE,YAGF,kCACE,cAGF,gCACE,aAGF,qBACE","file":"text-area.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/text-area/text-area.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAgBA,eACE,uDACA,2CACA,iCACA,6CACA,yCACA,6CACA,iBACA,6CACA,qBACA,mDACA,mDACA,iDACA,mDACA,0BCpBA,kCACA,2BACA,8BACA,sBDLA,wBACA,gBACA,SACA,gBACA,sBACA,eAsBA,qBACE,iDAIJ,4BACE,6CACA,aAGF,wBACE,gEACA,oDACA,0CACA,4CAGF,yDAEE,mDAEA,qEAEE,yDAIJ,4BACE,YAGF,kCACE,cAGF,gCACE,aAGF,qBACE","file":"text-area.css"}
@@ -1 +1 @@
1
- .ams-text-input{border:none;box-shadow:var(--ams-text-input-box-shadow);color:var(--ams-text-input-color);font-family:var(--ams-text-input-font-family);font-size:var(--ams-text-input-font-size);font-weight:var(--ams-text-input-font-weight);line-height:var(--ams-text-input-line-height);outline-offset:var(--ams-text-input-outline-offset);padding-block:var(--ams-text-input-padding-block);padding-inline:var(--ams-text-input-padding-inline);touch-action:manipulation;width:100%;box-sizing:border-box;margin-block:0;-webkit-text-size-adjust:100%}.ams-text-input:hover{box-shadow:var(--ams-text-input-hover-box-shadow)}.ams-text-input::placeholder{color:var(--ams-text-input-placeholder-color)}.ams-text-input:disabled{background-color:var(--ams-text-input-disabled-background-color);box-shadow:var(--ams-text-input-disabled-box-shadow);color:var(--ams-text-input-disabled-color);cursor:not-allowed}.ams-text-input:invalid,.ams-text-input[aria-invalid=true]{box-shadow:var(--ams-text-input-invalid-box-shadow)}.ams-text-input:invalid:hover,.ams-text-input[aria-invalid=true]:hover{box-shadow:var(--ams-text-input-invalid-hover-box-shadow)}/*# sourceMappingURL=text-input.css.map */
1
+ .ams-text-input{background-color:var(--ams-text-input-background-color);box-shadow:var(--ams-text-input-box-shadow);color:var(--ams-text-input-color);font-family:var(--ams-text-input-font-family);font-size:var(--ams-text-input-font-size);font-weight:var(--ams-text-input-font-weight);inline-size:100%;line-height:var(--ams-text-input-line-height);outline-offset:var(--ams-text-input-outline-offset);padding-block:var(--ams-text-input-padding-block);padding-inline:var(--ams-text-input-padding-inline);touch-action:manipulation;text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-appearance:none;appearance:none;border:0;border-radius:0;box-sizing:border-box;margin-block:0}.ams-text-input:hover{box-shadow:var(--ams-text-input-hover-box-shadow)}.ams-text-input::placeholder{color:var(--ams-text-input-placeholder-color);opacity:100%}.ams-text-input:disabled{background-color:var(--ams-text-input-disabled-background-color);box-shadow:var(--ams-text-input-disabled-box-shadow);color:var(--ams-text-input-disabled-color);cursor:not-allowed}.ams-text-input:invalid,.ams-text-input[aria-invalid=true]{box-shadow:var(--ams-text-input-invalid-box-shadow)}.ams-text-input:invalid:hover,.ams-text-input[aria-invalid=true]:hover{box-shadow:var(--ams-text-input-invalid-hover-box-shadow)}/*# sourceMappingURL=text-input.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/text-input/text-input.scss"],"names":[],"mappings":"AAWA,gBACE,YACA,4CACA,kCACA,8CACA,0CACA,8CACA,8CACA,oDACA,kDACA,oDACA,0BACA,WAjBA,sBACA,eACA,8BAmBA,sBACE,kDAIJ,6BACE,8CAGF,yBACE,iEACA,qDACA,2CACA,mBAGF,2DAEE,oDAEA,uEAEE","file":"text-input.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/text-input/text-input.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAgBA,gBACE,wDACA,4CACA,kCACA,8CACA,0CACA,8CACA,iBACA,8CACA,oDACA,kDACA,oDACA,0BClBA,kCACA,2BACA,8BACA,sBDLA,wBACA,gBACA,SACA,gBACA,sBACA,eAoBA,sBACE,kDAIJ,6BACE,8CACA,aAGF,yBACE,iEACA,qDACA,2CACA,mBAGF,2DAEE,oDAEA,uEAEE","file":"text-input.css"}
@@ -0,0 +1 @@
1
+ .ams-time-input{background-color:var(--ams-time-input-background-color);box-shadow:var(--ams-time-input-box-shadow);color:var(--ams-time-input-color);font-family:var(--ams-time-input-font-family);font-size:var(--ams-time-input-font-size);font-weight:var(--ams-time-input-font-weight);line-height:var(--ams-time-input-line-height);min-block-size:calc(var(--ams-time-input-font-size)*var(--ams-time-input-line-height) + 2*var(--ams-time-input-padding-block));min-inline-size:calc(4ch + 2*var(--ams-time-input-padding-inline));outline-offset:var(--ams-time-input-outline-offset);padding-block:var(--ams-time-input-padding-block);padding-inline:var(--ams-time-input-padding-inline);touch-action:manipulation;text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-appearance:none;appearance:none;border:0;border-radius:0;box-sizing:border-box;inline-size:auto;margin-block:0}.ams-time-input:hover{box-shadow:var(--ams-time-input-hover-box-shadow)}.ams-time-input::-webkit-calendar-picker-indicator{appearance:none;background-image:var(--ams-time-input-calender-picker-indicator-background-image);cursor:pointer}.ams-time-input:hover::-webkit-calendar-picker-indicator{background-image:var(--ams-time-input-hover-calender-picker-indicator-background-image)}.ams-time-input:disabled{background-color:var(--ams-time-input-disabled-background-color);box-shadow:var(--ams-time-input-disabled-box-shadow);color:var(--ams-time-input-disabled-color);cursor:not-allowed}.ams-time-input:disabled::-webkit-calendar-picker-indicator{background-image:var(--ams-time-input-disabled-calender-picker-indicator-background-image);visibility:visible}.ams-time-input:invalid,.ams-time-input[aria-invalid=true]{box-shadow:var(--ams-time-input-invalid-box-shadow)}.ams-time-input:invalid:hover,.ams-time-input[aria-invalid=true]:hover{box-shadow:var(--ams-time-input-invalid-hover-box-shadow)}/*# sourceMappingURL=time-input.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/time-input/time-input.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAiBA,gBACE,wDACA,4CACA,kCACA,8CACA,0CACA,8CACA,8CAGA,+HAKA,mEACA,oDACA,kDACA,oDACA,0BC1BA,kCACA,2BACA,8BACA,sBDLA,wBACA,gBACA,SACA,gBACA,sBACA,iBACA,eA2BA,sBACE,kDAKJ,mDACE,gBACA,kFACA,eAGF,yDACE,wFAGF,yBACE,iEACA,qDACA,2CACA,mBAGF,4DACE,2FACA,mBAGF,2DAEE,oDAEA,uEAEE","file":"time-input.css"}
@@ -1 +1 @@
1
- .ams-top-task-link{break-inside:avoid;display:flex;flex-direction:column;gap:.5rem;outline-offset:var(--ams-top-task-link-outline-offset);text-decoration:none}.ams-top-task-link__label{color:var(--ams-top-task-link-label-color);font-family:var(--ams-top-task-link-label-font-family);font-size:var(--ams-top-task-link-label-font-size);font-weight:var(--ams-top-task-link-label-font-weight);line-height:var(--ams-top-task-link-label-line-height);text-decoration-line:var(--ams-top-task-link-label-text-decoration-line);text-decoration-thickness:var(--ams-top-task-link-label-text-decoration-thickness);text-underline-offset:var(--ams-top-task-link-label-text-underline-offset);hyphenate-limit-chars:var(--ams-hyphenation-hyphenate-limit-chars);hyphens:var(--ams-hyphenation-hyphens);overflow-wrap:var(--ams-hyphenation-overflow-wrap);box-sizing:border-box;-webkit-text-size-adjust:100%}.ams-top-task-link:hover .ams-top-task-link__label{color:var(--ams-top-task-link-label-hover-color);text-decoration-line:var(--ams-top-task-link-label-hover-text-decoration-line)}.ams-top-task-link__description{color:var(--ams-top-task-link-description-color);font-family:var(--ams-top-task-link-description-font-family);font-size:var(--ams-top-task-link-description-font-size);font-weight:var(--ams-top-task-link-description-font-weight);line-height:var(--ams-top-task-link-description-line-height);box-sizing:border-box;-webkit-text-size-adjust:100%}/*# sourceMappingURL=top-task-link.css.map */
1
+ .ams-top-task-link{break-inside:avoid;display:flex;flex-direction:column;gap:.5rem;outline-offset:var(--ams-top-task-link-outline-offset);text-decoration:none}.ams-top-task-link__label{color:var(--ams-top-task-link-label-color);font-family:var(--ams-top-task-link-label-font-family);font-size:var(--ams-top-task-link-label-font-size);font-weight:var(--ams-top-task-link-label-font-weight);line-height:var(--ams-top-task-link-label-line-height);text-decoration-line:var(--ams-top-task-link-label-text-decoration-line);text-decoration-thickness:var(--ams-top-task-link-label-text-decoration-thickness);text-underline-offset:var(--ams-top-task-link-label-text-underline-offset);hyphenate-limit-chars:var(--ams-hyphenation-hyphenate-limit-chars);hyphens:var(--ams-hyphenation-hyphens);overflow-wrap:var(--ams-hyphenation-overflow-wrap);text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}.ams-top-task-link:hover .ams-top-task-link__label{color:var(--ams-top-task-link-label-hover-color);text-decoration-line:var(--ams-top-task-link-label-hover-text-decoration-line)}.ams-top-task-link__description{color:var(--ams-top-task-link-description-color);font-family:var(--ams-top-task-link-description-font-family);font-size:var(--ams-top-task-link-description-font-size);font-weight:var(--ams-top-task-link-description-font-weight);line-height:var(--ams-top-task-link-description-line-height);box-sizing:border-box}/*# sourceMappingURL=top-task-link.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/top-task-link/top-task-link.scss","../../src/common/hyphenation.scss"],"names":[],"mappings":"AAOA,mBACE,mBACA,aACA,sBACA,UACA,uDACA,qBAQF,0BACE,2CACA,uDACA,mDACA,uDACA,uDACA,yEACA,mFACA,2ECvBA,mEACA,uCACA,mDDSA,sBACA,8BAiBF,mDACE,iDACA,+EAGF,gCACE,iDACA,6DACA,yDACA,6DACA,6DA5BA,sBACA","file":"top-task-link.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/top-task-link/top-task-link.scss","../../src/common/hyphenation.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAQA,mBACE,mBACA,aACA,sBACA,UACA,uDACA,qBAOF,0BACE,2CACA,uDACA,mDACA,uDACA,uDACA,yEACA,mFACA,2ECvBA,mEACA,uCACA,mDCEA,kCACA,2BACA,8BACA,sBFKA,sBAkBF,mDACE,iDACA,+EAGF,gCACE,iDACA,6DACA,yDACA,6DACA,6DA5BA","file":"top-task-link.css"}
@@ -1 +1 @@
1
- .ams-unordered-list{box-sizing:border-box;list-style:none;margin-block:0;padding-inline-start:0;-webkit-text-size-adjust:100%;display:grid;gap:var(--ams-unordered-list-gap)}.ams-unordered-list:not(.ams-unordered-list--no-markers){color:var(--ams-unordered-list-color);font-family:var(--ams-unordered-list-font-family);font-size:var(--ams-unordered-list-font-size);font-weight:var(--ams-unordered-list-font-weight);line-height:var(--ams-unordered-list-line-height);list-style-type:var(--ams-unordered-list-list-style-type)}.ams-unordered-list:not(.ams-unordered-list--no-markers) .ams-unordered-list__item{margin-inline-start:var(--ams-unordered-list-item-margin-inline-start);padding-inline-start:var(--ams-unordered-list-item-padding-inline-start)}.ams-unordered-list--inverse-color:not(.ams-unordered-list--no-markers){color:var(--ams-unordered-list-inverse-color)}:is(.ams-ordered-list,.ams-unordered-list) .ams-unordered-list{list-style-type:var(--ams-unordered-list-unordered-list-list-style-type)}:is(.ams-ordered-list,.ams-unordered-list) .ams-unordered-list .ams-unordered-list__item{margin-inline-start:var(--ams-unordered-list-unordered-list-item-margin-inline-start);padding-inline-start:var(--ams-unordered-list-unordered-list-item-padding-inline-start)}/*# sourceMappingURL=unordered-list.css.map */
1
+ .ams-unordered-list{display:grid;gap:var(--ams-unordered-list-gap);text-rendering:optimizeLegibility;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box;list-style:none;margin-block:0;padding-inline-start:0}.ams-unordered-list:not(.ams-unordered-list--no-markers){color:var(--ams-unordered-list-color);font-family:var(--ams-unordered-list-font-family);font-size:var(--ams-unordered-list-font-size);font-weight:var(--ams-unordered-list-font-weight);line-height:var(--ams-unordered-list-line-height);list-style-type:var(--ams-unordered-list-list-style-type)}.ams-unordered-list:not(.ams-unordered-list--no-markers) .ams-unordered-list__item{margin-inline-start:var(--ams-unordered-list-item-margin-inline-start);padding-inline-start:var(--ams-unordered-list-item-padding-inline-start)}.ams-unordered-list--inverse-color:not(.ams-unordered-list--no-markers){color:var(--ams-unordered-list-inverse-color)}.ams-unordered-list--small:not(.ams-unordered-list--no-markers){font-size:var(--ams-unordered-list-small-font-size);line-height:var(--ams-unordered-list-small-line-height)}:is(.ams-ordered-list,.ams-unordered-list) .ams-unordered-list{list-style-type:var(--ams-unordered-list-unordered-list-list-style-type)}:is(.ams-ordered-list,.ams-unordered-list) .ams-unordered-list .ams-unordered-list__item{margin-inline-start:var(--ams-unordered-list-unordered-list-item-margin-inline-start);padding-inline-start:var(--ams-unordered-list-unordered-list-item-padding-inline-start)}/*# sourceMappingURL=unordered-list.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/unordered-list/unordered-list.scss"],"names":[],"mappings":"AAeA,oBARE,sBACA,gBACA,eACA,uBACA,8BAOA,aACA,kCAIF,yDACE,sCACA,kDACA,8CACA,kDACA,kDACA,0DAGA,mFACE,uEACA,yEAIJ,wEACE,8CAIF,+DACE,yEAEA,yFACE,sFACA","file":"unordered-list.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/unordered-list/unordered-list.scss","../../src/common/text-rendering.scss"],"names":[],"mappings":"AAgBA,oBACE,aACA,kCCRA,kCACA,2BACA,8BACA,sBDJA,sBACA,gBACA,eACA,uBAaF,yDACE,sCACA,kDACA,8CACA,kDACA,kDACA,0DAGA,mFACE,uEACA,yEAIJ,wEACE,8CAGF,gEACE,oDACA,wDAIF,+DACE,yEAEA,yFACE,sFACA","file":"unordered-list.css"}
@@ -1 +1 @@
1
- .ams-visually-hidden:not(:active,:focus){clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}/*# sourceMappingURL=visually-hidden.css.map */
1
+ .ams-visually-hidden:not(:active,:focus){block-size:1px;clip:rect(0 0 0 0);clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}/*# sourceMappingURL=visually-hidden.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/components/visually-hidden/visually-hidden.scss"],"names":[],"mappings":"AAMA,yCACE,mBACA,qBACA,WACA,gBACA,kBACA,mBACA","file":"visually-hidden.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/components/visually-hidden/visually-hidden.scss"],"names":[],"mappings":"AAMA,yCACE,eACA,mBACA,qBACA,gBACA,gBACA,kBACA","file":"visually-hidden.css"}
@@ -13,8 +13,8 @@ Still, we define its thickness and offset for the initial state.
13
13
  ```css
14
14
  .ams-link {
15
15
  text-decoration: none;
16
- text-decoration-thickness: 2px;
17
- text-underline-offset: 3px;
16
+ text-decoration-thickness: 0.125rem;
17
+ text-underline-offset: 0.1667em;
18
18
 
19
19
  &:hover {
20
20
  text-decoration: underline;
@@ -30,8 +30,20 @@ Still, we define its thickness and offset for the initial state.
30
30
 
31
31
  &:hover {
32
32
  text-decoration: underline;
33
- text-decoration-thickness: 2px;
34
- text-underline-offset: 3px;
33
+ text-decoration-thickness: 0.125rem;
34
+ text-underline-offset: 0.1667em;
35
35
  }
36
36
  }
37
37
  ```
38
+
39
+ ## Use mixins for patterns and resets
40
+
41
+ We use Sass mixins to extract common patterns, especially if they need more than 1 declaration.
42
+ We collect reset styles in mixins as well.
43
+ Both the name of the mixins and their documentation help explain the approach.
44
+
45
+ ## Form validation styling
46
+
47
+ We style both the native invalid state (`:invalid`) as the invalid state you can set manually, using `aria-invalid`.
48
+ We’re currently not sure how our users will implement forms, which is why both options are supported.
49
+ [Native form validation isn’t without its issues](https://adrianroselli.com/2019/02/avoid-default-field-validation.html) though, so we might only support manual validation in the future.
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.7.1",
2
+ "version": "0.9.0",
3
3
  "author": "Community for NL Design System",
4
4
  "description": "CSS files for components for the City of Amsterdam based on the NL Design System architecture",
5
5
  "license": "EUPL-1.2",
@@ -14,11 +14,11 @@
14
14
  "directory": "packages/css"
15
15
  },
16
16
  "devDependencies": {
17
- "sass": "1.72.0",
18
- "@amsterdam/design-system-tokens": "0.7.1"
17
+ "sass": "1.77.4"
19
18
  },
20
- "dependencies": {
21
- "@utrecht/components": "3.0.0"
19
+ "peerDependencies": {
20
+ "@amsterdam/design-system-tokens": "0.9.0",
21
+ "@amsterdam/design-system-assets": "0.2.1"
22
22
  },
23
23
  "scripts": {
24
24
  "build": "sass src/components:dist/ --style=compressed",
@@ -5,7 +5,7 @@
5
5
 
6
6
  @mixin hide-input {
7
7
  appearance: none;
8
+ inline-size: 0; // Make sure the input doesn’t take up space on iOS
8
9
  margin-block: 0;
9
10
  margin-inline: 0;
10
- opacity: 0%; /* to hide native input field in older iOS */
11
11
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ /**
7
+ * Prioritizes legibility over speed when rendering text
8
+ * and disables text inflation on some mobile devices.
9
+ */
10
+ @mixin text-rendering {
11
+ text-rendering: optimizeLegibility;
12
+ -moz-text-size-adjust: none;
13
+ -webkit-text-size-adjust: none;
14
+ text-size-adjust: none;
15
+ }
@@ -3,16 +3,22 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
+ @import "../../common/text-rendering";
7
+
8
+ .ams-accordion {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--ams-accordion-gap);
12
+
13
+ @include text-rendering;
14
+ }
15
+
6
16
  .ams-accordion__header {
7
17
  display: flex;
8
18
  margin-block: 0;
9
19
  margin-inline: 0;
10
20
  }
11
21
 
12
- @mixin reset {
13
- -webkit-text-size-adjust: 100%;
14
- }
15
-
16
22
  .ams-accordion__button {
17
23
  background-color: transparent;
18
24
  border: 0;
@@ -22,34 +28,36 @@
22
28
  font-family: var(--ams-accordion-button-font-family);
23
29
  font-size: var(--ams-accordion-button-font-size);
24
30
  font-weight: var(--ams-accordion-button-font-weight);
25
- justify-content: space-between;
31
+ gap: var(--ams-accordion-button-gap);
32
+ inline-size: 100%;
26
33
  line-height: var(--ams-accordion-button-line-height);
27
34
  padding-block: var(--ams-accordion-button-padding-block);
28
35
  padding-inline: var(--ams-accordion-button-padding-inline);
29
- width: 100%;
30
36
 
31
37
  &:focus {
32
38
  outline-offset: var(--ams-accordion-button-focus-outline-offset);
33
39
  }
34
40
 
35
41
  &:hover {
36
- box-shadow: var(--ams-accordion-button-hover-box-shadow);
42
+ color: var(--ams-accordion-button-hover-color);
37
43
  }
44
+ }
38
45
 
39
- svg {
40
- transform: rotate(0deg);
41
- transition: transform 0.3s ease;
46
+ .ams-accordion__icon svg {
47
+ rotate: 0deg;
48
+ transition: none;
42
49
 
43
- @media (prefers-reduced-motion) {
44
- transition: none;
45
- }
50
+ [aria-expanded="true"] & {
51
+ rotate: -180deg;
46
52
  }
47
53
 
48
- @include reset;
54
+ @media not (prefers-reduced-motion) {
55
+ transition: rotate 0.3s ease;
56
+ }
49
57
  }
50
58
 
51
59
  .ams-accordion__button[aria-expanded="true"] svg {
52
- transform: rotate(180deg);
60
+ rotate: -180deg;
53
61
  }
54
62
 
55
63
  .ams-accordion__panel {
@@ -9,11 +9,11 @@
9
9
  display: inline-flex;
10
10
  font-family: var(--ams-avatar-font-family);
11
11
  font-size: var(--ams-avatar-font-size);
12
+ inline-size: calc(var(--ams-avatar-line-height) * var(--ams-avatar-font-size));
12
13
  line-height: var(--ams-avatar-line-height);
13
14
  padding-block: var(--ams-avatar-padding-block);
14
15
  padding-inline: var(--ams-avatar-padding-inline);
15
16
  place-content: center;
16
- width: calc(var(--ams-avatar-line-height) * var(--ams-avatar-font-size));
17
17
 
18
18
  svg {
19
19
  fill: currentColor;
@@ -21,11 +21,11 @@
21
21
  }
22
22
 
23
23
  .ams-avatar--has-image {
24
+ inline-size: calc(var(--ams-avatar-line-height) * var(--ams-avatar-font-size) + 2 * var(--ams-avatar-padding-inline));
24
25
  overflow: hidden;
25
26
  padding-block: 0;
26
27
  padding-inline: 0;
27
28
  vertical-align: middle; /* Remove ‘phantom’ white space when image doesn’t load */
28
- width: calc(var(--ams-avatar-line-height) * var(--ams-avatar-font-size) + 2 * var(--ams-avatar-padding-inline));
29
29
  }
30
30
 
31
31
  .ams-avatar--blue {
@@ -12,16 +12,16 @@
12
12
  padding-inline: var(--ams-badge-padding-inline);
13
13
  }
14
14
 
15
+ .ams-badge--black {
16
+ background-color: var(--ams-badge-black-background-color);
17
+ color: var(--ams-badge-black-color);
18
+ }
19
+
15
20
  .ams-badge--blue {
16
21
  background-color: var(--ams-badge-blue-background-color);
17
22
  color: var(--ams-badge-blue-color);
18
23
  }
19
24
 
20
- .ams-badge--dark-blue {
21
- background-color: var(--ams-badge-dark-blue-background-color);
22
- color: var(--ams-badge-dark-blue-color);
23
- }
24
-
25
25
  .ams-badge--dark-green {
26
26
  background-color: var(--ams-badge-dark-green-background-color);
27
27
  color: var(--ams-badge-dark-green-color);
@@ -32,6 +32,26 @@
32
32
  color: var(--ams-badge-green-color);
33
33
  }
34
34
 
35
+ .ams-badge--grey-1 {
36
+ background-color: var(--ams-badge-grey-1-background-color);
37
+ color: var(--ams-badge-grey-1-color);
38
+ }
39
+
40
+ .ams-badge--grey-2 {
41
+ background-color: var(--ams-badge-grey-2-background-color);
42
+ color: var(--ams-badge-grey-2-color);
43
+ }
44
+
45
+ .ams-badge--grey-3 {
46
+ background-color: var(--ams-badge-grey-3-background-color);
47
+ color: var(--ams-badge-grey-3-color);
48
+ }
49
+
50
+ .ams-badge--light-blue {
51
+ background-color: var(--ams-badge-light-blue-background-color);
52
+ color: var(--ams-badge-light-blue-color);
53
+ }
54
+
35
55
  .ams-badge--magenta {
36
56
  background-color: var(--ams-badge-magenta-background-color);
37
57
  color: var(--ams-badge-magenta-color);
@@ -47,6 +67,16 @@
47
67
  color: var(--ams-badge-purple-color);
48
68
  }
49
69
 
70
+ .ams-badge--red {
71
+ background-color: var(--ams-badge-red-background-color);
72
+ color: var(--ams-badge-red-color);
73
+ }
74
+
75
+ .ams-badge--white {
76
+ background-color: var(--ams-badge-white-background-color);
77
+ color: var(--ams-badge-white-color);
78
+ }
79
+
50
80
  .ams-badge--yellow {
51
81
  background-color: var(--ams-badge-yellow-background-color);
52
82
  color: var(--ams-badge-yellow-color);
@@ -4,12 +4,12 @@
4
4
  */
5
5
 
6
6
  @import "../../common/hyphenation";
7
+ @import "../../common/text-rendering";
7
8
 
8
9
  @mixin reset {
9
10
  box-sizing: border-box;
10
11
  margin-block: 0;
11
12
  margin-inline: 0;
12
- -webkit-text-size-adjust: 100%;
13
13
  }
14
14
 
15
15
  .ams-blockquote {
@@ -30,6 +30,7 @@
30
30
  }
31
31
 
32
32
  @include hyphenation;
33
+ @include text-rendering;
33
34
  @include reset;
34
35
  }
35
36
 
@@ -3,11 +3,12 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
+ @import "../../common/text-rendering";
7
+
6
8
  @mixin reset {
7
9
  box-sizing: border-box;
8
10
  margin-block: 0;
9
11
  padding-inline: 0;
10
- -webkit-text-size-adjust: 100%;
11
12
  }
12
13
 
13
14
  .ams-breadcrumb {
@@ -21,6 +22,7 @@
21
22
  break-after: avoid;
22
23
  break-inside: avoid;
23
24
 
25
+ @include text-rendering;
24
26
  @include reset;
25
27
  }
26
28
 
@@ -31,22 +33,22 @@
31
33
  .ams-breadcrumb__item:not(:last-child)::after {
32
34
  background-image: var(--ams-breadcrumb-separator-background-image);
33
35
  background-repeat: no-repeat;
36
+ block-size: 1ex;
34
37
  content: "";
35
38
  display: inline-block;
36
- height: 1ex;
39
+ inline-size: 1ex;
37
40
  margin-inline: 0.5rem;
38
- width: 1ex;
39
41
  }
40
42
 
41
43
  .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);
44
+ color: var(--ams-breadcrumb-link-color);
45
+ outline-offset: var(--ams-breadcrumb-link-outline-offset);
46
+ text-decoration-line: var(--ams-breadcrumb-link-text-decoration-line);
47
+ text-decoration-thickness: var(--ams-breadcrumb-link-text-decoration-thickness);
48
+ text-underline-offset: var(--ams-breadcrumb-link-text-underline-offset);
47
49
 
48
50
  &:hover {
49
- color: var(--ams-breadcrumb-item-link-hover-color);
50
- text-decoration-line: var(--ams-breadcrumb-item-link-hover-text-decoration-line);
51
+ color: var(--ams-breadcrumb-link-hover-color);
52
+ text-decoration-line: var(--ams-breadcrumb-link-hover-text-decoration-line);
51
53
  }
52
54
  }
@@ -3,17 +3,19 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
 
6
- @mixin reset {
7
- -webkit-text-size-adjust: 100%;
6
+ @import "../../common/text-rendering";
7
+
8
+ @mixin reset-button {
9
+ border: 0;
8
10
  }
9
11
 
10
12
  .ams-button {
11
- border: none;
12
13
  cursor: var(--ams-button-cursor);
13
14
  display: inline-flex;
14
15
  font-family: var(--ams-button-font-family);
15
16
  font-size: var(--ams-button-font-size);
16
17
  gap: var(--ams-button-gap);
18
+ justify-content: center;
17
19
  line-height: var(--ams-button-line-height);
18
20
  outline-offset: var(--ams-button-outline-offset);
19
21
  padding-block: var(--ams-button-padding-block);
@@ -25,12 +27,13 @@
25
27
  cursor: var(--ams-button-disabled-cursor);
26
28
  }
27
29
 
28
- @include reset;
30
+ @include text-rendering;
31
+ @include reset-button;
29
32
  }
30
33
 
31
34
  @mixin ams-button-forced-color-mode {
32
35
  @media screen and (-ms-high-contrast: active), screen and (forced-colors: active) {
33
- border: 2px solid ButtonBorder; // add border because forced colors changes box-shadow to none
36
+ border: var(--ams-button-forced-color-mode-border); // add border because forced colors changes box-shadow to none
34
37
  }
35
38
  }
36
39
 
@@ -14,7 +14,7 @@
14
14
  &:has(:focus-visible) {
15
15
  outline-color: -webkit-focus-ring-color;
16
16
  outline-style: auto;
17
- outline-width: 1px;
17
+ outline-width: 0.0625rem;
18
18
  }
19
19
 
20
20
  /*
@@ -5,6 +5,7 @@
5
5
 
6
6
  @import "../../common/input-label-focus";
7
7
  @import "../../common/hide-input";
8
+ @import "../../common/text-rendering";
8
9
 
9
10
  .ams-checkbox__input {
10
11
  @include hide-input;
@@ -13,29 +14,25 @@
13
14
 
14
15
  .ams-checkbox__checkmark {
15
16
  align-items: center;
17
+ block-size: calc(var(--ams-checkbox-font-size) * var(--ams-checkbox-line-height));
16
18
  display: flex;
17
19
  flex-shrink: 0;
18
- height: calc(var(--ams-checkbox-font-size) * var(--ams-checkbox-line-height));
19
- width: 1.5rem;
20
+ inline-size: 1.5rem;
20
21
 
21
22
  &::after {
22
23
  background-position: center;
23
24
  background-repeat: no-repeat;
24
25
  background-size: 1rem;
26
+ block-size: 1.5rem;
25
27
  border-color: var(--ams-checkbox-checkmark-border-color);
26
28
  border-style: solid;
27
- border-width: 0.125rem;
29
+ border-width: var(--ams-checkbox-checkmark-border-width);
28
30
  box-sizing: border-box;
29
31
  content: "";
30
- height: 1.5rem;
31
- width: 100%;
32
+ inline-size: 100%;
32
33
  }
33
34
  }
34
35
 
35
- @mixin reset {
36
- -webkit-text-size-adjust: 100%;
37
- }
38
-
39
36
  .ams-checkbox__label {
40
37
  color: var(--ams-checkbox-color);
41
38
  cursor: pointer;
@@ -50,16 +47,16 @@
50
47
  &:hover {
51
48
  color: var(--ams-checkbox-hover-color);
52
49
  text-decoration-line: underline;
53
- text-decoration-thickness: 0.125rem;
50
+ text-decoration-thickness: var(--ams-checkbox-hover-text-decoration-thickness);
54
51
  text-underline-offset: 0.375rem;
55
52
 
56
53
  .ams-checkbox__checkmark::after {
57
54
  border-color: var(--ams-checkbox-checkmark-hover-border-color);
58
- border-width: 0.1875rem;
55
+ border-width: var(--ams-checkbox-checkmark-hover-border-width);
59
56
  }
60
57
  }
61
58
 
62
- @include reset;
59
+ @include text-rendering;
63
60
  }
64
61
 
65
62
  // Default checked
@@ -67,7 +64,7 @@
67
64
  + .ams-checkbox__label .ams-checkbox__checkmark::after {
68
65
  background-color: var(--ams-checkbox-checkmark-checked-background-color);
69
66
  background-image: var(--ams-checkbox-checkmark-checked-background-image);
70
- border: none;
67
+ border: 0;
71
68
  }
72
69
  }
73
70
 
@@ -79,7 +76,7 @@
79
76
  background-position: center;
80
77
  background-repeat: no-repeat;
81
78
  background-size: 1rem;
82
- border: none;
79
+ border: 0;
83
80
  }
84
81
  }
85
82
 
@@ -99,7 +96,7 @@
99
96
 
100
97
  .ams-checkbox__checkmark::after {
101
98
  border-color: var(--ams-checkbox-checkmark-disabled-border-color);
102
- border-width: 0.125rem;
99
+ border-width: var(--ams-checkbox-checkmark-disabled-border-width);
103
100
  }
104
101
  }
105
102
  }
@@ -0,0 +1,11 @@
1
+ <!-- @license CC0-1.0 -->
2
+
3
+ # Date Input
4
+
5
+ Helps users enter a date.
6
+
7
+ ## Visual considerations
8
+
9
+ This component uses a native date input, which is styled differently in different browsers and operating systems.
10
+ Recreating the native functionality is quite difficult and prone to accessibility errors, which is why we’ve chosen not to do that.
11
+ This does mean that this component does not look identical on all browsers and operating systems.
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+
6
+ @import "../../common/text-rendering";
7
+
8
+ @mixin reset {
9
+ -webkit-appearance: none; // Reset appearance for Safari < 15.4
10
+ appearance: none; // Reset native appearance, this causes issues on iOS and Android devices
11
+ border: 0;
12
+ border-radius: 0; // Reset rounded borders on iOS devices
13
+ box-sizing: border-box;
14
+ margin-block: 0;
15
+ }
16
+
17
+ .ams-date-input {
18
+ background-color: var(--ams-date-input-background-color);
19
+ box-shadow: var(--ams-date-input-box-shadow);
20
+ color: var(--ams-date-input-color);
21
+ font-family: var(--ams-date-input-font-family);
22
+ font-size: var(--ams-date-input-font-size);
23
+ font-weight: var(--ams-date-input-font-weight);
24
+ line-height: var(--ams-date-input-line-height);
25
+
26
+ // Set min block size for iOS, otherwise an empty box is a lot smaller than a filled one.
27
+ min-block-size: calc(
28
+ (var(--ams-date-input-font-size) * var(--ams-date-input-line-height)) + 2 * var(--ams-date-input-padding-block)
29
+ );
30
+
31
+ // Set min inline size for iOS, so the size is closer to the filled in size.
32
+ min-inline-size: calc(8ch + (2 * var(--ams-date-input-padding-inline)));
33
+ outline-offset: var(--ams-date-input-outline-offset);
34
+ padding-block: var(--ams-date-input-padding-block);
35
+ padding-inline: var(--ams-date-input-padding-inline);
36
+ touch-action: manipulation;
37
+
38
+ @include text-rendering;
39
+ @include reset;
40
+
41
+ &:hover {
42
+ box-shadow: var(--ams-date-input-hover-box-shadow);
43
+ }
44
+ }
45
+
46
+ // This changes the default calendar icon on Chromium browsers only
47
+ .ams-date-input::-webkit-calendar-picker-indicator {
48
+ appearance: none;
49
+ background-image: var(--ams-date-input-calender-picker-indicator-background-image);
50
+ cursor: pointer;
51
+ }
52
+
53
+ .ams-date-input:hover::-webkit-calendar-picker-indicator {
54
+ background-image: var(--ams-date-input-hover-calender-picker-indicator-background-image);
55
+ }
56
+
57
+ .ams-date-input:disabled {
58
+ background-color: var(--ams-date-input-disabled-background-color);
59
+ box-shadow: var(--ams-date-input-disabled-box-shadow);
60
+ color: var(--ams-date-input-disabled-color);
61
+ cursor: not-allowed;
62
+ }
63
+
64
+ .ams-date-input:disabled::-webkit-calendar-picker-indicator {
65
+ background-image: var(--ams-date-input-disabled-calender-picker-indicator-background-image);
66
+ visibility: visible;
67
+ }
68
+
69
+ .ams-date-input:invalid,
70
+ .ams-date-input[aria-invalid="true"] {
71
+ box-shadow: var(--ams-date-input-invalid-box-shadow);
72
+
73
+ &:hover {
74
+ // TODO: this should be the (currently non-existent) dark red hover color
75
+ box-shadow: var(--ams-date-input-invalid-hover-box-shadow);
76
+ }
77
+ }