defra_ruby_template 3.15.1 → 5.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1302) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +4 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +1 -0
  5. data/Gemfile.lock +15 -0
  6. data/Rakefile +44 -24
  7. data/app/views/layouts/defra_ruby_template.html.erb +7 -11
  8. data/lib/defra_ruby_template/version.rb +1 -1
  9. data/node_modules/.package-lock.json +3 -3
  10. data/node_modules/govuk-frontend/README.md +14 -13
  11. data/node_modules/govuk-frontend/dist/govuk/_base.scss +5 -0
  12. data/node_modules/govuk-frontend/dist/govuk/_base.scss.map +1 -0
  13. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +2457 -0
  14. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -0
  15. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +2435 -0
  16. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -0
  17. data/node_modules/govuk-frontend/dist/govuk/all.mjs +15 -0
  18. data/node_modules/govuk-frontend/dist/govuk/all.mjs.map +1 -0
  19. data/node_modules/govuk-frontend/dist/govuk/all.scss +3 -0
  20. data/node_modules/govuk-frontend/dist/govuk/all.scss.map +1 -0
  21. data/node_modules/govuk-frontend/dist/govuk/assets/images/favicon.svg +1 -0
  22. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-192.png +0 -0
  23. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-512.png +0 -0
  24. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-mask.svg +1 -0
  25. data/node_modules/govuk-frontend/dist/govuk/assets/manifest.json +39 -0
  26. data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs +7 -0
  27. data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs.map +1 -0
  28. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +4 -0
  29. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs.map +1 -0
  30. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +139 -0
  31. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -0
  32. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +18 -0
  33. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map +1 -0
  34. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +31 -0
  35. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map +1 -0
  36. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss +10 -0
  37. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss.map +1 -0
  38. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +39 -0
  39. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss.map +1 -0
  40. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.scss +4 -0
  41. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.scss.map +1 -0
  42. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +366 -0
  43. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss.map +1 -0
  44. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +729 -0
  45. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -0
  46. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +721 -0
  47. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -0
  48. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +368 -0
  49. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -0
  50. data/node_modules/govuk-frontend/dist/govuk/components/accordion/fixtures.json +359 -0
  51. data/node_modules/govuk-frontend/dist/govuk/components/accordion/macro-options.json +142 -0
  52. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-default.html +30 -0
  53. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-additional-descriptions.html +39 -0
  54. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-all-sections-already-open.html +30 -0
  55. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-focusable-elements-inside.html +26 -0
  56. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-long-content-and-description.html +36 -0
  57. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-one-section-open.html +30 -0
  58. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-translations.html +30 -0
  59. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template.njk +67 -0
  60. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.scss +4 -0
  61. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.scss.map +1 -0
  62. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_index.scss +83 -0
  63. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_index.scss.map +1 -0
  64. data/node_modules/govuk-frontend/dist/govuk/components/back-link/fixtures.json +87 -0
  65. data/node_modules/govuk-frontend/dist/govuk/components/back-link/macro-options.json +32 -0
  66. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-default.html +1 -0
  67. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-inverse.html +1 -0
  68. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-with-custom-text.html +1 -0
  69. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template.njk +6 -0
  70. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.scss +4 -0
  71. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.scss.map +1 -0
  72. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_index.scss +134 -0
  73. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_index.scss.map +1 -0
  74. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/fixtures.json +240 -0
  75. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/macro-options.json +52 -0
  76. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-default.html +10 -0
  77. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-inverse.html +11 -0
  78. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-collapse-on-mobile.html +13 -0
  79. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-last-breadcrumb-as-current-page.html +11 -0
  80. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-multiple-levels.html +16 -0
  81. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-one-level.html +7 -0
  82. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-without-the-home-section.html +10 -0
  83. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template.njk +30 -0
  84. data/node_modules/govuk-frontend/dist/govuk/components/button/_button.scss +4 -0
  85. data/node_modules/govuk-frontend/dist/govuk/components/button/_button.scss.map +1 -0
  86. data/node_modules/govuk-frontend/dist/govuk/components/button/_index.scss +262 -0
  87. data/node_modules/govuk-frontend/dist/govuk/components/button/_index.scss.map +1 -0
  88. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +252 -0
  89. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -0
  90. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +244 -0
  91. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -0
  92. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +83 -0
  93. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -0
  94. data/node_modules/govuk-frontend/dist/govuk/components/button/fixtures.json +474 -0
  95. data/node_modules/govuk-frontend/dist/govuk/components/button/macro-options.json +80 -0
  96. data/node_modules/govuk-frontend/dist/govuk/components/button/template-default.html +3 -0
  97. data/node_modules/govuk-frontend/dist/govuk/components/button/template-disabled.html +3 -0
  98. data/node_modules/govuk-frontend/dist/govuk/components/button/template-input-disabled.html +1 -0
  99. data/node_modules/govuk-frontend/dist/govuk/components/button/template-input.html +1 -0
  100. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-disabled.html +3 -0
  101. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-link.html +3 -0
  102. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-start.html +6 -0
  103. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse.html +3 -0
  104. data/node_modules/govuk-frontend/dist/govuk/components/button/template-link.html +3 -0
  105. data/node_modules/govuk-frontend/dist/govuk/components/button/template-prevent-double-click.html +3 -0
  106. data/node_modules/govuk-frontend/dist/govuk/components/button/template-secondary-disabled.html +3 -0
  107. data/node_modules/govuk-frontend/dist/govuk/components/button/template-secondary-link.html +3 -0
  108. data/node_modules/govuk-frontend/dist/govuk/components/button/template-secondary.html +3 -0
  109. data/node_modules/govuk-frontend/dist/govuk/components/button/template-start-link.html +6 -0
  110. data/node_modules/govuk-frontend/dist/govuk/components/button/template-start.html +6 -0
  111. data/node_modules/govuk-frontend/dist/govuk/components/button/template-warning-disabled.html +3 -0
  112. data/node_modules/govuk-frontend/dist/govuk/components/button/template-warning-link.html +3 -0
  113. data/node_modules/govuk-frontend/dist/govuk/components/button/template-warning.html +3 -0
  114. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-active-state.html +3 -0
  115. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-focus-state.html +3 -0
  116. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-hover-state.html +3 -0
  117. data/node_modules/govuk-frontend/dist/govuk/components/button/template.njk +58 -0
  118. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.scss +4 -0
  119. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.scss.map +1 -0
  120. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +36 -0
  121. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss.map +1 -0
  122. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +695 -0
  123. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -0
  124. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +687 -0
  125. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -0
  126. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +304 -0
  127. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -0
  128. data/node_modules/govuk-frontend/dist/govuk/components/character-count/fixtures.json +398 -0
  129. data/node_modules/govuk-frontend/dist/govuk/components/character-count/macro-options.json +199 -0
  130. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-default.html +9 -0
  131. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-rows.html +9 -0
  132. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-textarea-description.html +9 -0
  133. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value-exceeding-limit.html +15 -0
  134. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value.html +12 -0
  135. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-hint.html +12 -0
  136. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-label-as-page-heading.html +11 -0
  137. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-threshold.html +9 -0
  138. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-translations.html +9 -0
  139. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-word-count.html +9 -0
  140. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template.njk +120 -0
  141. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.scss +4 -0
  142. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.scss.map +1 -0
  143. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +306 -0
  144. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss.map +1 -0
  145. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +202 -0
  146. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -0
  147. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +194 -0
  148. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -0
  149. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs +120 -0
  150. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs.map +1 -0
  151. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/fixtures.json +1411 -0
  152. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/macro-options.json +229 -0
  153. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-default.html +22 -0
  154. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-conditional-reveal.html +25 -0
  155. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-disabled.html +27 -0
  156. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-error.html +30 -0
  157. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-hint.html +30 -0
  158. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-long-text.html +27 -0
  159. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small.html +27 -0
  160. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-a-medium-legend.html +33 -0
  161. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-item-checked.html +39 -0
  162. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items-with-special-characters.html +39 -0
  163. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items.html +39 -0
  164. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-disabled-item.html +29 -0
  165. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-and-none.html +36 -0
  166. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-none-and-conditional-items.html +46 -0
  167. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message-and-hints-on-items.html +39 -0
  168. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message.html +30 -0
  169. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-fieldset-and-error-message.html +30 -0
  170. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-hints-on-items.html +29 -0
  171. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-id-and-name.html +30 -0
  172. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-legend-as-a-page-heading.html +32 -0
  173. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-optional-form-group-classes-showing-group-error.html +40 -0
  174. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-pre-checked-values.html +30 -0
  175. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-and-hint-set-aria-describedby-on-input.html +16 -0
  176. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-set-aria-describedby-on-input.html +13 -0
  177. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-very-long-option-text.html +33 -0
  178. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-without-fieldset.html +22 -0
  179. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template.njk +122 -0
  180. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.scss +4 -0
  181. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.scss.map +1 -0
  182. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +50 -0
  183. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss.map +1 -0
  184. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/fixtures.json +520 -0
  185. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/macro-options.json +132 -0
  186. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-accepted-confirmation-banner.html +19 -0
  187. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-client-side-implementation.html +60 -0
  188. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-default.html +26 -0
  189. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-rejected-confirmation-banner.html +19 -0
  190. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-with-html.html +27 -0
  191. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template.njk +57 -0
  192. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.scss +4 -0
  193. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.scss.map +1 -0
  194. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +28 -0
  195. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss.map +1 -0
  196. data/node_modules/govuk-frontend/dist/govuk/components/date-input/fixtures.json +657 -0
  197. data/node_modules/govuk-frontend/dist/govuk/components/date-input/macro-options.json +163 -0
  198. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-complete-question.html +36 -0
  199. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-day-and-month.html +28 -0
  200. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-default.html +28 -0
  201. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-month-and-year.html +28 -0
  202. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-autocomplete-values.html +36 -0
  203. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-default-items.html +36 -0
  204. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-error-on-day-input.html +39 -0
  205. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-error-on-month-input.html +39 -0
  206. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-error-on-year-input.html +39 -0
  207. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-errors-and-hint.html +39 -0
  208. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-errors-only.html +36 -0
  209. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-input-attributes.html +36 -0
  210. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-optional-form-group-classes.html +36 -0
  211. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template.njk +106 -0
  212. data/node_modules/govuk-frontend/dist/govuk/components/details/_details.scss +4 -0
  213. data/node_modules/govuk-frontend/dist/govuk/components/details/_details.scss.map +1 -0
  214. data/node_modules/govuk-frontend/dist/govuk/components/details/_index.scss +134 -0
  215. data/node_modules/govuk-frontend/dist/govuk/components/details/_index.scss.map +1 -0
  216. data/node_modules/govuk-frontend/dist/govuk/components/details/fixtures.json +123 -0
  217. data/node_modules/govuk-frontend/dist/govuk/components/details/implementation.md +87 -0
  218. data/node_modules/govuk-frontend/dist/govuk/components/details/macro-options.json +56 -0
  219. data/node_modules/govuk-frontend/dist/govuk/components/details/template-default.html +10 -0
  220. data/node_modules/govuk-frontend/dist/govuk/components/details/template-expanded.html +10 -0
  221. data/node_modules/govuk-frontend/dist/govuk/components/details/template-with-html.html +18 -0
  222. data/node_modules/govuk-frontend/dist/govuk/components/details/template.njk +14 -0
  223. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.scss +4 -0
  224. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.scss.map +1 -0
  225. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_index.scss +14 -0
  226. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_index.scss.map +1 -0
  227. data/node_modules/govuk-frontend/dist/govuk/components/error-message/fixtures.json +104 -0
  228. data/node_modules/govuk-frontend/dist/govuk/components/error-message/macro-options.json +38 -0
  229. data/node_modules/govuk-frontend/dist/govuk/components/error-message/template-default.html +3 -0
  230. data/node_modules/govuk-frontend/dist/govuk/components/error-message/template-translated.html +3 -0
  231. data/node_modules/govuk-frontend/dist/govuk/components/error-message/template.njk +13 -0
  232. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.scss +4 -0
  233. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.scss.map +1 -0
  234. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +52 -0
  235. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss.map +1 -0
  236. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +312 -0
  237. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -0
  238. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +304 -0
  239. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -0
  240. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +113 -0
  241. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -0
  242. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/fixtures.json +307 -0
  243. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/macro-options.json +82 -0
  244. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-default.html +17 -0
  245. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-mixed-with-and-without-links.html +17 -0
  246. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-description-only.html +12 -0
  247. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-everything.html +20 -0
  248. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-without-links.html +14 -0
  249. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template.njk +37 -0
  250. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/README.md +15 -0
  251. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.scss +4 -0
  252. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.scss.map +1 -0
  253. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_index.scss +92 -0
  254. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_index.scss.map +1 -0
  255. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +596 -0
  256. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -0
  257. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +588 -0
  258. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -0
  259. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +235 -0
  260. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -0
  261. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/fixtures.json +58 -0
  262. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/macro-options.json +62 -0
  263. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/macro.njk +3 -0
  264. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template-default.html +5 -0
  265. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template-translated.html +5 -0
  266. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template.njk +25 -0
  267. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.scss +4 -0
  268. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.scss.map +1 -0
  269. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +71 -0
  270. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss.map +1 -0
  271. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/fixtures.json +242 -0
  272. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/macro-options.json +70 -0
  273. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-as-page-heading-l.html +7 -0
  274. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-as-page-heading-m.html +7 -0
  275. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-as-page-heading-s.html +7 -0
  276. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-as-page-heading-without-class.html +7 -0
  277. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-as-page-heading-xl.html +7 -0
  278. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-default.html +5 -0
  279. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-styled-as-large-text.html +5 -0
  280. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-styled-as-medium-text.html +5 -0
  281. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-styled-as-small-text.html +5 -0
  282. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template-styled-as-xl-text.html +5 -0
  283. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template.njk +24 -0
  284. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.scss +4 -0
  285. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.scss.map +1 -0
  286. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +52 -0
  287. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss.map +1 -0
  288. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/fixtures.json +225 -0
  289. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/macro-options.json +125 -0
  290. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-default.html +6 -0
  291. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-error-message-and-hint.html +12 -0
  292. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-hint-text.html +9 -0
  293. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-label-as-page-heading.html +8 -0
  294. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-optional-form-group-classes.html +6 -0
  295. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-value.html +6 -0
  296. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template.njk +53 -0
  297. data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.scss +4 -0
  298. data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.scss.map +1 -0
  299. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss +152 -0
  300. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss.map +1 -0
  301. data/node_modules/govuk-frontend/dist/govuk/components/footer/fixtures.json +691 -0
  302. data/node_modules/govuk-frontend/dist/govuk/components/footer/macro-options.json +164 -0
  303. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-default.html +38 -0
  304. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-full-gds-example.html +212 -0
  305. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-three-equal-columns.html +146 -0
  306. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-html-content-licence-and-copyright-notice.html +33 -0
  307. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-meta.html +42 -0
  308. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-text-content-licence-and-copyright-notice.html +33 -0
  309. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-one-column.html +76 -0
  310. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-two-columns.html +76 -0
  311. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta-links-and-meta-content.html +84 -0
  312. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta.html +56 -0
  313. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-navigation.html +96 -0
  314. data/node_modules/govuk-frontend/dist/govuk/components/footer/template.njk +97 -0
  315. data/node_modules/govuk-frontend/dist/govuk/components/header/_header.scss +4 -0
  316. data/node_modules/govuk-frontend/dist/govuk/components/header/_header.scss.map +1 -0
  317. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +346 -0
  318. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss.map +1 -0
  319. data/node_modules/govuk-frontend/dist/govuk/components/header/fixtures.json +504 -0
  320. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +186 -0
  321. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -0
  322. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +178 -0
  323. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -0
  324. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs +97 -0
  325. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs.map +1 -0
  326. data/node_modules/govuk-frontend/dist/govuk/components/header/macro-options.json +112 -0
  327. data/node_modules/govuk-frontend/dist/govuk/components/header/template-default.html +21 -0
  328. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width-with-navigation.html +49 -0
  329. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width.html +24 -0
  330. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-html.html +49 -0
  331. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-text-without-link.html +43 -0
  332. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-label.html +51 -0
  333. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-text.html +51 -0
  334. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-navigation-label.html +51 -0
  335. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-large-navigation.html +111 -0
  336. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-navigation.html +51 -0
  337. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-product-name.html +24 -0
  338. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-and-navigation.html +54 -0
  339. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-but-no-service-url.html +26 -0
  340. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name.html +26 -0
  341. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-st-edwards-crown.html +21 -0
  342. data/node_modules/govuk-frontend/dist/govuk/components/header/template.njk +96 -0
  343. data/node_modules/govuk-frontend/dist/govuk/components/hint/_hint.scss +4 -0
  344. data/node_modules/govuk-frontend/dist/govuk/components/hint/_hint.scss.map +1 -0
  345. data/node_modules/govuk-frontend/dist/govuk/components/hint/_index.scss +45 -0
  346. data/node_modules/govuk-frontend/dist/govuk/components/hint/_index.scss.map +1 -0
  347. data/node_modules/govuk-frontend/dist/govuk/components/hint/fixtures.json +71 -0
  348. data/node_modules/govuk-frontend/dist/govuk/components/hint/macro-options.json +32 -0
  349. data/node_modules/govuk-frontend/dist/govuk/components/hint/template-default.html +5 -0
  350. data/node_modules/govuk-frontend/dist/govuk/components/hint/template-with-html.html +4 -0
  351. data/node_modules/govuk-frontend/dist/govuk/components/hint/template.njk +6 -0
  352. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +165 -0
  353. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss.map +1 -0
  354. data/node_modules/govuk-frontend/dist/govuk/components/input/_input.scss +4 -0
  355. data/node_modules/govuk-frontend/dist/govuk/components/input/_input.scss.map +1 -0
  356. data/node_modules/govuk-frontend/dist/govuk/components/input/fixtures.json +781 -0
  357. data/node_modules/govuk-frontend/dist/govuk/components/input/macro-options.json +245 -0
  358. data/node_modules/govuk-frontend/dist/govuk/components/input/template-default.html +6 -0
  359. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocapitalize-turned-off.html +6 -0
  360. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocomplete-attribute.html +6 -0
  361. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-error-message.html +12 -0
  362. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-extra-letter-spacing.html +6 -0
  363. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-hint-text.html +9 -0
  364. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-label-as-page-heading.html +8 -0
  365. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-optional-form-group-classes.html +6 -0
  366. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-pattern-attribute.html +6 -0
  367. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix-and-long-suffix.html +10 -0
  368. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix-and-suffix-and-error.html +13 -0
  369. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix-and-suffix-and-width-modifier.html +10 -0
  370. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix-and-suffix.html +10 -0
  371. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix.html +9 -0
  372. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-spellcheck-disabled.html +6 -0
  373. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-spellcheck-enabled.html +6 -0
  374. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-suffix.html +9 -0
  375. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-10-class.html +9 -0
  376. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-2-class.html +9 -0
  377. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-20-class.html +9 -0
  378. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-3-class.html +9 -0
  379. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-30-class.html +9 -0
  380. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-4-class.html +9 -0
  381. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-width-5-class.html +9 -0
  382. data/node_modules/govuk-frontend/dist/govuk/components/input/template.njk +132 -0
  383. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_index.scss +26 -0
  384. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_index.scss.map +1 -0
  385. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.scss +4 -0
  386. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.scss.map +1 -0
  387. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/fixtures.json +70 -0
  388. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/macro-options.json +38 -0
  389. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template-default.html +3 -0
  390. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template-with-html.html +11 -0
  391. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template.njk +6 -0
  392. data/node_modules/govuk-frontend/dist/govuk/components/label/_index.scss +46 -0
  393. data/node_modules/govuk-frontend/dist/govuk/components/label/_index.scss.map +1 -0
  394. data/node_modules/govuk-frontend/dist/govuk/components/label/_label.scss +4 -0
  395. data/node_modules/govuk-frontend/dist/govuk/components/label/_label.scss.map +1 -0
  396. data/node_modules/govuk-frontend/dist/govuk/components/label/fixtures.json +193 -0
  397. data/node_modules/govuk-frontend/dist/govuk/components/label/macro-options.json +38 -0
  398. data/node_modules/govuk-frontend/dist/govuk/components/label/template-as-page-heading-l.html +5 -0
  399. data/node_modules/govuk-frontend/dist/govuk/components/label/template-as-page-heading-m.html +5 -0
  400. data/node_modules/govuk-frontend/dist/govuk/components/label/template-as-page-heading-s.html +5 -0
  401. data/node_modules/govuk-frontend/dist/govuk/components/label/template-as-page-heading-without-class.html +5 -0
  402. data/node_modules/govuk-frontend/dist/govuk/components/label/template-as-page-heading-xl.html +5 -0
  403. data/node_modules/govuk-frontend/dist/govuk/components/label/template-default.html +3 -0
  404. data/node_modules/govuk-frontend/dist/govuk/components/label/template-styled-as-large-text.html +3 -0
  405. data/node_modules/govuk-frontend/dist/govuk/components/label/template-styled-as-medium-text.html +3 -0
  406. data/node_modules/govuk-frontend/dist/govuk/components/label/template-styled-as-small-text.html +3 -0
  407. data/node_modules/govuk-frontend/dist/govuk/components/label/template-styled-as-xl-text.html +3 -0
  408. data/node_modules/govuk-frontend/dist/govuk/components/label/template-with-bold-text.html +3 -0
  409. data/node_modules/govuk-frontend/dist/govuk/components/label/template.njk +19 -0
  410. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +92 -0
  411. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss.map +1 -0
  412. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.scss +4 -0
  413. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.scss.map +1 -0
  414. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/fixtures.json +270 -0
  415. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/macro-options.json +74 -0
  416. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +254 -0
  417. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -0
  418. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +246 -0
  419. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -0
  420. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +61 -0
  421. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -0
  422. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-disabled-with-type-as-success.html +12 -0
  423. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-explicitly-enabled-with-type-as-success.html +12 -0
  424. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-custom-tabindex.html +12 -0
  425. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-default.html +12 -0
  426. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-paragraph-as-html-heading.html +10 -0
  427. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-rolealert-overridden-to-roleregion-with-type-as-success.html +12 -0
  428. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-success-with-custom-html.html +16 -0
  429. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-a-list.html +16 -0
  430. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-long-heading.html +12 -0
  431. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-lots-of-content.html +19 -0
  432. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-text-as-html.html +15 -0
  433. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-type-as-success.html +12 -0
  434. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template.njk +49 -0
  435. data/node_modules/govuk-frontend/dist/govuk/components/pagination/README.md +15 -0
  436. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +241 -0
  437. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss.map +1 -0
  438. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.scss +4 -0
  439. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.scss.map +1 -0
  440. data/node_modules/govuk-frontend/dist/govuk/components/pagination/fixtures.json +396 -0
  441. data/node_modules/govuk-frontend/dist/govuk/components/pagination/macro-options.json +140 -0
  442. data/node_modules/govuk-frontend/dist/govuk/components/pagination/macro.njk +3 -0
  443. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-default.html +39 -0
  444. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-first-page.html +29 -0
  445. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-last-page.html +29 -0
  446. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-accessible-labels-on-item-links.html +39 -0
  447. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-link-and-item-text.html +39 -0
  448. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-navigation-landmark.html +39 -0
  449. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-many-pages.html +65 -0
  450. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-next-only.html +12 -0
  451. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-labels.html +26 -0
  452. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-very-long-labels.html +26 -0
  453. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-in-a-different-language.html +22 -0
  454. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only.html +22 -0
  455. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-previous-only.html +12 -0
  456. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template.njk +85 -0
  457. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +54 -0
  458. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss.map +1 -0
  459. data/node_modules/govuk-frontend/dist/govuk/components/panel/_panel.scss +4 -0
  460. data/node_modules/govuk-frontend/dist/govuk/components/panel/_panel.scss.map +1 -0
  461. data/node_modules/govuk-frontend/dist/govuk/components/panel/fixtures.json +109 -0
  462. data/node_modules/govuk-frontend/dist/govuk/components/panel/macro-options.json +50 -0
  463. data/node_modules/govuk-frontend/dist/govuk/components/panel/template-custom-heading-level.html +8 -0
  464. data/node_modules/govuk-frontend/dist/govuk/components/panel/template-default.html +8 -0
  465. data/node_modules/govuk-frontend/dist/govuk/components/panel/template.njk +16 -0
  466. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +54 -0
  467. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss.map +1 -0
  468. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +4 -0
  469. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss.map +1 -0
  470. data/node_modules/govuk-frontend/dist/govuk/components/password-input/fixtures.json +185 -0
  471. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro-options.json +181 -0
  472. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro.njk +3 -0
  473. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +528 -0
  474. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -0
  475. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +520 -0
  476. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -0
  477. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +163 -0
  478. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -0
  479. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-default.html +11 -0
  480. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-error-message.html +17 -0
  481. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-hint-text.html +14 -0
  482. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-input-width-class.html +11 -0
  483. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-label-as-page-heading.html +13 -0
  484. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-new-password-autocomplete.html +11 -0
  485. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-translations.html +11 -0
  486. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template.njk +91 -0
  487. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +44 -0
  488. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss.map +1 -0
  489. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.scss +4 -0
  490. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.scss.map +1 -0
  491. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/fixtures.json +90 -0
  492. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/macro-options.json +33 -0
  493. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/template-default.html +10 -0
  494. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/template.njk +17 -0
  495. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +326 -0
  496. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss.map +1 -0
  497. data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.scss +4 -0
  498. data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.scss.map +1 -0
  499. data/node_modules/govuk-frontend/dist/govuk/components/radios/fixtures.json +1403 -0
  500. data/node_modules/govuk-frontend/dist/govuk/components/radios/macro-options.json +211 -0
  501. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +179 -0
  502. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -0
  503. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +171 -0
  504. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -0
  505. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs +97 -0
  506. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs.map +1 -0
  507. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-default.html +19 -0
  508. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-inline.html +24 -0
  509. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked-using-value.html +16 -0
  510. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked.html +19 -0
  511. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline-extreme.html +69 -0
  512. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline.html +27 -0
  513. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-a-divider.html +28 -0
  514. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-conditional-reveal.html +31 -0
  515. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-disabled.html +27 -0
  516. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-error.html +30 -0
  517. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-hint.html +30 -0
  518. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-long-text.html +27 -0
  519. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small.html +27 -0
  520. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-divider.html +28 -0
  521. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-medium-legend.html +24 -0
  522. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-item-checked.html +39 -0
  523. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-and-pre-checked-value.html +39 -0
  524. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-with-special-characters.html +39 -0
  525. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items.html +39 -0
  526. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-disabled.html +29 -0
  527. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-fieldset-and-error-message.html +24 -0
  528. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-hints-on-items.html +29 -0
  529. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-idprefix.html +16 -0
  530. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-legend-as-page-heading.html +26 -0
  531. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-optional-form-group-classes-showing-group-error.html +40 -0
  532. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-very-long-option-text.html +33 -0
  533. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-without-fieldset.html +22 -0
  534. data/node_modules/govuk-frontend/dist/govuk/components/radios/template.njk +115 -0
  535. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +59 -0
  536. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss.map +1 -0
  537. data/node_modules/govuk-frontend/dist/govuk/components/select/_select.scss +4 -0
  538. data/node_modules/govuk-frontend/dist/govuk/components/select/_select.scss.map +1 -0
  539. data/node_modules/govuk-frontend/dist/govuk/components/select/fixtures.json +532 -0
  540. data/node_modules/govuk-frontend/dist/govuk/components/select/macro-options.json +163 -0
  541. data/node_modules/govuk-frontend/dist/govuk/components/select/template-default.html +10 -0
  542. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-full-width-override.html +10 -0
  543. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-hint-text-and-error-message.html +16 -0
  544. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-label-as-page-heading.html +12 -0
  545. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-no-items.html +7 -0
  546. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-optional-form-group-classes.html +10 -0
  547. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-selected-value.html +10 -0
  548. data/node_modules/govuk-frontend/dist/govuk/components/select/template.njk +66 -0
  549. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +50 -0
  550. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss.map +1 -0
  551. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.scss +4 -0
  552. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.scss.map +1 -0
  553. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/fixtures.json +104 -0
  554. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/macro-options.json +32 -0
  555. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +177 -0
  556. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -0
  557. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +169 -0
  558. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -0
  559. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs +66 -0
  560. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs.map +1 -0
  561. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/template-default.html +1 -0
  562. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/template-with-focus.html +1 -0
  563. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/template.njk +6 -0
  564. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +277 -0
  565. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss.map +1 -0
  566. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.scss +4 -0
  567. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.scss.map +1 -0
  568. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/fixtures.json +1591 -0
  569. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/macro-options.json +248 -0
  570. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-custom-header-level.html +28 -0
  571. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-html-header.html +28 -0
  572. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-text-header.html +28 -0
  573. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions-plus-summary-list-actions.html +49 -0
  574. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions.html +36 -0
  575. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-check-your-answers.html +98 -0
  576. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-default.html +35 -0
  577. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-extreme.html +261 -0
  578. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border-on-last-row.html +35 -0
  579. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border.html +35 -0
  580. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-overridden-widths.html +58 -0
  581. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-translated.html +51 -0
  582. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-actions.html +58 -0
  583. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-no-first-action.html +58 -0
  584. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-some-actions.html +45 -0
  585. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template.njk +94 -0
  586. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss +75 -0
  587. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss.map +1 -0
  588. data/node_modules/govuk-frontend/dist/govuk/components/table/_table.scss +4 -0
  589. data/node_modules/govuk-frontend/dist/govuk/components/table/_table.scss.map +1 -0
  590. data/node_modules/govuk-frontend/dist/govuk/components/table/fixtures.json +630 -0
  591. data/node_modules/govuk-frontend/dist/govuk/components/table/macro-options.json +132 -0
  592. data/node_modules/govuk-frontend/dist/govuk/components/table/template-default.html +19 -0
  593. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head-and-caption.html +27 -0
  594. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head.html +26 -0
  595. data/node_modules/govuk-frontend/dist/govuk/components/table/template-with-small-text-modifier-for-tables-with-a-lot-of-data.html +19 -0
  596. data/node_modules/govuk-frontend/dist/govuk/components/table/template.njk +57 -0
  597. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_index.scss +134 -0
  598. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_index.scss.map +1 -0
  599. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_tabs.scss +4 -0
  600. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_tabs.scss.map +1 -0
  601. data/node_modules/govuk-frontend/dist/govuk/components/tabs/fixtures.json +314 -0
  602. data/node_modules/govuk-frontend/dist/govuk/components/tabs/macro-options.json +84 -0
  603. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +391 -0
  604. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -0
  605. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +383 -0
  606. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -0
  607. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +296 -0
  608. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs.map +1 -0
  609. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-default.html +117 -0
  610. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-tabs-with-anchor-in-panel.html +26 -0
  611. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template.njk +48 -0
  612. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +94 -0
  613. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss.map +1 -0
  614. data/node_modules/govuk-frontend/dist/govuk/components/tag/_tag.scss +4 -0
  615. data/node_modules/govuk-frontend/dist/govuk/components/tag/_tag.scss.map +1 -0
  616. data/node_modules/govuk-frontend/dist/govuk/components/tag/fixtures.json +159 -0
  617. data/node_modules/govuk-frontend/dist/govuk/components/tag/macro-options.json +26 -0
  618. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-blue.html +3 -0
  619. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-default.html +3 -0
  620. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-green.html +3 -0
  621. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-grey.html +3 -0
  622. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-light-blue.html +3 -0
  623. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-orange.html +3 -0
  624. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-pink.html +3 -0
  625. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-purple.html +3 -0
  626. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-red.html +3 -0
  627. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-turquoise.html +3 -0
  628. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-yellow.html +3 -0
  629. data/node_modules/govuk-frontend/dist/govuk/components/tag/template.njk +6 -0
  630. data/node_modules/govuk-frontend/dist/govuk/components/task-list/README.md +15 -0
  631. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +77 -0
  632. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss.map +1 -0
  633. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.scss +4 -0
  634. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.scss.map +1 -0
  635. data/node_modules/govuk-frontend/dist/govuk/components/task-list/fixtures.json +542 -0
  636. data/node_modules/govuk-frontend/dist/govuk/components/task-list/macro-options.json +119 -0
  637. data/node_modules/govuk-frontend/dist/govuk/components/task-list/macro.njk +3 -0
  638. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-default.html +37 -0
  639. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-3-states.html +49 -0
  640. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-all-possible-colours.html +143 -0
  641. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-hint-text-and-additional-states.html +77 -0
  642. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-very-long-single-word-tags.html +37 -0
  643. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template.njk +41 -0
  644. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +50 -0
  645. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss.map +1 -0
  646. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.scss +4 -0
  647. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.scss.map +1 -0
  648. data/node_modules/govuk-frontend/dist/govuk/components/textarea/fixtures.json +285 -0
  649. data/node_modules/govuk-frontend/dist/govuk/components/textarea/macro-options.json +143 -0
  650. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-default.html +6 -0
  651. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-autocomplete-attribute.html +6 -0
  652. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-custom-rows.html +6 -0
  653. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-default-value.html +9 -0
  654. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-error-message.html +9 -0
  655. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-hint.html +9 -0
  656. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-label-as-page-heading.html +8 -0
  657. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-optional-form-group-classes.html +6 -0
  658. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-spellcheck-disabled.html +6 -0
  659. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-spellcheck-enabled.html +6 -0
  660. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template.njk +54 -0
  661. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +65 -0
  662. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss.map +1 -0
  663. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.scss +4 -0
  664. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.scss.map +1 -0
  665. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/fixtures.json +93 -0
  666. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/macro-options.json +32 -0
  667. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/template-default.html +7 -0
  668. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/template-multiple-lines.html +7 -0
  669. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/template.njk +10 -0
  670. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss +10 -0
  671. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss.map +1 -0
  672. data/node_modules/govuk-frontend/dist/govuk/core/_global-styles.scss +20 -0
  673. data/node_modules/govuk-frontend/dist/govuk/core/_global-styles.scss.map +1 -0
  674. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +12 -0
  675. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss.map +1 -0
  676. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss +8 -0
  677. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss.map +1 -0
  678. data/node_modules/govuk-frontend/dist/govuk/core/_links.scss +42 -0
  679. data/node_modules/govuk-frontend/dist/govuk/core/_links.scss.map +1 -0
  680. data/node_modules/govuk-frontend/dist/govuk/core/_lists.scss +67 -0
  681. data/node_modules/govuk-frontend/dist/govuk/core/_lists.scss.map +1 -0
  682. data/node_modules/govuk-frontend/dist/govuk/core/_section-break.scss +51 -0
  683. data/node_modules/govuk-frontend/dist/govuk/core/_section-break.scss.map +1 -0
  684. data/node_modules/govuk-frontend/dist/govuk/core/_typography.scss +189 -0
  685. data/node_modules/govuk-frontend/dist/govuk/core/_typography.scss.map +1 -0
  686. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs +44 -0
  687. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs.map +1 -0
  688. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs +16 -0
  689. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs.map +1 -0
  690. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +3 -0
  691. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -0
  692. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -0
  693. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -0
  694. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss +10 -0
  695. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss.map +1 -0
  696. data/node_modules/govuk-frontend/dist/govuk/helpers/_clearfix.scss +17 -0
  697. data/node_modules/govuk-frontend/dist/govuk/helpers/_clearfix.scss.map +1 -0
  698. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +91 -0
  699. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss.map +1 -0
  700. data/node_modules/govuk-frontend/dist/govuk/helpers/_device-pixels.scss +38 -0
  701. data/node_modules/govuk-frontend/dist/govuk/helpers/_device-pixels.scss.map +1 -0
  702. data/node_modules/govuk-frontend/dist/govuk/helpers/_focused.scss +49 -0
  703. data/node_modules/govuk-frontend/dist/govuk/helpers/_focused.scss.map +1 -0
  704. data/node_modules/govuk-frontend/dist/govuk/helpers/_font-faces.scss +41 -0
  705. data/node_modules/govuk-frontend/dist/govuk/helpers/_font-faces.scss.map +1 -0
  706. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +63 -0
  707. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss.map +1 -0
  708. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss +14 -0
  709. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss.map +1 -0
  710. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +391 -0
  711. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss.map +1 -0
  712. data/node_modules/govuk-frontend/dist/govuk/helpers/_media-queries.scss +82 -0
  713. data/node_modules/govuk-frontend/dist/govuk/helpers/_media-queries.scss.map +1 -0
  714. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +82 -0
  715. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss.map +1 -0
  716. data/node_modules/govuk-frontend/dist/govuk/helpers/_spacing.scss +173 -0
  717. data/node_modules/govuk-frontend/dist/govuk/helpers/_spacing.scss.map +1 -0
  718. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +271 -0
  719. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss.map +1 -0
  720. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +117 -0
  721. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss.map +1 -0
  722. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +195 -0
  723. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs.map +1 -0
  724. data/node_modules/govuk-frontend/dist/govuk/index.scss +11 -0
  725. data/node_modules/govuk-frontend/dist/govuk/index.scss.map +1 -0
  726. data/node_modules/govuk-frontend/dist/govuk/init.mjs +100 -0
  727. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -0
  728. data/node_modules/govuk-frontend/dist/govuk/macros/attributes.njk +94 -0
  729. data/node_modules/govuk-frontend/dist/govuk/macros/i18n.njk +21 -0
  730. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss +10 -0
  731. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss.map +1 -0
  732. data/node_modules/govuk-frontend/dist/govuk/objects/_button-group.scss +80 -0
  733. data/node_modules/govuk-frontend/dist/govuk/objects/_button-group.scss.map +1 -0
  734. data/node_modules/govuk-frontend/dist/govuk/objects/_form-group.scss +25 -0
  735. data/node_modules/govuk-frontend/dist/govuk/objects/_form-group.scss.map +1 -0
  736. data/node_modules/govuk-frontend/dist/govuk/objects/_grid.scss +26 -0
  737. data/node_modules/govuk-frontend/dist/govuk/objects/_grid.scss.map +1 -0
  738. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss +8 -0
  739. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss.map +1 -0
  740. data/node_modules/govuk-frontend/dist/govuk/objects/_main-wrapper.scss +55 -0
  741. data/node_modules/govuk-frontend/dist/govuk/objects/_main-wrapper.scss.map +1 -0
  742. data/node_modules/govuk-frontend/dist/govuk/objects/_template.scss +53 -0
  743. data/node_modules/govuk-frontend/dist/govuk/objects/_template.scss.map +1 -0
  744. data/node_modules/govuk-frontend/dist/govuk/objects/_width-container.scss +77 -0
  745. data/node_modules/govuk-frontend/dist/govuk/objects/_width-container.scss.map +1 -0
  746. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss +9 -0
  747. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss.map +1 -0
  748. data/node_modules/govuk-frontend/dist/govuk/overrides/_display.scss +26 -0
  749. data/node_modules/govuk-frontend/dist/govuk/overrides/_display.scss.map +1 -0
  750. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss +7 -0
  751. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss.map +1 -0
  752. data/node_modules/govuk-frontend/dist/govuk/overrides/_spacing.scss +86 -0
  753. data/node_modules/govuk-frontend/dist/govuk/overrides/_spacing.scss.map +1 -0
  754. data/node_modules/govuk-frontend/dist/govuk/overrides/_text-align.scss +16 -0
  755. data/node_modules/govuk-frontend/dist/govuk/overrides/_text-align.scss.map +1 -0
  756. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +38 -0
  757. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss.map +1 -0
  758. data/node_modules/govuk-frontend/dist/govuk/overrides/_width.scss +48 -0
  759. data/node_modules/govuk-frontend/dist/govuk/overrides/_width.scss.map +1 -0
  760. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss +10 -0
  761. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss.map +1 -0
  762. data/node_modules/govuk-frontend/dist/govuk/settings/_assets.scss +84 -0
  763. data/node_modules/govuk-frontend/dist/govuk/settings/_assets.scss.map +1 -0
  764. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.scss +157 -0
  765. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.scss.map +1 -0
  766. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +148 -0
  767. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss.map +1 -0
  768. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-palette.scss +37 -0
  769. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-palette.scss.map +1 -0
  770. data/node_modules/govuk-frontend/dist/govuk/settings/_global-styles.scss +15 -0
  771. data/node_modules/govuk-frontend/dist/govuk/settings/_global-styles.scss.map +1 -0
  772. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss +23 -0
  773. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss.map +1 -0
  774. data/node_modules/govuk-frontend/dist/govuk/settings/_links.scss +49 -0
  775. data/node_modules/govuk-frontend/dist/govuk/settings/_links.scss.map +1 -0
  776. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss +107 -0
  777. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss.map +1 -0
  778. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss +25 -0
  779. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss.map +1 -0
  780. data/node_modules/govuk-frontend/dist/govuk/settings/_spacing.scss +78 -0
  781. data/node_modules/govuk-frontend/dist/govuk/settings/_spacing.scss.map +1 -0
  782. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss +52 -0
  783. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss.map +1 -0
  784. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +322 -0
  785. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss.map +1 -0
  786. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss +78 -0
  787. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss.map +1 -0
  788. data/node_modules/govuk-frontend/dist/govuk/template.njk +58 -0
  789. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss +10 -0
  790. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss.map +1 -0
  791. data/node_modules/govuk-frontend/dist/govuk/tools/_exports.scss +35 -0
  792. data/node_modules/govuk-frontend/dist/govuk/tools/_exports.scss.map +1 -0
  793. data/node_modules/govuk-frontend/dist/govuk/tools/_font-url.scss +28 -0
  794. data/node_modules/govuk-frontend/dist/govuk/tools/_font-url.scss.map +1 -0
  795. data/node_modules/govuk-frontend/dist/govuk/tools/_image-url.scss +28 -0
  796. data/node_modules/govuk-frontend/dist/govuk/tools/_image-url.scss.map +1 -0
  797. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss +7 -0
  798. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss.map +1 -0
  799. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-em.scss +22 -0
  800. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-em.scss.map +1 -0
  801. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-rem.scss +22 -0
  802. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-rem.scss.map +1 -0
  803. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss +10 -0
  804. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss.map +1 -0
  805. data/node_modules/govuk-frontend/dist/govuk/utilities/_clearfix.scss +7 -0
  806. data/node_modules/govuk-frontend/dist/govuk/utilities/_clearfix.scss.map +1 -0
  807. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss +4 -0
  808. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss.map +1 -0
  809. data/node_modules/govuk-frontend/dist/govuk/utilities/_visually-hidden.scss +11 -0
  810. data/node_modules/govuk-frontend/dist/govuk/utilities/_visually-hidden.scss.map +1 -0
  811. data/node_modules/govuk-frontend/dist/govuk/vendor/_sass-mq.scss +349 -0
  812. data/node_modules/govuk-frontend/dist/govuk/vendor/_sass-mq.scss.map +1 -0
  813. data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.js +15 -0
  814. data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.scss +13 -0
  815. data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.scss.map +1 -0
  816. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +165 -7
  817. data/node_modules/govuk-frontend/package.json +67 -4
  818. data/package-lock.json +4 -4
  819. data/package.json +1 -1
  820. data/vendor/assets/images/favicon.svg +1 -0
  821. data/vendor/assets/images/govuk-icon-192.png +0 -0
  822. data/vendor/assets/images/govuk-icon-512.png +0 -0
  823. data/vendor/assets/images/govuk-icon-mask.svg +1 -0
  824. data/vendor/assets/javascripts/defra_ruby_template.js +2374 -2533
  825. data/vendor/assets/stylesheets/_base.scss +5 -3
  826. data/vendor/assets/stylesheets/all.scss +2 -8
  827. data/vendor/assets/stylesheets/components/_all.scss +9 -32
  828. data/vendor/assets/stylesheets/components/_index.scss +39 -0
  829. data/vendor/assets/stylesheets/components/accordion/_accordion.scss +2 -0
  830. data/vendor/assets/stylesheets/components/accordion/_index.scss +270 -101
  831. data/vendor/assets/stylesheets/components/back-link/_back-link.scss +2 -0
  832. data/vendor/assets/stylesheets/components/back-link/_index.scss +27 -43
  833. data/vendor/assets/stylesheets/components/breadcrumbs/_breadcrumbs.scss +2 -0
  834. data/vendor/assets/stylesheets/components/breadcrumbs/_index.scss +37 -41
  835. data/vendor/assets/stylesheets/components/button/_button.scss +2 -0
  836. data/vendor/assets/stylesheets/components/button/_index.scss +79 -105
  837. data/vendor/assets/stylesheets/components/character-count/_character-count.scss +2 -0
  838. data/vendor/assets/stylesheets/components/character-count/_index.scss +12 -1
  839. data/vendor/assets/stylesheets/components/checkboxes/_checkboxes.scss +2 -0
  840. data/vendor/assets/stylesheets/components/checkboxes/_index.scss +119 -133
  841. data/vendor/assets/stylesheets/components/cookie-banner/_cookie-banner.scss +2 -0
  842. data/vendor/assets/stylesheets/components/cookie-banner/_index.scss +3 -4
  843. data/vendor/assets/stylesheets/components/date-input/_date-input.scss +2 -0
  844. data/vendor/assets/stylesheets/components/date-input/_index.scss +2 -0
  845. data/vendor/assets/stylesheets/components/details/_details.scss +2 -0
  846. data/vendor/assets/stylesheets/components/details/_index.scss +97 -50
  847. data/vendor/assets/stylesheets/components/error-message/_error-message.scss +2 -0
  848. data/vendor/assets/stylesheets/components/error-message/_index.scss +3 -0
  849. data/vendor/assets/stylesheets/components/error-summary/_error-summary.scss +2 -0
  850. data/vendor/assets/stylesheets/components/error-summary/_index.scss +15 -6
  851. data/vendor/assets/stylesheets/components/exit-this-page/_exit-this-page.scss +4 -0
  852. data/vendor/assets/stylesheets/components/exit-this-page/_index.scss +92 -0
  853. data/vendor/assets/stylesheets/components/fieldset/_fieldset.scss +2 -0
  854. data/vendor/assets/stylesheets/components/fieldset/_index.scss +18 -11
  855. data/vendor/assets/stylesheets/components/file-upload/_file-upload.scss +2 -0
  856. data/vendor/assets/stylesheets/components/file-upload/_index.scss +8 -5
  857. data/vendor/assets/stylesheets/components/footer/_footer.scss +2 -0
  858. data/vendor/assets/stylesheets/components/footer/_index.scss +23 -112
  859. data/vendor/assets/stylesheets/components/header/_header.scss +2 -0
  860. data/vendor/assets/stylesheets/components/header/_index.scss +109 -94
  861. data/vendor/assets/stylesheets/components/hint/_hint.scss +2 -0
  862. data/vendor/assets/stylesheets/components/hint/_index.scss +4 -3
  863. data/vendor/assets/stylesheets/components/input/_index.scss +35 -61
  864. data/vendor/assets/stylesheets/components/input/_input.scss +2 -0
  865. data/vendor/assets/stylesheets/components/inset-text/_index.scss +2 -0
  866. data/vendor/assets/stylesheets/components/inset-text/_inset-text.scss +2 -0
  867. data/vendor/assets/stylesheets/components/label/_index.scss +12 -7
  868. data/vendor/assets/stylesheets/components/label/_label.scss +2 -0
  869. data/vendor/assets/stylesheets/components/notification-banner/_index.scss +8 -5
  870. data/vendor/assets/stylesheets/components/notification-banner/_notification-banner.scss +2 -0
  871. data/vendor/assets/stylesheets/components/pagination/_index.scss +241 -0
  872. data/vendor/assets/stylesheets/components/pagination/_pagination.scss +4 -0
  873. data/vendor/assets/stylesheets/components/panel/_index.scss +20 -10
  874. data/vendor/assets/stylesheets/components/panel/_panel.scss +2 -0
  875. data/vendor/assets/stylesheets/components/password-input/_index.scss +54 -0
  876. data/vendor/assets/stylesheets/components/password-input/_password-input.scss +4 -0
  877. data/vendor/assets/stylesheets/components/phase-banner/_index.scss +18 -1
  878. data/vendor/assets/stylesheets/components/phase-banner/_phase-banner.scss +2 -0
  879. data/vendor/assets/stylesheets/components/radios/_index.scss +104 -120
  880. data/vendor/assets/stylesheets/components/radios/_radios.scss +2 -0
  881. data/vendor/assets/stylesheets/components/select/_index.scss +20 -10
  882. data/vendor/assets/stylesheets/components/select/_select.scss +2 -0
  883. data/vendor/assets/stylesheets/components/skip-link/_index.scss +18 -4
  884. data/vendor/assets/stylesheets/components/skip-link/_skip-link.scss +2 -0
  885. data/vendor/assets/stylesheets/components/summary-list/_index.scss +167 -35
  886. data/vendor/assets/stylesheets/components/summary-list/_summary-list.scss +2 -0
  887. data/vendor/assets/stylesheets/components/table/_index.scss +21 -17
  888. data/vendor/assets/stylesheets/components/table/_table.scss +2 -0
  889. data/vendor/assets/stylesheets/components/tabs/_index.scss +15 -11
  890. data/vendor/assets/stylesheets/components/tabs/_tabs.scss +2 -0
  891. data/vendor/assets/stylesheets/components/tag/_index.scss +56 -48
  892. data/vendor/assets/stylesheets/components/tag/_tag.scss +2 -0
  893. data/vendor/assets/stylesheets/components/task-list/_index.scss +77 -0
  894. data/vendor/assets/stylesheets/components/task-list/_task-list.scss +4 -0
  895. data/vendor/assets/stylesheets/components/textarea/_index.scss +9 -6
  896. data/vendor/assets/stylesheets/components/textarea/_textarea.scss +2 -0
  897. data/vendor/assets/stylesheets/components/warning-text/_index.scss +10 -11
  898. data/vendor/assets/stylesheets/components/warning-text/_warning-text.scss +2 -0
  899. data/vendor/assets/stylesheets/core/_all.scss +10 -6
  900. data/vendor/assets/stylesheets/core/_global-styles.scss +2 -7
  901. data/vendor/assets/stylesheets/core/_govuk-frontend-properties.scss +12 -0
  902. data/vendor/assets/stylesheets/core/_index.scss +8 -0
  903. data/vendor/assets/stylesheets/core/_links.scss +8 -7
  904. data/vendor/assets/stylesheets/core/_lists.scss +2 -7
  905. data/vendor/assets/stylesheets/core/_section-break.scss +2 -13
  906. data/vendor/assets/stylesheets/core/_typography.scss +8 -11
  907. data/vendor/assets/stylesheets/defra_ruby_template.scss +2 -11
  908. data/vendor/assets/stylesheets/govuk-frontend.min.css +3 -0
  909. data/vendor/assets/stylesheets/helpers/_all.scss +10 -12
  910. data/vendor/assets/stylesheets/helpers/_clearfix.scss +3 -1
  911. data/vendor/assets/stylesheets/helpers/_colour.scss +20 -24
  912. data/vendor/assets/stylesheets/helpers/_device-pixels.scss +4 -3
  913. data/vendor/assets/stylesheets/helpers/_focused.scss +27 -6
  914. data/vendor/assets/stylesheets/helpers/_font-faces.scss +22 -22
  915. data/vendor/assets/stylesheets/helpers/_grid.scss +2 -0
  916. data/vendor/assets/stylesheets/helpers/_index.scss +14 -0
  917. data/vendor/assets/stylesheets/helpers/_links.scss +38 -74
  918. data/vendor/assets/stylesheets/helpers/_media-queries.scss +4 -13
  919. data/vendor/assets/stylesheets/helpers/_shape-arrow.scss +3 -1
  920. data/vendor/assets/stylesheets/helpers/_spacing.scss +36 -16
  921. data/vendor/assets/stylesheets/helpers/_typography.scss +117 -53
  922. data/vendor/assets/stylesheets/helpers/_visually-hidden.scss +33 -0
  923. data/vendor/assets/stylesheets/index.scss +11 -0
  924. data/vendor/assets/stylesheets/objects/_all.scss +10 -5
  925. data/vendor/assets/stylesheets/objects/_button-group.scss +7 -28
  926. data/vendor/assets/stylesheets/objects/_form-group.scss +2 -0
  927. data/vendor/assets/stylesheets/objects/_grid.scss +4 -2
  928. data/vendor/assets/stylesheets/objects/_index.scss +8 -0
  929. data/vendor/assets/stylesheets/objects/_main-wrapper.scss +17 -30
  930. data/vendor/assets/stylesheets/objects/_template.scss +53 -0
  931. data/vendor/assets/stylesheets/objects/_width-container.scss +2 -13
  932. data/vendor/assets/stylesheets/overrides/_all.scss +9 -4
  933. data/vendor/assets/stylesheets/overrides/_display.scss +2 -6
  934. data/vendor/assets/stylesheets/overrides/_index.scss +7 -0
  935. data/vendor/assets/stylesheets/overrides/_spacing.scss +49 -27
  936. data/vendor/assets/stylesheets/overrides/_text-align.scss +16 -0
  937. data/vendor/assets/stylesheets/overrides/_typography.scss +19 -8
  938. data/vendor/assets/stylesheets/overrides/_width.scss +2 -6
  939. data/vendor/assets/stylesheets/settings/_all.scss +8 -21
  940. data/vendor/assets/stylesheets/settings/_assets.scss +2 -0
  941. data/vendor/assets/stylesheets/settings/_colours-applied.scss +9 -7
  942. data/vendor/assets/stylesheets/settings/_colours-organisations.scss +10 -1
  943. data/vendor/assets/stylesheets/settings/_colours-palette.scss +8 -79
  944. data/vendor/assets/stylesheets/settings/_global-styles.scss +2 -0
  945. data/vendor/assets/stylesheets/settings/_index.scss +23 -0
  946. data/vendor/assets/stylesheets/settings/_links.scss +7 -20
  947. data/vendor/assets/stylesheets/settings/_measurements.scss +18 -16
  948. data/vendor/assets/stylesheets/settings/_media-queries.scss +5 -3
  949. data/vendor/assets/stylesheets/settings/_spacing.scss +6 -8
  950. data/vendor/assets/stylesheets/settings/_typography-font.scss +6 -43
  951. data/vendor/assets/stylesheets/settings/_typography-responsive.scss +179 -40
  952. data/vendor/assets/stylesheets/settings/_warnings.scss +78 -0
  953. data/vendor/assets/stylesheets/tools/_all.scss +10 -8
  954. data/vendor/assets/stylesheets/tools/_exports.scss +3 -1
  955. data/vendor/assets/stylesheets/tools/_font-url.scss +4 -1
  956. data/vendor/assets/stylesheets/tools/_image-url.scss +4 -1
  957. data/vendor/assets/stylesheets/tools/_index.scss +7 -0
  958. data/vendor/assets/stylesheets/tools/_px-to-em.scss +4 -2
  959. data/vendor/assets/stylesheets/tools/_px-to-rem.scss +3 -1
  960. data/vendor/assets/stylesheets/utilities/_all.scss +10 -2
  961. data/vendor/assets/stylesheets/utilities/_clearfix.scss +2 -0
  962. data/vendor/assets/stylesheets/utilities/_index.scss +4 -0
  963. data/vendor/assets/stylesheets/utilities/_visually-hidden.scss +2 -0
  964. data/vendor/assets/stylesheets/vendor/_sass-mq.scss +3 -1
  965. metadata +906 -339
  966. data/node_modules/govuk-frontend/govuk/_base.scss +0 -3
  967. data/node_modules/govuk-frontend/govuk/all-ie8.scss +0 -6
  968. data/node_modules/govuk-frontend/govuk/all.js +0 -2616
  969. data/node_modules/govuk-frontend/govuk/all.scss +0 -9
  970. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-152x152.png +0 -0
  971. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-167x167.png +0 -0
  972. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon.png +0 -0
  973. data/node_modules/govuk-frontend/govuk/assets/images/govuk-logotype-crown.png +0 -0
  974. data/node_modules/govuk-frontend/govuk/assets/images/govuk-logotype-tudor-crown.png +0 -0
  975. data/node_modules/govuk-frontend/govuk/assets/images/govuk-mask-icon.svg +0 -1
  976. data/node_modules/govuk-frontend/govuk/common.js +0 -39
  977. data/node_modules/govuk-frontend/govuk/components/_all.scss +0 -33
  978. data/node_modules/govuk-frontend/govuk/components/accordion/_accordion.scss +0 -2
  979. data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +0 -197
  980. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +0 -1011
  981. data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +0 -250
  982. data/node_modules/govuk-frontend/govuk/components/accordion/macro-options.json +0 -76
  983. data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +0 -27
  984. data/node_modules/govuk-frontend/govuk/components/back-link/_back-link.scss +0 -2
  985. data/node_modules/govuk-frontend/govuk/components/back-link/_index.scss +0 -99
  986. data/node_modules/govuk-frontend/govuk/components/back-link/fixtures.json +0 -62
  987. data/node_modules/govuk-frontend/govuk/components/back-link/macro-options.json +0 -32
  988. data/node_modules/govuk-frontend/govuk/components/back-link/template.njk +0 -2
  989. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_breadcrumbs.scss +0 -2
  990. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +0 -138
  991. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/fixtures.json +0 -193
  992. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/macro-options.json +0 -52
  993. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/template.njk +0 -24
  994. data/node_modules/govuk-frontend/govuk/components/button/_button.scss +0 -2
  995. data/node_modules/govuk-frontend/govuk/components/button/_index.scss +0 -287
  996. data/node_modules/govuk-frontend/govuk/components/button/button.js +0 -724
  997. data/node_modules/govuk-frontend/govuk/components/button/fixtures.json +0 -327
  998. data/node_modules/govuk-frontend/govuk/components/button/macro-options.json +0 -74
  999. data/node_modules/govuk-frontend/govuk/components/button/template.njk +0 -60
  1000. data/node_modules/govuk-frontend/govuk/components/character-count/_character-count.scss +0 -2
  1001. data/node_modules/govuk-frontend/govuk/components/character-count/_index.scss +0 -25
  1002. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +0 -1194
  1003. data/node_modules/govuk-frontend/govuk/components/character-count/fixtures.json +0 -240
  1004. data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +0 -111
  1005. data/node_modules/govuk-frontend/govuk/components/character-count/template.njk +0 -37
  1006. data/node_modules/govuk-frontend/govuk/components/checkboxes/_checkboxes.scss +0 -2
  1007. data/node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss +0 -334
  1008. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +0 -1192
  1009. data/node_modules/govuk-frontend/govuk/components/checkboxes/fixtures.json +0 -1189
  1010. data/node_modules/govuk-frontend/govuk/components/checkboxes/macro-options.json +0 -161
  1011. data/node_modules/govuk-frontend/govuk/components/checkboxes/template.njk +0 -119
  1012. data/node_modules/govuk-frontend/govuk/components/cookie-banner/_cookie-banner.scss +0 -2
  1013. data/node_modules/govuk-frontend/govuk/components/cookie-banner/_index.scss +0 -51
  1014. data/node_modules/govuk-frontend/govuk/components/cookie-banner/fixtures.json +0 -443
  1015. data/node_modules/govuk-frontend/govuk/components/cookie-banner/macro-options.json +0 -132
  1016. data/node_modules/govuk-frontend/govuk/components/cookie-banner/template.njk +0 -73
  1017. data/node_modules/govuk-frontend/govuk/components/date-input/_date-input.scss +0 -2
  1018. data/node_modules/govuk-frontend/govuk/components/date-input/_index.scss +0 -26
  1019. data/node_modules/govuk-frontend/govuk/components/date-input/fixtures.json +0 -549
  1020. data/node_modules/govuk-frontend/govuk/components/date-input/macro-options.json +0 -117
  1021. data/node_modules/govuk-frontend/govuk/components/date-input/template.njk +0 -97
  1022. data/node_modules/govuk-frontend/govuk/components/details/_details.scss +0 -2
  1023. data/node_modules/govuk-frontend/govuk/components/details/_index.scss +0 -88
  1024. data/node_modules/govuk-frontend/govuk/components/details/details.js +0 -828
  1025. data/node_modules/govuk-frontend/govuk/components/details/fixtures.json +0 -103
  1026. data/node_modules/govuk-frontend/govuk/components/details/implementation.md +0 -43
  1027. data/node_modules/govuk-frontend/govuk/components/details/macro-options.json +0 -50
  1028. data/node_modules/govuk-frontend/govuk/components/details/template.njk +0 -10
  1029. data/node_modules/govuk-frontend/govuk/components/error-message/_error-message.scss +0 -2
  1030. data/node_modules/govuk-frontend/govuk/components/error-message/_index.scss +0 -11
  1031. data/node_modules/govuk-frontend/govuk/components/error-message/fixtures.json +0 -77
  1032. data/node_modules/govuk-frontend/govuk/components/error-message/macro-options.json +0 -38
  1033. data/node_modules/govuk-frontend/govuk/components/error-message/template.njk +0 -6
  1034. data/node_modules/govuk-frontend/govuk/components/error-summary/_error-summary.scss +0 -2
  1035. data/node_modules/govuk-frontend/govuk/components/error-summary/_index.scss +0 -43
  1036. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +0 -853
  1037. data/node_modules/govuk-frontend/govuk/components/error-summary/fixtures.json +0 -242
  1038. data/node_modules/govuk-frontend/govuk/components/error-summary/macro-options.json +0 -70
  1039. data/node_modules/govuk-frontend/govuk/components/error-summary/template.njk +0 -25
  1040. data/node_modules/govuk-frontend/govuk/components/fieldset/_fieldset.scss +0 -2
  1041. data/node_modules/govuk-frontend/govuk/components/fieldset/_index.scss +0 -64
  1042. data/node_modules/govuk-frontend/govuk/components/fieldset/fixtures.json +0 -103
  1043. data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +0 -70
  1044. data/node_modules/govuk-frontend/govuk/components/fieldset/template.njk +0 -22
  1045. data/node_modules/govuk-frontend/govuk/components/file-upload/_file-upload.scss +0 -2
  1046. data/node_modules/govuk-frontend/govuk/components/file-upload/_index.scss +0 -50
  1047. data/node_modules/govuk-frontend/govuk/components/file-upload/fixtures.json +0 -198
  1048. data/node_modules/govuk-frontend/govuk/components/file-upload/macro-options.json +0 -73
  1049. data/node_modules/govuk-frontend/govuk/components/file-upload/template.njk +0 -44
  1050. data/node_modules/govuk-frontend/govuk/components/footer/_footer.scss +0 -2
  1051. data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +0 -244
  1052. data/node_modules/govuk-frontend/govuk/components/footer/fixtures.json +0 -501
  1053. data/node_modules/govuk-frontend/govuk/components/footer/macro-options.json +0 -118
  1054. data/node_modules/govuk-frontend/govuk/components/footer/template.njk +0 -87
  1055. data/node_modules/govuk-frontend/govuk/components/header/_header.scss +0 -2
  1056. data/node_modules/govuk-frontend/govuk/components/header/_index.scss +0 -347
  1057. data/node_modules/govuk-frontend/govuk/components/header/fixtures.json +0 -386
  1058. data/node_modules/govuk-frontend/govuk/components/header/header.js +0 -1066
  1059. data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +0 -112
  1060. data/node_modules/govuk-frontend/govuk/components/header/template.njk +0 -104
  1061. data/node_modules/govuk-frontend/govuk/components/hint/_hint.scss +0 -2
  1062. data/node_modules/govuk-frontend/govuk/components/hint/_index.scss +0 -44
  1063. data/node_modules/govuk-frontend/govuk/components/hint/fixtures.json +0 -59
  1064. data/node_modules/govuk-frontend/govuk/components/hint/macro-options.json +0 -32
  1065. data/node_modules/govuk-frontend/govuk/components/hint/template.njk +0 -4
  1066. data/node_modules/govuk-frontend/govuk/components/input/_index.scss +0 -191
  1067. data/node_modules/govuk-frontend/govuk/components/input/_input.scss +0 -2
  1068. data/node_modules/govuk-frontend/govuk/components/input/fixtures.json +0 -628
  1069. data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +0 -167
  1070. data/node_modules/govuk-frontend/govuk/components/input/template.njk +0 -65
  1071. data/node_modules/govuk-frontend/govuk/components/inset-text/_index.scss +0 -24
  1072. data/node_modules/govuk-frontend/govuk/components/inset-text/_inset-text.scss +0 -2
  1073. data/node_modules/govuk-frontend/govuk/components/inset-text/fixtures.json +0 -58
  1074. data/node_modules/govuk-frontend/govuk/components/inset-text/macro-options.json +0 -32
  1075. data/node_modules/govuk-frontend/govuk/components/inset-text/template.njk +0 -4
  1076. data/node_modules/govuk-frontend/govuk/components/label/_index.scss +0 -41
  1077. data/node_modules/govuk-frontend/govuk/components/label/_label.scss +0 -2
  1078. data/node_modules/govuk-frontend/govuk/components/label/fixtures.json +0 -84
  1079. data/node_modules/govuk-frontend/govuk/components/label/macro-options.json +0 -38
  1080. data/node_modules/govuk-frontend/govuk/components/label/template.njk +0 -15
  1081. data/node_modules/govuk-frontend/govuk/components/notification-banner/_index.scss +0 -89
  1082. data/node_modules/govuk-frontend/govuk/components/notification-banner/_notification-banner.scss +0 -2
  1083. data/node_modules/govuk-frontend/govuk/components/notification-banner/fixtures.json +0 -212
  1084. data/node_modules/govuk-frontend/govuk/components/notification-banner/macro-options.json +0 -68
  1085. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +0 -61
  1086. data/node_modules/govuk-frontend/govuk/components/notification-banner/template.njk +0 -47
  1087. data/node_modules/govuk-frontend/govuk/components/panel/_index.scss +0 -56
  1088. data/node_modules/govuk-frontend/govuk/components/panel/_panel.scss +0 -2
  1089. data/node_modules/govuk-frontend/govuk/components/panel/fixtures.json +0 -91
  1090. data/node_modules/govuk-frontend/govuk/components/panel/macro-options.json +0 -44
  1091. data/node_modules/govuk-frontend/govuk/components/panel/template.njk +0 -13
  1092. data/node_modules/govuk-frontend/govuk/components/phase-banner/_index.scss +0 -27
  1093. data/node_modules/govuk-frontend/govuk/components/phase-banner/_phase-banner.scss +0 -2
  1094. data/node_modules/govuk-frontend/govuk/components/phase-banner/fixtures.json +0 -76
  1095. data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +0 -33
  1096. data/node_modules/govuk-frontend/govuk/components/phase-banner/template.njk +0 -15
  1097. data/node_modules/govuk-frontend/govuk/components/radios/_index.scss +0 -356
  1098. data/node_modules/govuk-frontend/govuk/components/radios/_radios.scss +0 -2
  1099. data/node_modules/govuk-frontend/govuk/components/radios/fixtures.json +0 -1183
  1100. data/node_modules/govuk-frontend/govuk/components/radios/macro-options.json +0 -143
  1101. data/node_modules/govuk-frontend/govuk/components/radios/radios.js +0 -1148
  1102. data/node_modules/govuk-frontend/govuk/components/radios/template.njk +0 -116
  1103. data/node_modules/govuk-frontend/govuk/components/select/_index.scss +0 -49
  1104. data/node_modules/govuk-frontend/govuk/components/select/_select.scss +0 -2
  1105. data/node_modules/govuk-frontend/govuk/components/select/fixtures.json +0 -327
  1106. data/node_modules/govuk-frontend/govuk/components/select/macro-options.json +0 -105
  1107. data/node_modules/govuk-frontend/govuk/components/select/template.njk +0 -51
  1108. data/node_modules/govuk-frontend/govuk/components/skip-link/_index.scss +0 -36
  1109. data/node_modules/govuk-frontend/govuk/components/skip-link/_skip-link.scss +0 -2
  1110. data/node_modules/govuk-frontend/govuk/components/skip-link/fixtures.json +0 -84
  1111. data/node_modules/govuk-frontend/govuk/components/skip-link/macro-options.json +0 -32
  1112. data/node_modules/govuk-frontend/govuk/components/skip-link/template.njk +0 -3
  1113. data/node_modules/govuk-frontend/govuk/components/summary-list/_index.scss +0 -145
  1114. data/node_modules/govuk-frontend/govuk/components/summary-list/_summary-list.scss +0 -2
  1115. data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +0 -1084
  1116. data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +0 -113
  1117. data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +0 -47
  1118. data/node_modules/govuk-frontend/govuk/components/table/_index.scss +0 -71
  1119. data/node_modules/govuk-frontend/govuk/components/table/_table.scss +0 -2
  1120. data/node_modules/govuk-frontend/govuk/components/table/fixtures.json +0 -538
  1121. data/node_modules/govuk-frontend/govuk/components/table/macro-options.json +0 -132
  1122. data/node_modules/govuk-frontend/govuk/components/table/template.njk +0 -45
  1123. data/node_modules/govuk-frontend/govuk/components/tabs/_index.scss +0 -130
  1124. data/node_modules/govuk-frontend/govuk/components/tabs/_tabs.scss +0 -2
  1125. data/node_modules/govuk-frontend/govuk/components/tabs/fixtures.json +0 -286
  1126. data/node_modules/govuk-frontend/govuk/components/tabs/macro-options.json +0 -84
  1127. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +0 -1347
  1128. data/node_modules/govuk-frontend/govuk/components/tabs/template.njk +0 -32
  1129. data/node_modules/govuk-frontend/govuk/components/tag/_index.scss +0 -86
  1130. data/node_modules/govuk-frontend/govuk/components/tag/_tag.scss +0 -2
  1131. data/node_modules/govuk-frontend/govuk/components/tag/fixtures.json +0 -131
  1132. data/node_modules/govuk-frontend/govuk/components/tag/macro-options.json +0 -26
  1133. data/node_modules/govuk-frontend/govuk/components/tag/template.njk +0 -3
  1134. data/node_modules/govuk-frontend/govuk/components/textarea/_index.scss +0 -47
  1135. data/node_modules/govuk-frontend/govuk/components/textarea/_textarea.scss +0 -2
  1136. data/node_modules/govuk-frontend/govuk/components/textarea/fixtures.json +0 -250
  1137. data/node_modules/govuk-frontend/govuk/components/textarea/macro-options.json +0 -91
  1138. data/node_modules/govuk-frontend/govuk/components/textarea/template.njk +0 -45
  1139. data/node_modules/govuk-frontend/govuk/components/warning-text/_index.scss +0 -66
  1140. data/node_modules/govuk-frontend/govuk/components/warning-text/_warning-text.scss +0 -2
  1141. data/node_modules/govuk-frontend/govuk/components/warning-text/fixtures.json +0 -73
  1142. data/node_modules/govuk-frontend/govuk/components/warning-text/macro-options.json +0 -32
  1143. data/node_modules/govuk-frontend/govuk/components/warning-text/template.njk +0 -9
  1144. data/node_modules/govuk-frontend/govuk/core/_all.scss +0 -6
  1145. data/node_modules/govuk-frontend/govuk/core/_global-styles.scss +0 -25
  1146. data/node_modules/govuk-frontend/govuk/core/_links.scss +0 -41
  1147. data/node_modules/govuk-frontend/govuk/core/_lists.scss +0 -72
  1148. data/node_modules/govuk-frontend/govuk/core/_section-break.scss +0 -62
  1149. data/node_modules/govuk-frontend/govuk/core/_template.scss +0 -36
  1150. data/node_modules/govuk-frontend/govuk/core/_typography.scss +0 -192
  1151. data/node_modules/govuk-frontend/govuk/helpers/_all.scss +0 -12
  1152. data/node_modules/govuk-frontend/govuk/helpers/_clearfix.scss +0 -15
  1153. data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +0 -95
  1154. data/node_modules/govuk-frontend/govuk/helpers/_device-pixels.scss +0 -37
  1155. data/node_modules/govuk-frontend/govuk/helpers/_focused.scss +0 -28
  1156. data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +0 -41
  1157. data/node_modules/govuk-frontend/govuk/helpers/_grid.scss +0 -61
  1158. data/node_modules/govuk-frontend/govuk/helpers/_links.scss +0 -427
  1159. data/node_modules/govuk-frontend/govuk/helpers/_media-queries.scss +0 -91
  1160. data/node_modules/govuk-frontend/govuk/helpers/_shape-arrow.scss +0 -80
  1161. data/node_modules/govuk-frontend/govuk/helpers/_spacing.scss +0 -171
  1162. data/node_modules/govuk-frontend/govuk/helpers/_typography.scss +0 -207
  1163. data/node_modules/govuk-frontend/govuk/helpers/_visually-hidden.scss +0 -84
  1164. data/node_modules/govuk-frontend/govuk/objects/_all.scss +0 -5
  1165. data/node_modules/govuk-frontend/govuk/objects/_button-group.scss +0 -101
  1166. data/node_modules/govuk-frontend/govuk/objects/_form-group.scss +0 -23
  1167. data/node_modules/govuk-frontend/govuk/objects/_grid.scss +0 -24
  1168. data/node_modules/govuk-frontend/govuk/objects/_main-wrapper.scss +0 -68
  1169. data/node_modules/govuk-frontend/govuk/objects/_width-container.scss +0 -88
  1170. data/node_modules/govuk-frontend/govuk/overrides/_all.scss +0 -5
  1171. data/node_modules/govuk-frontend/govuk/overrides/_display.scss +0 -30
  1172. data/node_modules/govuk-frontend/govuk/overrides/_spacing.scss +0 -64
  1173. data/node_modules/govuk-frontend/govuk/overrides/_text-align.scss +0 -20
  1174. data/node_modules/govuk-frontend/govuk/overrides/_typography.scss +0 -27
  1175. data/node_modules/govuk-frontend/govuk/overrides/_width.scss +0 -52
  1176. data/node_modules/govuk-frontend/govuk/settings/_all.scss +0 -23
  1177. data/node_modules/govuk-frontend/govuk/settings/_assets.scss +0 -82
  1178. data/node_modules/govuk-frontend/govuk/settings/_colours-applied.scss +0 -155
  1179. data/node_modules/govuk-frontend/govuk/settings/_colours-organisations.scss +0 -139
  1180. data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +0 -108
  1181. data/node_modules/govuk-frontend/govuk/settings/_compatibility.scss +0 -74
  1182. data/node_modules/govuk-frontend/govuk/settings/_global-styles.scss +0 -13
  1183. data/node_modules/govuk-frontend/govuk/settings/_ie8.scss +0 -18
  1184. data/node_modules/govuk-frontend/govuk/settings/_links.scss +0 -62
  1185. data/node_modules/govuk-frontend/govuk/settings/_measurements.scss +0 -105
  1186. data/node_modules/govuk-frontend/govuk/settings/_media-queries.scss +0 -23
  1187. data/node_modules/govuk-frontend/govuk/settings/_spacing.scss +0 -80
  1188. data/node_modules/govuk-frontend/govuk/settings/_typography-font-families.scss +0 -32
  1189. data/node_modules/govuk-frontend/govuk/settings/_typography-font.scss +0 -89
  1190. data/node_modules/govuk-frontend/govuk/settings/_typography-responsive.scss +0 -183
  1191. data/node_modules/govuk-frontend/govuk/template.njk +0 -60
  1192. data/node_modules/govuk-frontend/govuk/tools/_all.scss +0 -8
  1193. data/node_modules/govuk-frontend/govuk/tools/_compatibility.scss +0 -36
  1194. data/node_modules/govuk-frontend/govuk/tools/_exports.scss +0 -33
  1195. data/node_modules/govuk-frontend/govuk/tools/_font-url.scss +0 -25
  1196. data/node_modules/govuk-frontend/govuk/tools/_ie8.scss +0 -51
  1197. data/node_modules/govuk-frontend/govuk/tools/_iff.scss +0 -17
  1198. data/node_modules/govuk-frontend/govuk/tools/_image-url.scss +0 -25
  1199. data/node_modules/govuk-frontend/govuk/tools/_px-to-em.scss +0 -20
  1200. data/node_modules/govuk-frontend/govuk/tools/_px-to-rem.scss +0 -20
  1201. data/node_modules/govuk-frontend/govuk/utilities/_all.scss +0 -2
  1202. data/node_modules/govuk-frontend/govuk/utilities/_clearfix.scss +0 -5
  1203. data/node_modules/govuk-frontend/govuk/utilities/_visually-hidden.scss +0 -9
  1204. data/node_modules/govuk-frontend/govuk/vendor/_sass-mq.scss +0 -347
  1205. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +0 -272
  1206. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +0 -34
  1207. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +0 -589
  1208. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +0 -54
  1209. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +0 -31
  1210. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +0 -254
  1211. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +0 -254
  1212. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +0 -147
  1213. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +0 -504
  1214. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +0 -252
  1215. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +0 -94
  1216. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +0 -28
  1217. data/vendor/assets/images/govuk-apple-touch-icon-152x152.png +0 -0
  1218. data/vendor/assets/images/govuk-apple-touch-icon-167x167.png +0 -0
  1219. data/vendor/assets/images/govuk-apple-touch-icon.png +0 -0
  1220. data/vendor/assets/images/govuk-logotype-crown.png +0 -0
  1221. data/vendor/assets/images/govuk-logotype-tudor-crown.png +0 -0
  1222. data/vendor/assets/images/govuk-mask-icon.svg +0 -1
  1223. data/vendor/assets/stylesheets/all-ie8.scss +0 -6
  1224. data/vendor/assets/stylesheets/core/_template.scss +0 -36
  1225. data/vendor/assets/stylesheets/settings/_compatibility.scss +0 -74
  1226. data/vendor/assets/stylesheets/settings/_ie8.scss +0 -18
  1227. data/vendor/assets/stylesheets/settings/_typography-font-families.scss +0 -32
  1228. data/vendor/assets/stylesheets/tools/_compatibility.scss +0 -36
  1229. data/vendor/assets/stylesheets/tools/_ie8.scss +0 -51
  1230. data/vendor/assets/stylesheets/tools/_iff.scss +0 -17
  1231. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-affa96571d-v2.woff +0 -0
  1232. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
  1233. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
  1234. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-f591b13f7d-v2.woff +0 -0
  1235. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/images/favicon.ico +0 -0
  1236. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/images/govuk-crest-2x.png +0 -0
  1237. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/images/govuk-crest.png +0 -0
  1238. /data/node_modules/govuk-frontend/{govuk/assets/images/govuk-apple-touch-icon-180x180.png → dist/govuk/assets/images/govuk-icon-180.png} +0 -0
  1239. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/images/govuk-opengraph-image.png +0 -0
  1240. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/accordion/README.md +0 -0
  1241. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/accordion/macro.njk +0 -0
  1242. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/back-link/README.md +0 -0
  1243. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/back-link/macro.njk +0 -0
  1244. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/breadcrumbs/README.md +0 -0
  1245. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/breadcrumbs/macro.njk +0 -0
  1246. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/button/README.md +0 -0
  1247. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/button/macro.njk +0 -0
  1248. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/character-count/README.md +0 -0
  1249. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/character-count/macro.njk +0 -0
  1250. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/checkboxes/README.md +0 -0
  1251. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/checkboxes/macro.njk +0 -0
  1252. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/cookie-banner/README.md +0 -0
  1253. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/cookie-banner/macro.njk +0 -0
  1254. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/date-input/README.md +0 -0
  1255. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/date-input/macro.njk +0 -0
  1256. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/details/README.md +0 -0
  1257. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/details/macro.njk +0 -0
  1258. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-message/README.md +0 -0
  1259. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-message/macro.njk +0 -0
  1260. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-summary/README.md +0 -0
  1261. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-summary/macro.njk +0 -0
  1262. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/fieldset/README.md +0 -0
  1263. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/fieldset/macro.njk +0 -0
  1264. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/file-upload/README.md +0 -0
  1265. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/file-upload/macro.njk +0 -0
  1266. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/footer/README.md +0 -0
  1267. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/footer/macro.njk +0 -0
  1268. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/header/README.md +0 -0
  1269. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/header/macro.njk +0 -0
  1270. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/README.md +0 -0
  1271. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/macro.njk +0 -0
  1272. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/README.md +0 -0
  1273. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/macro.njk +0 -0
  1274. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/inset-text/README.md +0 -0
  1275. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/inset-text/macro.njk +0 -0
  1276. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/README.md +0 -0
  1277. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/macro.njk +0 -0
  1278. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/notification-banner/README.md +0 -0
  1279. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/notification-banner/macro.njk +0 -0
  1280. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/panel/README.md +0 -0
  1281. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/panel/macro.njk +0 -0
  1282. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/phase-banner/README.md +0 -0
  1283. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/phase-banner/macro.njk +0 -0
  1284. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/radios/README.md +0 -0
  1285. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/radios/macro.njk +0 -0
  1286. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/select/README.md +0 -0
  1287. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/select/macro.njk +0 -0
  1288. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/skip-link/README.md +0 -0
  1289. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/skip-link/macro.njk +0 -0
  1290. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/summary-list/README.md +0 -0
  1291. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/summary-list/macro.njk +0 -0
  1292. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/README.md +0 -0
  1293. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/macro.njk +0 -0
  1294. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/README.md +0 -0
  1295. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/macro.njk +0 -0
  1296. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tag/README.md +0 -0
  1297. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tag/macro.njk +0 -0
  1298. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/textarea/README.md +0 -0
  1299. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/textarea/macro.njk +0 -0
  1300. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/warning-text/README.md +0 -0
  1301. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/warning-text/macro.njk +0 -0
  1302. /data/vendor/assets/images/{govuk-apple-touch-icon-180x180.png → govuk-icon-180.png} +0 -0
@@ -0,0 +1,2435 @@
1
+ const version = '5.4.0';
2
+
3
+ function normaliseString(value, property) {
4
+ const trimmedValue = value ? value.trim() : '';
5
+ let output;
6
+ let outputType = property == null ? void 0 : property.type;
7
+ if (!outputType) {
8
+ if (['true', 'false'].includes(trimmedValue)) {
9
+ outputType = 'boolean';
10
+ }
11
+ if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
12
+ outputType = 'number';
13
+ }
14
+ }
15
+ switch (outputType) {
16
+ case 'boolean':
17
+ output = trimmedValue === 'true';
18
+ break;
19
+ case 'number':
20
+ output = Number(trimmedValue);
21
+ break;
22
+ default:
23
+ output = value;
24
+ }
25
+ return output;
26
+ }
27
+
28
+ /**
29
+ * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
30
+ */
31
+
32
+ function mergeConfigs(...configObjects) {
33
+ const formattedConfigObject = {};
34
+ for (const configObject of configObjects) {
35
+ for (const key of Object.keys(configObject)) {
36
+ const option = formattedConfigObject[key];
37
+ const override = configObject[key];
38
+ if (isObject(option) && isObject(override)) {
39
+ formattedConfigObject[key] = mergeConfigs(option, override);
40
+ } else {
41
+ formattedConfigObject[key] = override;
42
+ }
43
+ }
44
+ }
45
+ return formattedConfigObject;
46
+ }
47
+ function extractConfigByNamespace(Component, dataset, namespace) {
48
+ const property = Component.schema.properties[namespace];
49
+ if ((property == null ? void 0 : property.type) !== 'object') {
50
+ return;
51
+ }
52
+ const newObject = {
53
+ [namespace]: ({})
54
+ };
55
+ for (const [key, value] of Object.entries(dataset)) {
56
+ let current = newObject;
57
+ const keyParts = key.split('.');
58
+ for (const [index, name] of keyParts.entries()) {
59
+ if (typeof current === 'object') {
60
+ if (index < keyParts.length - 1) {
61
+ if (!isObject(current[name])) {
62
+ current[name] = {};
63
+ }
64
+ current = current[name];
65
+ } else if (key !== namespace) {
66
+ current[name] = normaliseString(value);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return newObject[namespace];
72
+ }
73
+ function getFragmentFromUrl(url) {
74
+ if (!url.includes('#')) {
75
+ return undefined;
76
+ }
77
+ return url.split('#').pop();
78
+ }
79
+ function getBreakpoint(name) {
80
+ const property = `--govuk-frontend-breakpoint-${name}`;
81
+ const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);
82
+ return {
83
+ property,
84
+ value: value || undefined
85
+ };
86
+ }
87
+ function setFocus($element, options = {}) {
88
+ var _options$onBeforeFocu;
89
+ const isFocusable = $element.getAttribute('tabindex');
90
+ if (!isFocusable) {
91
+ $element.setAttribute('tabindex', '-1');
92
+ }
93
+ function onFocus() {
94
+ $element.addEventListener('blur', onBlur, {
95
+ once: true
96
+ });
97
+ }
98
+ function onBlur() {
99
+ var _options$onBlur;
100
+ (_options$onBlur = options.onBlur) == null || _options$onBlur.call($element);
101
+ if (!isFocusable) {
102
+ $element.removeAttribute('tabindex');
103
+ }
104
+ }
105
+ $element.addEventListener('focus', onFocus, {
106
+ once: true
107
+ });
108
+ (_options$onBeforeFocu = options.onBeforeFocus) == null || _options$onBeforeFocu.call($element);
109
+ $element.focus();
110
+ }
111
+ function isSupported($scope = document.body) {
112
+ if (!$scope) {
113
+ return false;
114
+ }
115
+ return $scope.classList.contains('govuk-frontend-supported');
116
+ }
117
+ function validateConfig(schema, config) {
118
+ const validationErrors = [];
119
+ for (const [name, conditions] of Object.entries(schema)) {
120
+ const errors = [];
121
+ if (Array.isArray(conditions)) {
122
+ for (const {
123
+ required,
124
+ errorMessage
125
+ } of conditions) {
126
+ if (!required.every(key => !!config[key])) {
127
+ errors.push(errorMessage);
128
+ }
129
+ }
130
+ if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {
131
+ validationErrors.push(...errors);
132
+ }
133
+ }
134
+ }
135
+ return validationErrors;
136
+ }
137
+ function isArray(option) {
138
+ return Array.isArray(option);
139
+ }
140
+ function isObject(option) {
141
+ return !!option && typeof option === 'object' && !isArray(option);
142
+ }
143
+
144
+ /**
145
+ * Schema for component config
146
+ *
147
+ * @typedef {object} Schema
148
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
149
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
150
+ */
151
+
152
+ /**
153
+ * Schema property for component config
154
+ *
155
+ * @typedef {object} SchemaProperty
156
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
157
+ */
158
+
159
+ /**
160
+ * Schema condition for component config
161
+ *
162
+ * @typedef {object} SchemaCondition
163
+ * @property {string[]} required - List of required config fields
164
+ * @property {string} errorMessage - Error message when required config fields not provided
165
+ */
166
+
167
+ function normaliseDataset(Component, dataset) {
168
+ const out = {};
169
+ for (const [field, property] of Object.entries(Component.schema.properties)) {
170
+ if (field in dataset) {
171
+ out[field] = normaliseString(dataset[field], property);
172
+ }
173
+ if ((property == null ? void 0 : property.type) === 'object') {
174
+ out[field] = extractConfigByNamespace(Component, dataset, field);
175
+ }
176
+ }
177
+ return out;
178
+ }
179
+
180
+ class GOVUKFrontendError extends Error {
181
+ constructor(...args) {
182
+ super(...args);
183
+ this.name = 'GOVUKFrontendError';
184
+ }
185
+ }
186
+ class SupportError extends GOVUKFrontendError {
187
+ /**
188
+ * Checks if GOV.UK Frontend is supported on this page
189
+ *
190
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
191
+ */
192
+ constructor($scope = document.body) {
193
+ const supportMessage = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';
194
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
195
+ this.name = 'SupportError';
196
+ }
197
+ }
198
+ class ConfigError extends GOVUKFrontendError {
199
+ constructor(...args) {
200
+ super(...args);
201
+ this.name = 'ConfigError';
202
+ }
203
+ }
204
+ class ElementError extends GOVUKFrontendError {
205
+ constructor(messageOrOptions) {
206
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
207
+ if (typeof messageOrOptions === 'object') {
208
+ const {
209
+ componentName,
210
+ identifier,
211
+ element,
212
+ expectedType
213
+ } = messageOrOptions;
214
+ message = `${componentName}: ${identifier}`;
215
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
216
+ }
217
+ super(message);
218
+ this.name = 'ElementError';
219
+ }
220
+ }
221
+
222
+ class GOVUKFrontendComponent {
223
+ constructor() {
224
+ this.checkSupport();
225
+ }
226
+ checkSupport() {
227
+ if (!isSupported()) {
228
+ throw new SupportError();
229
+ }
230
+ }
231
+ }
232
+
233
+ class I18n {
234
+ constructor(translations = {}, config = {}) {
235
+ var _config$locale;
236
+ this.translations = void 0;
237
+ this.locale = void 0;
238
+ this.translations = translations;
239
+ this.locale = (_config$locale = config.locale) != null ? _config$locale : document.documentElement.lang || 'en';
240
+ }
241
+ t(lookupKey, options) {
242
+ if (!lookupKey) {
243
+ throw new Error('i18n: lookup key missing');
244
+ }
245
+ let translation = this.translations[lookupKey];
246
+ if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {
247
+ const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];
248
+ if (translationPluralForm) {
249
+ translation = translationPluralForm;
250
+ }
251
+ }
252
+ if (typeof translation === 'string') {
253
+ if (translation.match(/%{(.\S+)}/)) {
254
+ if (!options) {
255
+ throw new Error('i18n: cannot replace placeholders in string if no option data provided');
256
+ }
257
+ return this.replacePlaceholders(translation, options);
258
+ }
259
+ return translation;
260
+ }
261
+ return lookupKey;
262
+ }
263
+ replacePlaceholders(translationString, options) {
264
+ const formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : undefined;
265
+ return translationString.replace(/%{(.\S+)}/g, function (placeholderWithBraces, placeholderKey) {
266
+ if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {
267
+ const placeholderValue = options[placeholderKey];
268
+ if (placeholderValue === false || typeof placeholderValue !== 'number' && typeof placeholderValue !== 'string') {
269
+ return '';
270
+ }
271
+ if (typeof placeholderValue === 'number') {
272
+ return formatter ? formatter.format(placeholderValue) : `${placeholderValue}`;
273
+ }
274
+ return placeholderValue;
275
+ }
276
+ throw new Error(`i18n: no data found to replace ${placeholderWithBraces} placeholder in string`);
277
+ });
278
+ }
279
+ hasIntlPluralRulesSupport() {
280
+ return Boolean('PluralRules' in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length);
281
+ }
282
+ getPluralSuffix(lookupKey, count) {
283
+ count = Number(count);
284
+ if (!isFinite(count)) {
285
+ return 'other';
286
+ }
287
+ const translation = this.translations[lookupKey];
288
+ const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);
289
+ if (typeof translation === 'object') {
290
+ if (preferredForm in translation) {
291
+ return preferredForm;
292
+ } else if ('other' in translation) {
293
+ console.warn(`i18n: Missing plural form ".${preferredForm}" for "${this.locale}" locale. Falling back to ".other".`);
294
+ return 'other';
295
+ }
296
+ }
297
+ throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`);
298
+ }
299
+ selectPluralFormUsingFallbackRules(count) {
300
+ count = Math.abs(Math.floor(count));
301
+ const ruleset = this.getPluralRulesForLocale();
302
+ if (ruleset) {
303
+ return I18n.pluralRules[ruleset](count);
304
+ }
305
+ return 'other';
306
+ }
307
+ getPluralRulesForLocale() {
308
+ const localeShort = this.locale.split('-')[0];
309
+ for (const pluralRule in I18n.pluralRulesMap) {
310
+ const languages = I18n.pluralRulesMap[pluralRule];
311
+ if (languages.includes(this.locale) || languages.includes(localeShort)) {
312
+ return pluralRule;
313
+ }
314
+ }
315
+ }
316
+ }
317
+ I18n.pluralRulesMap = {
318
+ arabic: ['ar'],
319
+ chinese: ['my', 'zh', 'id', 'ja', 'jv', 'ko', 'ms', 'th', 'vi'],
320
+ french: ['hy', 'bn', 'fr', 'gu', 'hi', 'fa', 'pa', 'zu'],
321
+ german: ['af', 'sq', 'az', 'eu', 'bg', 'ca', 'da', 'nl', 'en', 'et', 'fi', 'ka', 'de', 'el', 'hu', 'lb', 'no', 'so', 'sw', 'sv', 'ta', 'te', 'tr', 'ur'],
322
+ irish: ['ga'],
323
+ russian: ['ru', 'uk'],
324
+ scottish: ['gd'],
325
+ spanish: ['pt-PT', 'it', 'es'],
326
+ welsh: ['cy']
327
+ };
328
+ I18n.pluralRules = {
329
+ arabic(n) {
330
+ if (n === 0) {
331
+ return 'zero';
332
+ }
333
+ if (n === 1) {
334
+ return 'one';
335
+ }
336
+ if (n === 2) {
337
+ return 'two';
338
+ }
339
+ if (n % 100 >= 3 && n % 100 <= 10) {
340
+ return 'few';
341
+ }
342
+ if (n % 100 >= 11 && n % 100 <= 99) {
343
+ return 'many';
344
+ }
345
+ return 'other';
346
+ },
347
+ chinese() {
348
+ return 'other';
349
+ },
350
+ french(n) {
351
+ return n === 0 || n === 1 ? 'one' : 'other';
352
+ },
353
+ german(n) {
354
+ return n === 1 ? 'one' : 'other';
355
+ },
356
+ irish(n) {
357
+ if (n === 1) {
358
+ return 'one';
359
+ }
360
+ if (n === 2) {
361
+ return 'two';
362
+ }
363
+ if (n >= 3 && n <= 6) {
364
+ return 'few';
365
+ }
366
+ if (n >= 7 && n <= 10) {
367
+ return 'many';
368
+ }
369
+ return 'other';
370
+ },
371
+ russian(n) {
372
+ const lastTwo = n % 100;
373
+ const last = lastTwo % 10;
374
+ if (last === 1 && lastTwo !== 11) {
375
+ return 'one';
376
+ }
377
+ if (last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {
378
+ return 'few';
379
+ }
380
+ if (last === 0 || last >= 5 && last <= 9 || lastTwo >= 11 && lastTwo <= 14) {
381
+ return 'many';
382
+ }
383
+ return 'other';
384
+ },
385
+ scottish(n) {
386
+ if (n === 1 || n === 11) {
387
+ return 'one';
388
+ }
389
+ if (n === 2 || n === 12) {
390
+ return 'two';
391
+ }
392
+ if (n >= 3 && n <= 10 || n >= 13 && n <= 19) {
393
+ return 'few';
394
+ }
395
+ return 'other';
396
+ },
397
+ spanish(n) {
398
+ if (n === 1) {
399
+ return 'one';
400
+ }
401
+ if (n % 1000000 === 0 && n !== 0) {
402
+ return 'many';
403
+ }
404
+ return 'other';
405
+ },
406
+ welsh(n) {
407
+ if (n === 0) {
408
+ return 'zero';
409
+ }
410
+ if (n === 1) {
411
+ return 'one';
412
+ }
413
+ if (n === 2) {
414
+ return 'two';
415
+ }
416
+ if (n === 3) {
417
+ return 'few';
418
+ }
419
+ if (n === 6) {
420
+ return 'many';
421
+ }
422
+ return 'other';
423
+ }
424
+ };
425
+
426
+ /**
427
+ * Accordion component
428
+ *
429
+ * This allows a collection of sections to be collapsed by default, showing only
430
+ * their headers. Sections can be expanded or collapsed individually by clicking
431
+ * their headers. A "Show all sections" button is also added to the top of the
432
+ * accordion, which switches to "Hide all sections" when all the sections are
433
+ * expanded.
434
+ *
435
+ * The state of each section is saved to the DOM via the `aria-expanded`
436
+ * attribute, which also provides accessibility.
437
+ *
438
+ * @preserve
439
+ */
440
+ class Accordion extends GOVUKFrontendComponent {
441
+ /**
442
+ * @param {Element | null} $module - HTML element to use for accordion
443
+ * @param {AccordionConfig} [config] - Accordion config
444
+ */
445
+ constructor($module, config = {}) {
446
+ super();
447
+ this.$module = void 0;
448
+ this.config = void 0;
449
+ this.i18n = void 0;
450
+ this.controlsClass = 'govuk-accordion__controls';
451
+ this.showAllClass = 'govuk-accordion__show-all';
452
+ this.showAllTextClass = 'govuk-accordion__show-all-text';
453
+ this.sectionClass = 'govuk-accordion__section';
454
+ this.sectionExpandedClass = 'govuk-accordion__section--expanded';
455
+ this.sectionButtonClass = 'govuk-accordion__section-button';
456
+ this.sectionHeaderClass = 'govuk-accordion__section-header';
457
+ this.sectionHeadingClass = 'govuk-accordion__section-heading';
458
+ this.sectionHeadingDividerClass = 'govuk-accordion__section-heading-divider';
459
+ this.sectionHeadingTextClass = 'govuk-accordion__section-heading-text';
460
+ this.sectionHeadingTextFocusClass = 'govuk-accordion__section-heading-text-focus';
461
+ this.sectionShowHideToggleClass = 'govuk-accordion__section-toggle';
462
+ this.sectionShowHideToggleFocusClass = 'govuk-accordion__section-toggle-focus';
463
+ this.sectionShowHideTextClass = 'govuk-accordion__section-toggle-text';
464
+ this.upChevronIconClass = 'govuk-accordion-nav__chevron';
465
+ this.downChevronIconClass = 'govuk-accordion-nav__chevron--down';
466
+ this.sectionSummaryClass = 'govuk-accordion__section-summary';
467
+ this.sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus';
468
+ this.sectionContentClass = 'govuk-accordion__section-content';
469
+ this.$sections = void 0;
470
+ this.browserSupportsSessionStorage = false;
471
+ this.$showAllButton = null;
472
+ this.$showAllIcon = null;
473
+ this.$showAllText = null;
474
+ if (!($module instanceof HTMLElement)) {
475
+ throw new ElementError({
476
+ componentName: 'Accordion',
477
+ element: $module,
478
+ identifier: 'Root element (`$module`)'
479
+ });
480
+ }
481
+ this.$module = $module;
482
+ this.config = mergeConfigs(Accordion.defaults, config, normaliseDataset(Accordion, $module.dataset));
483
+ this.i18n = new I18n(this.config.i18n);
484
+ const $sections = this.$module.querySelectorAll(`.${this.sectionClass}`);
485
+ if (!$sections.length) {
486
+ throw new ElementError({
487
+ componentName: 'Accordion',
488
+ identifier: `Sections (\`<div class="${this.sectionClass}">\`)`
489
+ });
490
+ }
491
+ this.$sections = $sections;
492
+ this.browserSupportsSessionStorage = helper.checkForSessionStorage();
493
+ this.initControls();
494
+ this.initSectionHeaders();
495
+ const areAllSectionsOpen = this.checkIfAllSectionsOpen();
496
+ this.updateShowAllButton(areAllSectionsOpen);
497
+ }
498
+ initControls() {
499
+ this.$showAllButton = document.createElement('button');
500
+ this.$showAllButton.setAttribute('type', 'button');
501
+ this.$showAllButton.setAttribute('class', this.showAllClass);
502
+ this.$showAllButton.setAttribute('aria-expanded', 'false');
503
+ this.$showAllIcon = document.createElement('span');
504
+ this.$showAllIcon.classList.add(this.upChevronIconClass);
505
+ this.$showAllButton.appendChild(this.$showAllIcon);
506
+ const $accordionControls = document.createElement('div');
507
+ $accordionControls.setAttribute('class', this.controlsClass);
508
+ $accordionControls.appendChild(this.$showAllButton);
509
+ this.$module.insertBefore($accordionControls, this.$module.firstChild);
510
+ this.$showAllText = document.createElement('span');
511
+ this.$showAllText.classList.add(this.showAllTextClass);
512
+ this.$showAllButton.appendChild(this.$showAllText);
513
+ this.$showAllButton.addEventListener('click', () => this.onShowOrHideAllToggle());
514
+ if ('onbeforematch' in document) {
515
+ document.addEventListener('beforematch', event => this.onBeforeMatch(event));
516
+ }
517
+ }
518
+ initSectionHeaders() {
519
+ this.$sections.forEach(($section, i) => {
520
+ const $header = $section.querySelector(`.${this.sectionHeaderClass}`);
521
+ if (!$header) {
522
+ throw new ElementError({
523
+ componentName: 'Accordion',
524
+ identifier: `Section headers (\`<div class="${this.sectionHeaderClass}">\`)`
525
+ });
526
+ }
527
+ this.constructHeaderMarkup($header, i);
528
+ this.setExpanded(this.isExpanded($section), $section);
529
+ $header.addEventListener('click', () => this.onSectionToggle($section));
530
+ this.setInitialState($section);
531
+ });
532
+ }
533
+ constructHeaderMarkup($header, index) {
534
+ const $span = $header.querySelector(`.${this.sectionButtonClass}`);
535
+ const $heading = $header.querySelector(`.${this.sectionHeadingClass}`);
536
+ const $summary = $header.querySelector(`.${this.sectionSummaryClass}`);
537
+ if (!$heading) {
538
+ throw new ElementError({
539
+ componentName: 'Accordion',
540
+ identifier: `Section heading (\`.${this.sectionHeadingClass}\`)`
541
+ });
542
+ }
543
+ if (!$span) {
544
+ throw new ElementError({
545
+ componentName: 'Accordion',
546
+ identifier: `Section button placeholder (\`<span class="${this.sectionButtonClass}">\`)`
547
+ });
548
+ }
549
+ const $button = document.createElement('button');
550
+ $button.setAttribute('type', 'button');
551
+ $button.setAttribute('aria-controls', `${this.$module.id}-content-${index + 1}`);
552
+ for (const attr of Array.from($span.attributes)) {
553
+ if (attr.nodeName !== 'id') {
554
+ $button.setAttribute(attr.nodeName, `${attr.nodeValue}`);
555
+ }
556
+ }
557
+ const $headingText = document.createElement('span');
558
+ $headingText.classList.add(this.sectionHeadingTextClass);
559
+ $headingText.id = $span.id;
560
+ const $headingTextFocus = document.createElement('span');
561
+ $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass);
562
+ $headingText.appendChild($headingTextFocus);
563
+ $headingTextFocus.innerHTML = $span.innerHTML;
564
+ const $showHideToggle = document.createElement('span');
565
+ $showHideToggle.classList.add(this.sectionShowHideToggleClass);
566
+ $showHideToggle.setAttribute('data-nosnippet', '');
567
+ const $showHideToggleFocus = document.createElement('span');
568
+ $showHideToggleFocus.classList.add(this.sectionShowHideToggleFocusClass);
569
+ $showHideToggle.appendChild($showHideToggleFocus);
570
+ const $showHideText = document.createElement('span');
571
+ const $showHideIcon = document.createElement('span');
572
+ $showHideIcon.classList.add(this.upChevronIconClass);
573
+ $showHideToggleFocus.appendChild($showHideIcon);
574
+ $showHideText.classList.add(this.sectionShowHideTextClass);
575
+ $showHideToggleFocus.appendChild($showHideText);
576
+ $button.appendChild($headingText);
577
+ $button.appendChild(this.getButtonPunctuationEl());
578
+ if ($summary != null && $summary.parentNode) {
579
+ const $summarySpan = document.createElement('span');
580
+ const $summarySpanFocus = document.createElement('span');
581
+ $summarySpanFocus.classList.add(this.sectionSummaryFocusClass);
582
+ $summarySpan.appendChild($summarySpanFocus);
583
+ for (const attr of Array.from($summary.attributes)) {
584
+ $summarySpan.setAttribute(attr.nodeName, `${attr.nodeValue}`);
585
+ }
586
+ $summarySpanFocus.innerHTML = $summary.innerHTML;
587
+ $summary.parentNode.replaceChild($summarySpan, $summary);
588
+ $button.appendChild($summarySpan);
589
+ $button.appendChild(this.getButtonPunctuationEl());
590
+ }
591
+ $button.appendChild($showHideToggle);
592
+ $heading.removeChild($span);
593
+ $heading.appendChild($button);
594
+ }
595
+ onBeforeMatch(event) {
596
+ const $fragment = event.target;
597
+ if (!($fragment instanceof Element)) {
598
+ return;
599
+ }
600
+ const $section = $fragment.closest(`.${this.sectionClass}`);
601
+ if ($section) {
602
+ this.setExpanded(true, $section);
603
+ }
604
+ }
605
+ onSectionToggle($section) {
606
+ const expanded = this.isExpanded($section);
607
+ this.setExpanded(!expanded, $section);
608
+ this.storeState($section);
609
+ }
610
+ onShowOrHideAllToggle() {
611
+ const nowExpanded = !this.checkIfAllSectionsOpen();
612
+ this.$sections.forEach($section => {
613
+ this.setExpanded(nowExpanded, $section);
614
+ this.storeState($section);
615
+ });
616
+ this.updateShowAllButton(nowExpanded);
617
+ }
618
+ setExpanded(expanded, $section) {
619
+ const $showHideIcon = $section.querySelector(`.${this.upChevronIconClass}`);
620
+ const $showHideText = $section.querySelector(`.${this.sectionShowHideTextClass}`);
621
+ const $button = $section.querySelector(`.${this.sectionButtonClass}`);
622
+ const $content = $section.querySelector(`.${this.sectionContentClass}`);
623
+ if (!$content) {
624
+ throw new ElementError({
625
+ componentName: 'Accordion',
626
+ identifier: `Section content (\`<div class="${this.sectionContentClass}">\`)`
627
+ });
628
+ }
629
+ if (!$showHideIcon || !$showHideText || !$button) {
630
+ return;
631
+ }
632
+ const newButtonText = expanded ? this.i18n.t('hideSection') : this.i18n.t('showSection');
633
+ $showHideText.textContent = newButtonText;
634
+ $button.setAttribute('aria-expanded', `${expanded}`);
635
+ const ariaLabelParts = [];
636
+ const $headingText = $section.querySelector(`.${this.sectionHeadingTextClass}`);
637
+ if ($headingText) {
638
+ ariaLabelParts.push(`${$headingText.textContent}`.trim());
639
+ }
640
+ const $summary = $section.querySelector(`.${this.sectionSummaryClass}`);
641
+ if ($summary) {
642
+ ariaLabelParts.push(`${$summary.textContent}`.trim());
643
+ }
644
+ const ariaLabelMessage = expanded ? this.i18n.t('hideSectionAriaLabel') : this.i18n.t('showSectionAriaLabel');
645
+ ariaLabelParts.push(ariaLabelMessage);
646
+ $button.setAttribute('aria-label', ariaLabelParts.join(' , '));
647
+ if (expanded) {
648
+ $content.removeAttribute('hidden');
649
+ $section.classList.add(this.sectionExpandedClass);
650
+ $showHideIcon.classList.remove(this.downChevronIconClass);
651
+ } else {
652
+ $content.setAttribute('hidden', 'until-found');
653
+ $section.classList.remove(this.sectionExpandedClass);
654
+ $showHideIcon.classList.add(this.downChevronIconClass);
655
+ }
656
+ const areAllSectionsOpen = this.checkIfAllSectionsOpen();
657
+ this.updateShowAllButton(areAllSectionsOpen);
658
+ }
659
+ isExpanded($section) {
660
+ return $section.classList.contains(this.sectionExpandedClass);
661
+ }
662
+ checkIfAllSectionsOpen() {
663
+ const sectionsCount = this.$sections.length;
664
+ const expandedSectionCount = this.$module.querySelectorAll(`.${this.sectionExpandedClass}`).length;
665
+ const areAllSectionsOpen = sectionsCount === expandedSectionCount;
666
+ return areAllSectionsOpen;
667
+ }
668
+ updateShowAllButton(expanded) {
669
+ if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {
670
+ return;
671
+ }
672
+ this.$showAllButton.setAttribute('aria-expanded', expanded.toString());
673
+ this.$showAllText.textContent = expanded ? this.i18n.t('hideAllSections') : this.i18n.t('showAllSections');
674
+ this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded);
675
+ }
676
+ storeState($section) {
677
+ if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
678
+ const $button = $section.querySelector(`.${this.sectionButtonClass}`);
679
+ if ($button) {
680
+ const contentId = $button.getAttribute('aria-controls');
681
+ const contentState = $button.getAttribute('aria-expanded');
682
+ if (contentId && contentState) {
683
+ window.sessionStorage.setItem(contentId, contentState);
684
+ }
685
+ }
686
+ }
687
+ }
688
+ setInitialState($section) {
689
+ if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
690
+ const $button = $section.querySelector(`.${this.sectionButtonClass}`);
691
+ if ($button) {
692
+ const contentId = $button.getAttribute('aria-controls');
693
+ const contentState = contentId ? window.sessionStorage.getItem(contentId) : null;
694
+ if (contentState !== null) {
695
+ this.setExpanded(contentState === 'true', $section);
696
+ }
697
+ }
698
+ }
699
+ }
700
+ getButtonPunctuationEl() {
701
+ const $punctuationEl = document.createElement('span');
702
+ $punctuationEl.classList.add('govuk-visually-hidden', this.sectionHeadingDividerClass);
703
+ $punctuationEl.innerHTML = ', ';
704
+ return $punctuationEl;
705
+ }
706
+ }
707
+ Accordion.moduleName = 'govuk-accordion';
708
+ Accordion.defaults = Object.freeze({
709
+ i18n: {
710
+ hideAllSections: 'Hide all sections',
711
+ hideSection: 'Hide',
712
+ hideSectionAriaLabel: 'Hide this section',
713
+ showAllSections: 'Show all sections',
714
+ showSection: 'Show',
715
+ showSectionAriaLabel: 'Show this section'
716
+ },
717
+ rememberExpanded: true
718
+ });
719
+ Accordion.schema = Object.freeze({
720
+ properties: {
721
+ i18n: {
722
+ type: 'object'
723
+ },
724
+ rememberExpanded: {
725
+ type: 'boolean'
726
+ }
727
+ }
728
+ });
729
+ const helper = {
730
+ /**
731
+ * Check for `window.sessionStorage`, and that it actually works.
732
+ *
733
+ * @returns {boolean} True if session storage is available
734
+ */
735
+ checkForSessionStorage: function () {
736
+ const testString = 'this is the test string';
737
+ let result;
738
+ try {
739
+ window.sessionStorage.setItem(testString, testString);
740
+ result = window.sessionStorage.getItem(testString) === testString.toString();
741
+ window.sessionStorage.removeItem(testString);
742
+ return result;
743
+ } catch (exception) {
744
+ return false;
745
+ }
746
+ }
747
+ };
748
+
749
+ /**
750
+ * Accordion config
751
+ *
752
+ * @see {@link Accordion.defaults}
753
+ * @typedef {object} AccordionConfig
754
+ * @property {AccordionTranslations} [i18n=Accordion.defaults.i18n] - Accordion translations
755
+ * @property {boolean} [rememberExpanded] - Whether the expanded and collapsed
756
+ * state of each section is remembered and restored when navigating.
757
+ */
758
+
759
+ /**
760
+ * Accordion translations
761
+ *
762
+ * @see {@link Accordion.defaults.i18n}
763
+ * @typedef {object} AccordionTranslations
764
+ *
765
+ * Messages used by the component for the labels of its buttons. This includes
766
+ * the visible text shown on screen, and text to help assistive technology users
767
+ * for the buttons toggling each section.
768
+ * @property {string} [hideAllSections] - The text content for the 'Hide all
769
+ * sections' button, used when at least one section is expanded.
770
+ * @property {string} [hideSection] - The text content for the 'Hide'
771
+ * button, used when a section is expanded.
772
+ * @property {string} [hideSectionAriaLabel] - The text content appended to the
773
+ * 'Hide' button's accessible name when a section is expanded.
774
+ * @property {string} [showAllSections] - The text content for the 'Show all
775
+ * sections' button, used when all sections are collapsed.
776
+ * @property {string} [showSection] - The text content for the 'Show'
777
+ * button, used when a section is collapsed.
778
+ * @property {string} [showSectionAriaLabel] - The text content appended to the
779
+ * 'Show' button's accessible name when a section is expanded.
780
+ */
781
+
782
+ /**
783
+ * @typedef {import('../../common/index.mjs').Schema} Schema
784
+ */
785
+
786
+ const DEBOUNCE_TIMEOUT_IN_SECONDS = 1;
787
+
788
+ /**
789
+ * JavaScript enhancements for the Button component
790
+ *
791
+ * @preserve
792
+ */
793
+ class Button extends GOVUKFrontendComponent {
794
+ /**
795
+ * @param {Element | null} $module - HTML element to use for button
796
+ * @param {ButtonConfig} [config] - Button config
797
+ */
798
+ constructor($module, config = {}) {
799
+ super();
800
+ this.$module = void 0;
801
+ this.config = void 0;
802
+ this.debounceFormSubmitTimer = null;
803
+ if (!($module instanceof HTMLElement)) {
804
+ throw new ElementError({
805
+ componentName: 'Button',
806
+ element: $module,
807
+ identifier: 'Root element (`$module`)'
808
+ });
809
+ }
810
+ this.$module = $module;
811
+ this.config = mergeConfigs(Button.defaults, config, normaliseDataset(Button, $module.dataset));
812
+ this.$module.addEventListener('keydown', event => this.handleKeyDown(event));
813
+ this.$module.addEventListener('click', event => this.debounce(event));
814
+ }
815
+ handleKeyDown(event) {
816
+ const $target = event.target;
817
+ if (event.key !== ' ') {
818
+ return;
819
+ }
820
+ if ($target instanceof HTMLElement && $target.getAttribute('role') === 'button') {
821
+ event.preventDefault();
822
+ $target.click();
823
+ }
824
+ }
825
+ debounce(event) {
826
+ if (!this.config.preventDoubleClick) {
827
+ return;
828
+ }
829
+ if (this.debounceFormSubmitTimer) {
830
+ event.preventDefault();
831
+ return false;
832
+ }
833
+ this.debounceFormSubmitTimer = window.setTimeout(() => {
834
+ this.debounceFormSubmitTimer = null;
835
+ }, DEBOUNCE_TIMEOUT_IN_SECONDS * 1000);
836
+ }
837
+ }
838
+
839
+ /**
840
+ * Button config
841
+ *
842
+ * @typedef {object} ButtonConfig
843
+ * @property {boolean} [preventDoubleClick=false] - Prevent accidental double
844
+ * clicks on submit buttons from submitting forms multiple times.
845
+ */
846
+
847
+ /**
848
+ * @typedef {import('../../common/index.mjs').Schema} Schema
849
+ */
850
+ Button.moduleName = 'govuk-button';
851
+ Button.defaults = Object.freeze({
852
+ preventDoubleClick: false
853
+ });
854
+ Button.schema = Object.freeze({
855
+ properties: {
856
+ preventDoubleClick: {
857
+ type: 'boolean'
858
+ }
859
+ }
860
+ });
861
+
862
+ function closestAttributeValue($element, attributeName) {
863
+ const $closestElementWithAttribute = $element.closest(`[${attributeName}]`);
864
+ return $closestElementWithAttribute ? $closestElementWithAttribute.getAttribute(attributeName) : null;
865
+ }
866
+
867
+ /**
868
+ * Character count component
869
+ *
870
+ * Tracks the number of characters or words in the `.govuk-js-character-count`
871
+ * `<textarea>` inside the element. Displays a message with the remaining number
872
+ * of characters/words available, or the number of characters/words in excess.
873
+ *
874
+ * You can configure the message to only appear after a certain percentage
875
+ * of the available characters/words has been entered.
876
+ *
877
+ * @preserve
878
+ */
879
+ class CharacterCount extends GOVUKFrontendComponent {
880
+ /**
881
+ * @param {Element | null} $module - HTML element to use for character count
882
+ * @param {CharacterCountConfig} [config] - Character count config
883
+ */
884
+ constructor($module, config = {}) {
885
+ var _ref, _this$config$maxwords;
886
+ super();
887
+ this.$module = void 0;
888
+ this.$textarea = void 0;
889
+ this.$visibleCountMessage = void 0;
890
+ this.$screenReaderCountMessage = void 0;
891
+ this.lastInputTimestamp = null;
892
+ this.lastInputValue = '';
893
+ this.valueChecker = null;
894
+ this.config = void 0;
895
+ this.i18n = void 0;
896
+ this.maxLength = void 0;
897
+ if (!($module instanceof HTMLElement)) {
898
+ throw new ElementError({
899
+ componentName: 'Character count',
900
+ element: $module,
901
+ identifier: 'Root element (`$module`)'
902
+ });
903
+ }
904
+ const $textarea = $module.querySelector('.govuk-js-character-count');
905
+ if (!($textarea instanceof HTMLTextAreaElement || $textarea instanceof HTMLInputElement)) {
906
+ throw new ElementError({
907
+ componentName: 'Character count',
908
+ element: $textarea,
909
+ expectedType: 'HTMLTextareaElement or HTMLInputElement',
910
+ identifier: 'Form field (`.govuk-js-character-count`)'
911
+ });
912
+ }
913
+ const datasetConfig = normaliseDataset(CharacterCount, $module.dataset);
914
+ let configOverrides = {};
915
+ if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {
916
+ configOverrides = {
917
+ maxlength: undefined,
918
+ maxwords: undefined
919
+ };
920
+ }
921
+ this.config = mergeConfigs(CharacterCount.defaults, config, configOverrides, datasetConfig);
922
+ const errors = validateConfig(CharacterCount.schema, this.config);
923
+ if (errors[0]) {
924
+ throw new ConfigError(`Character count: ${errors[0]}`);
925
+ }
926
+ this.i18n = new I18n(this.config.i18n, {
927
+ locale: closestAttributeValue($module, 'lang')
928
+ });
929
+ this.maxLength = (_ref = (_this$config$maxwords = this.config.maxwords) != null ? _this$config$maxwords : this.config.maxlength) != null ? _ref : Infinity;
930
+ this.$module = $module;
931
+ this.$textarea = $textarea;
932
+ const textareaDescriptionId = `${this.$textarea.id}-info`;
933
+ const $textareaDescription = document.getElementById(textareaDescriptionId);
934
+ if (!$textareaDescription) {
935
+ throw new ElementError({
936
+ componentName: 'Character count',
937
+ element: $textareaDescription,
938
+ identifier: `Count message (\`id="${textareaDescriptionId}"\`)`
939
+ });
940
+ }
941
+ if (`${$textareaDescription.textContent}`.match(/^\s*$/)) {
942
+ $textareaDescription.textContent = this.i18n.t('textareaDescription', {
943
+ count: this.maxLength
944
+ });
945
+ }
946
+ this.$textarea.insertAdjacentElement('afterend', $textareaDescription);
947
+ const $screenReaderCountMessage = document.createElement('div');
948
+ $screenReaderCountMessage.className = 'govuk-character-count__sr-status govuk-visually-hidden';
949
+ $screenReaderCountMessage.setAttribute('aria-live', 'polite');
950
+ this.$screenReaderCountMessage = $screenReaderCountMessage;
951
+ $textareaDescription.insertAdjacentElement('afterend', $screenReaderCountMessage);
952
+ const $visibleCountMessage = document.createElement('div');
953
+ $visibleCountMessage.className = $textareaDescription.className;
954
+ $visibleCountMessage.classList.add('govuk-character-count__status');
955
+ $visibleCountMessage.setAttribute('aria-hidden', 'true');
956
+ this.$visibleCountMessage = $visibleCountMessage;
957
+ $textareaDescription.insertAdjacentElement('afterend', $visibleCountMessage);
958
+ $textareaDescription.classList.add('govuk-visually-hidden');
959
+ this.$textarea.removeAttribute('maxlength');
960
+ this.bindChangeEvents();
961
+ window.addEventListener('pageshow', () => this.updateCountMessage());
962
+ this.updateCountMessage();
963
+ }
964
+ bindChangeEvents() {
965
+ this.$textarea.addEventListener('keyup', () => this.handleKeyUp());
966
+ this.$textarea.addEventListener('focus', () => this.handleFocus());
967
+ this.$textarea.addEventListener('blur', () => this.handleBlur());
968
+ }
969
+ handleKeyUp() {
970
+ this.updateVisibleCountMessage();
971
+ this.lastInputTimestamp = Date.now();
972
+ }
973
+ handleFocus() {
974
+ this.valueChecker = window.setInterval(() => {
975
+ if (!this.lastInputTimestamp || Date.now() - 500 >= this.lastInputTimestamp) {
976
+ this.updateIfValueChanged();
977
+ }
978
+ }, 1000);
979
+ }
980
+ handleBlur() {
981
+ if (this.valueChecker) {
982
+ window.clearInterval(this.valueChecker);
983
+ }
984
+ }
985
+ updateIfValueChanged() {
986
+ if (this.$textarea.value !== this.lastInputValue) {
987
+ this.lastInputValue = this.$textarea.value;
988
+ this.updateCountMessage();
989
+ }
990
+ }
991
+ updateCountMessage() {
992
+ this.updateVisibleCountMessage();
993
+ this.updateScreenReaderCountMessage();
994
+ }
995
+ updateVisibleCountMessage() {
996
+ const remainingNumber = this.maxLength - this.count(this.$textarea.value);
997
+ const isError = remainingNumber < 0;
998
+ this.$visibleCountMessage.classList.toggle('govuk-character-count__message--disabled', !this.isOverThreshold());
999
+ this.$textarea.classList.toggle('govuk-textarea--error', isError);
1000
+ this.$visibleCountMessage.classList.toggle('govuk-error-message', isError);
1001
+ this.$visibleCountMessage.classList.toggle('govuk-hint', !isError);
1002
+ this.$visibleCountMessage.textContent = this.getCountMessage();
1003
+ }
1004
+ updateScreenReaderCountMessage() {
1005
+ if (this.isOverThreshold()) {
1006
+ this.$screenReaderCountMessage.removeAttribute('aria-hidden');
1007
+ } else {
1008
+ this.$screenReaderCountMessage.setAttribute('aria-hidden', 'true');
1009
+ }
1010
+ this.$screenReaderCountMessage.textContent = this.getCountMessage();
1011
+ }
1012
+ count(text) {
1013
+ if (this.config.maxwords) {
1014
+ var _text$match;
1015
+ const tokens = (_text$match = text.match(/\S+/g)) != null ? _text$match : [];
1016
+ return tokens.length;
1017
+ }
1018
+ return text.length;
1019
+ }
1020
+ getCountMessage() {
1021
+ const remainingNumber = this.maxLength - this.count(this.$textarea.value);
1022
+ const countType = this.config.maxwords ? 'words' : 'characters';
1023
+ return this.formatCountMessage(remainingNumber, countType);
1024
+ }
1025
+ formatCountMessage(remainingNumber, countType) {
1026
+ if (remainingNumber === 0) {
1027
+ return this.i18n.t(`${countType}AtLimit`);
1028
+ }
1029
+ const translationKeySuffix = remainingNumber < 0 ? 'OverLimit' : 'UnderLimit';
1030
+ return this.i18n.t(`${countType}${translationKeySuffix}`, {
1031
+ count: Math.abs(remainingNumber)
1032
+ });
1033
+ }
1034
+ isOverThreshold() {
1035
+ if (!this.config.threshold) {
1036
+ return true;
1037
+ }
1038
+ const currentLength = this.count(this.$textarea.value);
1039
+ const maxLength = this.maxLength;
1040
+ const thresholdValue = maxLength * this.config.threshold / 100;
1041
+ return thresholdValue <= currentLength;
1042
+ }
1043
+ }
1044
+
1045
+ /**
1046
+ * Character count config
1047
+ *
1048
+ * @see {@link CharacterCount.defaults}
1049
+ * @typedef {object} CharacterCountConfig
1050
+ * @property {number} [maxlength] - The maximum number of characters.
1051
+ * If maxwords is provided, the maxlength option will be ignored.
1052
+ * @property {number} [maxwords] - The maximum number of words. If maxwords is
1053
+ * provided, the maxlength option will be ignored.
1054
+ * @property {number} [threshold=0] - The percentage value of the limit at
1055
+ * which point the count message is displayed. If this attribute is set, the
1056
+ * count message will be hidden by default.
1057
+ * @property {CharacterCountTranslations} [i18n=CharacterCount.defaults.i18n] - Character count translations
1058
+ */
1059
+
1060
+ /**
1061
+ * Character count translations
1062
+ *
1063
+ * @see {@link CharacterCount.defaults.i18n}
1064
+ * @typedef {object} CharacterCountTranslations
1065
+ *
1066
+ * Messages shown to users as they type. It provides feedback on how many words
1067
+ * or characters they have remaining or if they are over the limit. This also
1068
+ * includes a message used as an accessible description for the textarea.
1069
+ * @property {TranslationPluralForms} [charactersUnderLimit] - Message displayed
1070
+ * when the number of characters is under the configured maximum, `maxlength`.
1071
+ * This message is displayed visually and through assistive technologies. The
1072
+ * component will replace the `%{count}` placeholder with the number of
1073
+ * remaining characters. This is a [pluralised list of
1074
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
1075
+ * @property {string} [charactersAtLimit] - Message displayed when the number of
1076
+ * characters reaches the configured maximum, `maxlength`. This message is
1077
+ * displayed visually and through assistive technologies.
1078
+ * @property {TranslationPluralForms} [charactersOverLimit] - Message displayed
1079
+ * when the number of characters is over the configured maximum, `maxlength`.
1080
+ * This message is displayed visually and through assistive technologies. The
1081
+ * component will replace the `%{count}` placeholder with the number of
1082
+ * remaining characters. This is a [pluralised list of
1083
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
1084
+ * @property {TranslationPluralForms} [wordsUnderLimit] - Message displayed when
1085
+ * the number of words is under the configured maximum, `maxlength`. This
1086
+ * message is displayed visually and through assistive technologies. The
1087
+ * component will replace the `%{count}` placeholder with the number of
1088
+ * remaining words. This is a [pluralised list of
1089
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
1090
+ * @property {string} [wordsAtLimit] - Message displayed when the number of
1091
+ * words reaches the configured maximum, `maxlength`. This message is
1092
+ * displayed visually and through assistive technologies.
1093
+ * @property {TranslationPluralForms} [wordsOverLimit] - Message displayed when
1094
+ * the number of words is over the configured maximum, `maxlength`. This
1095
+ * message is displayed visually and through assistive technologies. The
1096
+ * component will replace the `%{count}` placeholder with the number of
1097
+ * remaining words. This is a [pluralised list of
1098
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
1099
+ * @property {TranslationPluralForms} [textareaDescription] - Message made
1100
+ * available to assistive technologies, if none is already present in the
1101
+ * HTML, to describe that the component accepts only a limited amount of
1102
+ * content. It is visible on the page when JavaScript is unavailable. The
1103
+ * component will replace the `%{count}` placeholder with the value of the
1104
+ * `maxlength` or `maxwords` parameter.
1105
+ */
1106
+
1107
+ /**
1108
+ * @typedef {import('../../common/index.mjs').Schema} Schema
1109
+ * @typedef {import('../../i18n.mjs').TranslationPluralForms} TranslationPluralForms
1110
+ */
1111
+ CharacterCount.moduleName = 'govuk-character-count';
1112
+ CharacterCount.defaults = Object.freeze({
1113
+ threshold: 0,
1114
+ i18n: {
1115
+ charactersUnderLimit: {
1116
+ one: 'You have %{count} character remaining',
1117
+ other: 'You have %{count} characters remaining'
1118
+ },
1119
+ charactersAtLimit: 'You have 0 characters remaining',
1120
+ charactersOverLimit: {
1121
+ one: 'You have %{count} character too many',
1122
+ other: 'You have %{count} characters too many'
1123
+ },
1124
+ wordsUnderLimit: {
1125
+ one: 'You have %{count} word remaining',
1126
+ other: 'You have %{count} words remaining'
1127
+ },
1128
+ wordsAtLimit: 'You have 0 words remaining',
1129
+ wordsOverLimit: {
1130
+ one: 'You have %{count} word too many',
1131
+ other: 'You have %{count} words too many'
1132
+ },
1133
+ textareaDescription: {
1134
+ other: ''
1135
+ }
1136
+ }
1137
+ });
1138
+ CharacterCount.schema = Object.freeze({
1139
+ properties: {
1140
+ i18n: {
1141
+ type: 'object'
1142
+ },
1143
+ maxwords: {
1144
+ type: 'number'
1145
+ },
1146
+ maxlength: {
1147
+ type: 'number'
1148
+ },
1149
+ threshold: {
1150
+ type: 'number'
1151
+ }
1152
+ },
1153
+ anyOf: [{
1154
+ required: ['maxwords'],
1155
+ errorMessage: 'Either "maxlength" or "maxwords" must be provided'
1156
+ }, {
1157
+ required: ['maxlength'],
1158
+ errorMessage: 'Either "maxlength" or "maxwords" must be provided'
1159
+ }]
1160
+ });
1161
+
1162
+ /**
1163
+ * Checkboxes component
1164
+ *
1165
+ * @preserve
1166
+ */
1167
+ class Checkboxes extends GOVUKFrontendComponent {
1168
+ /**
1169
+ * Checkboxes can be associated with a 'conditionally revealed' content block
1170
+ * – for example, a checkbox for 'Phone' could reveal an additional form field
1171
+ * for the user to enter their phone number.
1172
+ *
1173
+ * These associations are made using a `data-aria-controls` attribute, which
1174
+ * is promoted to an aria-controls attribute during initialisation.
1175
+ *
1176
+ * We also need to restore the state of any conditional reveals on the page
1177
+ * (for example if the user has navigated back), and set up event handlers to
1178
+ * keep the reveal in sync with the checkbox state.
1179
+ *
1180
+ * @param {Element | null} $module - HTML element to use for checkboxes
1181
+ */
1182
+ constructor($module) {
1183
+ super();
1184
+ this.$module = void 0;
1185
+ this.$inputs = void 0;
1186
+ if (!($module instanceof HTMLElement)) {
1187
+ throw new ElementError({
1188
+ componentName: 'Checkboxes',
1189
+ element: $module,
1190
+ identifier: 'Root element (`$module`)'
1191
+ });
1192
+ }
1193
+ const $inputs = $module.querySelectorAll('input[type="checkbox"]');
1194
+ if (!$inputs.length) {
1195
+ throw new ElementError({
1196
+ componentName: 'Checkboxes',
1197
+ identifier: 'Form inputs (`<input type="checkbox">`)'
1198
+ });
1199
+ }
1200
+ this.$module = $module;
1201
+ this.$inputs = $inputs;
1202
+ this.$inputs.forEach($input => {
1203
+ const targetId = $input.getAttribute('data-aria-controls');
1204
+ if (!targetId) {
1205
+ return;
1206
+ }
1207
+ if (!document.getElementById(targetId)) {
1208
+ throw new ElementError({
1209
+ componentName: 'Checkboxes',
1210
+ identifier: `Conditional reveal (\`id="${targetId}"\`)`
1211
+ });
1212
+ }
1213
+ $input.setAttribute('aria-controls', targetId);
1214
+ $input.removeAttribute('data-aria-controls');
1215
+ });
1216
+ window.addEventListener('pageshow', () => this.syncAllConditionalReveals());
1217
+ this.syncAllConditionalReveals();
1218
+ this.$module.addEventListener('click', event => this.handleClick(event));
1219
+ }
1220
+ syncAllConditionalReveals() {
1221
+ this.$inputs.forEach($input => this.syncConditionalRevealWithInputState($input));
1222
+ }
1223
+ syncConditionalRevealWithInputState($input) {
1224
+ const targetId = $input.getAttribute('aria-controls');
1225
+ if (!targetId) {
1226
+ return;
1227
+ }
1228
+ const $target = document.getElementById(targetId);
1229
+ if ($target != null && $target.classList.contains('govuk-checkboxes__conditional')) {
1230
+ const inputIsChecked = $input.checked;
1231
+ $input.setAttribute('aria-expanded', inputIsChecked.toString());
1232
+ $target.classList.toggle('govuk-checkboxes__conditional--hidden', !inputIsChecked);
1233
+ }
1234
+ }
1235
+ unCheckAllInputsExcept($input) {
1236
+ const allInputsWithSameName = document.querySelectorAll(`input[type="checkbox"][name="${$input.name}"]`);
1237
+ allInputsWithSameName.forEach($inputWithSameName => {
1238
+ const hasSameFormOwner = $input.form === $inputWithSameName.form;
1239
+ if (hasSameFormOwner && $inputWithSameName !== $input) {
1240
+ $inputWithSameName.checked = false;
1241
+ this.syncConditionalRevealWithInputState($inputWithSameName);
1242
+ }
1243
+ });
1244
+ }
1245
+ unCheckExclusiveInputs($input) {
1246
+ const allInputsWithSameNameAndExclusiveBehaviour = document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${$input.name}"]`);
1247
+ allInputsWithSameNameAndExclusiveBehaviour.forEach($exclusiveInput => {
1248
+ const hasSameFormOwner = $input.form === $exclusiveInput.form;
1249
+ if (hasSameFormOwner) {
1250
+ $exclusiveInput.checked = false;
1251
+ this.syncConditionalRevealWithInputState($exclusiveInput);
1252
+ }
1253
+ });
1254
+ }
1255
+ handleClick(event) {
1256
+ const $clickedInput = event.target;
1257
+ if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'checkbox') {
1258
+ return;
1259
+ }
1260
+ const hasAriaControls = $clickedInput.getAttribute('aria-controls');
1261
+ if (hasAriaControls) {
1262
+ this.syncConditionalRevealWithInputState($clickedInput);
1263
+ }
1264
+ if (!$clickedInput.checked) {
1265
+ return;
1266
+ }
1267
+ const hasBehaviourExclusive = $clickedInput.getAttribute('data-behaviour') === 'exclusive';
1268
+ if (hasBehaviourExclusive) {
1269
+ this.unCheckAllInputsExcept($clickedInput);
1270
+ } else {
1271
+ this.unCheckExclusiveInputs($clickedInput);
1272
+ }
1273
+ }
1274
+ }
1275
+ Checkboxes.moduleName = 'govuk-checkboxes';
1276
+
1277
+ /**
1278
+ * Error summary component
1279
+ *
1280
+ * Takes focus on initialisation for accessible announcement, unless disabled in
1281
+ * configuration.
1282
+ *
1283
+ * @preserve
1284
+ */
1285
+ class ErrorSummary extends GOVUKFrontendComponent {
1286
+ /**
1287
+ * @param {Element | null} $module - HTML element to use for error summary
1288
+ * @param {ErrorSummaryConfig} [config] - Error summary config
1289
+ */
1290
+ constructor($module, config = {}) {
1291
+ super();
1292
+ this.$module = void 0;
1293
+ this.config = void 0;
1294
+ if (!($module instanceof HTMLElement)) {
1295
+ throw new ElementError({
1296
+ componentName: 'Error summary',
1297
+ element: $module,
1298
+ identifier: 'Root element (`$module`)'
1299
+ });
1300
+ }
1301
+ this.$module = $module;
1302
+ this.config = mergeConfigs(ErrorSummary.defaults, config, normaliseDataset(ErrorSummary, $module.dataset));
1303
+ if (!this.config.disableAutoFocus) {
1304
+ setFocus(this.$module);
1305
+ }
1306
+ this.$module.addEventListener('click', event => this.handleClick(event));
1307
+ }
1308
+ handleClick(event) {
1309
+ const $target = event.target;
1310
+ if ($target && this.focusTarget($target)) {
1311
+ event.preventDefault();
1312
+ }
1313
+ }
1314
+ focusTarget($target) {
1315
+ if (!($target instanceof HTMLAnchorElement)) {
1316
+ return false;
1317
+ }
1318
+ const inputId = getFragmentFromUrl($target.href);
1319
+ if (!inputId) {
1320
+ return false;
1321
+ }
1322
+ const $input = document.getElementById(inputId);
1323
+ if (!$input) {
1324
+ return false;
1325
+ }
1326
+ const $legendOrLabel = this.getAssociatedLegendOrLabel($input);
1327
+ if (!$legendOrLabel) {
1328
+ return false;
1329
+ }
1330
+ $legendOrLabel.scrollIntoView();
1331
+ $input.focus({
1332
+ preventScroll: true
1333
+ });
1334
+ return true;
1335
+ }
1336
+ getAssociatedLegendOrLabel($input) {
1337
+ var _document$querySelect;
1338
+ const $fieldset = $input.closest('fieldset');
1339
+ if ($fieldset) {
1340
+ const $legends = $fieldset.getElementsByTagName('legend');
1341
+ if ($legends.length) {
1342
+ const $candidateLegend = $legends[0];
1343
+ if ($input instanceof HTMLInputElement && ($input.type === 'checkbox' || $input.type === 'radio')) {
1344
+ return $candidateLegend;
1345
+ }
1346
+ const legendTop = $candidateLegend.getBoundingClientRect().top;
1347
+ const inputRect = $input.getBoundingClientRect();
1348
+ if (inputRect.height && window.innerHeight) {
1349
+ const inputBottom = inputRect.top + inputRect.height;
1350
+ if (inputBottom - legendTop < window.innerHeight / 2) {
1351
+ return $candidateLegend;
1352
+ }
1353
+ }
1354
+ }
1355
+ }
1356
+ return (_document$querySelect = document.querySelector(`label[for='${$input.getAttribute('id')}']`)) != null ? _document$querySelect : $input.closest('label');
1357
+ }
1358
+ }
1359
+
1360
+ /**
1361
+ * Error summary config
1362
+ *
1363
+ * @typedef {object} ErrorSummaryConfig
1364
+ * @property {boolean} [disableAutoFocus=false] - If set to `true` the error
1365
+ * summary will not be focussed when the page loads.
1366
+ */
1367
+
1368
+ /**
1369
+ * @typedef {import('../../common/index.mjs').Schema} Schema
1370
+ */
1371
+ ErrorSummary.moduleName = 'govuk-error-summary';
1372
+ ErrorSummary.defaults = Object.freeze({
1373
+ disableAutoFocus: false
1374
+ });
1375
+ ErrorSummary.schema = Object.freeze({
1376
+ properties: {
1377
+ disableAutoFocus: {
1378
+ type: 'boolean'
1379
+ }
1380
+ }
1381
+ });
1382
+
1383
+ /**
1384
+ * Exit this page component
1385
+ *
1386
+ * @preserve
1387
+ */
1388
+ class ExitThisPage extends GOVUKFrontendComponent {
1389
+ /**
1390
+ * @param {Element | null} $module - HTML element that wraps the Exit This Page button
1391
+ * @param {ExitThisPageConfig} [config] - Exit This Page config
1392
+ */
1393
+ constructor($module, config = {}) {
1394
+ super();
1395
+ this.$module = void 0;
1396
+ this.config = void 0;
1397
+ this.i18n = void 0;
1398
+ this.$button = void 0;
1399
+ this.$skiplinkButton = null;
1400
+ this.$updateSpan = null;
1401
+ this.$indicatorContainer = null;
1402
+ this.$overlay = null;
1403
+ this.keypressCounter = 0;
1404
+ this.lastKeyWasModified = false;
1405
+ this.timeoutTime = 5000;
1406
+ this.keypressTimeoutId = null;
1407
+ this.timeoutMessageId = null;
1408
+ if (!($module instanceof HTMLElement)) {
1409
+ throw new ElementError({
1410
+ componentName: 'Exit this page',
1411
+ element: $module,
1412
+ identifier: 'Root element (`$module`)'
1413
+ });
1414
+ }
1415
+ const $button = $module.querySelector('.govuk-exit-this-page__button');
1416
+ if (!($button instanceof HTMLAnchorElement)) {
1417
+ throw new ElementError({
1418
+ componentName: 'Exit this page',
1419
+ element: $button,
1420
+ expectedType: 'HTMLAnchorElement',
1421
+ identifier: 'Button (`.govuk-exit-this-page__button`)'
1422
+ });
1423
+ }
1424
+ this.config = mergeConfigs(ExitThisPage.defaults, config, normaliseDataset(ExitThisPage, $module.dataset));
1425
+ this.i18n = new I18n(this.config.i18n);
1426
+ this.$module = $module;
1427
+ this.$button = $button;
1428
+ const $skiplinkButton = document.querySelector('.govuk-js-exit-this-page-skiplink');
1429
+ if ($skiplinkButton instanceof HTMLAnchorElement) {
1430
+ this.$skiplinkButton = $skiplinkButton;
1431
+ }
1432
+ this.buildIndicator();
1433
+ this.initUpdateSpan();
1434
+ this.initButtonClickHandler();
1435
+ if (!('govukFrontendExitThisPageKeypress' in document.body.dataset)) {
1436
+ document.addEventListener('keyup', this.handleKeypress.bind(this), true);
1437
+ document.body.dataset.govukFrontendExitThisPageKeypress = 'true';
1438
+ }
1439
+ window.addEventListener('pageshow', this.resetPage.bind(this));
1440
+ }
1441
+ initUpdateSpan() {
1442
+ this.$updateSpan = document.createElement('span');
1443
+ this.$updateSpan.setAttribute('role', 'status');
1444
+ this.$updateSpan.className = 'govuk-visually-hidden';
1445
+ this.$module.appendChild(this.$updateSpan);
1446
+ }
1447
+ initButtonClickHandler() {
1448
+ this.$button.addEventListener('click', this.handleClick.bind(this));
1449
+ if (this.$skiplinkButton) {
1450
+ this.$skiplinkButton.addEventListener('click', this.handleClick.bind(this));
1451
+ }
1452
+ }
1453
+ buildIndicator() {
1454
+ this.$indicatorContainer = document.createElement('div');
1455
+ this.$indicatorContainer.className = 'govuk-exit-this-page__indicator';
1456
+ this.$indicatorContainer.setAttribute('aria-hidden', 'true');
1457
+ for (let i = 0; i < 3; i++) {
1458
+ const $indicator = document.createElement('div');
1459
+ $indicator.className = 'govuk-exit-this-page__indicator-light';
1460
+ this.$indicatorContainer.appendChild($indicator);
1461
+ }
1462
+ this.$button.appendChild(this.$indicatorContainer);
1463
+ }
1464
+ updateIndicator() {
1465
+ if (!this.$indicatorContainer) {
1466
+ return;
1467
+ }
1468
+ this.$indicatorContainer.classList.toggle('govuk-exit-this-page__indicator--visible', this.keypressCounter > 0);
1469
+ const $indicators = this.$indicatorContainer.querySelectorAll('.govuk-exit-this-page__indicator-light');
1470
+ $indicators.forEach(($indicator, index) => {
1471
+ $indicator.classList.toggle('govuk-exit-this-page__indicator-light--on', index < this.keypressCounter);
1472
+ });
1473
+ }
1474
+ exitPage() {
1475
+ if (!this.$updateSpan) {
1476
+ return;
1477
+ }
1478
+ this.$updateSpan.textContent = '';
1479
+ document.body.classList.add('govuk-exit-this-page-hide-content');
1480
+ this.$overlay = document.createElement('div');
1481
+ this.$overlay.className = 'govuk-exit-this-page-overlay';
1482
+ this.$overlay.setAttribute('role', 'alert');
1483
+ document.body.appendChild(this.$overlay);
1484
+ this.$overlay.textContent = this.i18n.t('activated');
1485
+ window.location.href = this.$button.href;
1486
+ }
1487
+ handleClick(event) {
1488
+ event.preventDefault();
1489
+ this.exitPage();
1490
+ }
1491
+ handleKeypress(event) {
1492
+ if (!this.$updateSpan) {
1493
+ return;
1494
+ }
1495
+ if (event.key === 'Shift' && !this.lastKeyWasModified) {
1496
+ this.keypressCounter += 1;
1497
+ this.updateIndicator();
1498
+ if (this.timeoutMessageId) {
1499
+ window.clearTimeout(this.timeoutMessageId);
1500
+ this.timeoutMessageId = null;
1501
+ }
1502
+ if (this.keypressCounter >= 3) {
1503
+ this.keypressCounter = 0;
1504
+ if (this.keypressTimeoutId) {
1505
+ window.clearTimeout(this.keypressTimeoutId);
1506
+ this.keypressTimeoutId = null;
1507
+ }
1508
+ this.exitPage();
1509
+ } else {
1510
+ if (this.keypressCounter === 1) {
1511
+ this.$updateSpan.textContent = this.i18n.t('pressTwoMoreTimes');
1512
+ } else {
1513
+ this.$updateSpan.textContent = this.i18n.t('pressOneMoreTime');
1514
+ }
1515
+ }
1516
+ this.setKeypressTimer();
1517
+ } else if (this.keypressTimeoutId) {
1518
+ this.resetKeypressTimer();
1519
+ }
1520
+ this.lastKeyWasModified = event.shiftKey;
1521
+ }
1522
+ setKeypressTimer() {
1523
+ if (this.keypressTimeoutId) {
1524
+ window.clearTimeout(this.keypressTimeoutId);
1525
+ }
1526
+ this.keypressTimeoutId = window.setTimeout(this.resetKeypressTimer.bind(this), this.timeoutTime);
1527
+ }
1528
+ resetKeypressTimer() {
1529
+ if (!this.$updateSpan) {
1530
+ return;
1531
+ }
1532
+ if (this.keypressTimeoutId) {
1533
+ window.clearTimeout(this.keypressTimeoutId);
1534
+ this.keypressTimeoutId = null;
1535
+ }
1536
+ const $updateSpan = this.$updateSpan;
1537
+ this.keypressCounter = 0;
1538
+ $updateSpan.textContent = this.i18n.t('timedOut');
1539
+ this.timeoutMessageId = window.setTimeout(() => {
1540
+ $updateSpan.textContent = '';
1541
+ }, this.timeoutTime);
1542
+ this.updateIndicator();
1543
+ }
1544
+ resetPage() {
1545
+ document.body.classList.remove('govuk-exit-this-page-hide-content');
1546
+ if (this.$overlay) {
1547
+ this.$overlay.remove();
1548
+ this.$overlay = null;
1549
+ }
1550
+ if (this.$updateSpan) {
1551
+ this.$updateSpan.setAttribute('role', 'status');
1552
+ this.$updateSpan.textContent = '';
1553
+ }
1554
+ this.updateIndicator();
1555
+ if (this.keypressTimeoutId) {
1556
+ window.clearTimeout(this.keypressTimeoutId);
1557
+ }
1558
+ if (this.timeoutMessageId) {
1559
+ window.clearTimeout(this.timeoutMessageId);
1560
+ }
1561
+ }
1562
+ }
1563
+
1564
+ /**
1565
+ * Exit this Page config
1566
+ *
1567
+ * @see {@link ExitThisPage.defaults}
1568
+ * @typedef {object} ExitThisPageConfig
1569
+ * @property {ExitThisPageTranslations} [i18n=ExitThisPage.defaults.i18n] - Exit this page translations
1570
+ */
1571
+
1572
+ /**
1573
+ * Exit this Page translations
1574
+ *
1575
+ * @see {@link ExitThisPage.defaults.i18n}
1576
+ * @typedef {object} ExitThisPageTranslations
1577
+ *
1578
+ * Messages used by the component programatically inserted text, including
1579
+ * overlay text and screen reader announcements.
1580
+ * @property {string} [activated] - Screen reader announcement for when EtP
1581
+ * keypress functionality has been successfully activated.
1582
+ * @property {string} [timedOut] - Screen reader announcement for when the EtP
1583
+ * keypress functionality has timed out.
1584
+ * @property {string} [pressTwoMoreTimes] - Screen reader announcement informing
1585
+ * the user they must press the activation key two more times.
1586
+ * @property {string} [pressOneMoreTime] - Screen reader announcement informing
1587
+ * the user they must press the activation key one more time.
1588
+ */
1589
+
1590
+ /**
1591
+ * @typedef {import('../../common/index.mjs').Schema} Schema
1592
+ */
1593
+ ExitThisPage.moduleName = 'govuk-exit-this-page';
1594
+ ExitThisPage.defaults = Object.freeze({
1595
+ i18n: {
1596
+ activated: 'Loading.',
1597
+ timedOut: 'Exit this page expired.',
1598
+ pressTwoMoreTimes: 'Shift, press 2 more times to exit.',
1599
+ pressOneMoreTime: 'Shift, press 1 more time to exit.'
1600
+ }
1601
+ });
1602
+ ExitThisPage.schema = Object.freeze({
1603
+ properties: {
1604
+ i18n: {
1605
+ type: 'object'
1606
+ }
1607
+ }
1608
+ });
1609
+
1610
+ /**
1611
+ * Header component
1612
+ *
1613
+ * @preserve
1614
+ */
1615
+ class Header extends GOVUKFrontendComponent {
1616
+ /**
1617
+ * Apply a matchMedia for desktop which will trigger a state sync if the
1618
+ * browser viewport moves between states.
1619
+ *
1620
+ * @param {Element | null} $module - HTML element to use for header
1621
+ */
1622
+ constructor($module) {
1623
+ super();
1624
+ this.$module = void 0;
1625
+ this.$menuButton = void 0;
1626
+ this.$menu = void 0;
1627
+ this.menuIsOpen = false;
1628
+ this.mql = null;
1629
+ if (!$module) {
1630
+ throw new ElementError({
1631
+ componentName: 'Header',
1632
+ element: $module,
1633
+ identifier: 'Root element (`$module`)'
1634
+ });
1635
+ }
1636
+ this.$module = $module;
1637
+ const $menuButton = $module.querySelector('.govuk-js-header-toggle');
1638
+ if (!$menuButton) {
1639
+ return this;
1640
+ }
1641
+ const menuId = $menuButton.getAttribute('aria-controls');
1642
+ if (!menuId) {
1643
+ throw new ElementError({
1644
+ componentName: 'Header',
1645
+ identifier: 'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'
1646
+ });
1647
+ }
1648
+ const $menu = document.getElementById(menuId);
1649
+ if (!$menu) {
1650
+ throw new ElementError({
1651
+ componentName: 'Header',
1652
+ element: $menu,
1653
+ identifier: `Navigation (\`<ul id="${menuId}">\`)`
1654
+ });
1655
+ }
1656
+ this.$menu = $menu;
1657
+ this.$menuButton = $menuButton;
1658
+ this.setupResponsiveChecks();
1659
+ this.$menuButton.addEventListener('click', () => this.handleMenuButtonClick());
1660
+ }
1661
+ setupResponsiveChecks() {
1662
+ const breakpoint = getBreakpoint('desktop');
1663
+ if (!breakpoint.value) {
1664
+ throw new ElementError({
1665
+ componentName: 'Header',
1666
+ identifier: `CSS custom property (\`${breakpoint.property}\`) on pseudo-class \`:root\``
1667
+ });
1668
+ }
1669
+ this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`);
1670
+ if ('addEventListener' in this.mql) {
1671
+ this.mql.addEventListener('change', () => this.checkMode());
1672
+ } else {
1673
+ this.mql.addListener(() => this.checkMode());
1674
+ }
1675
+ this.checkMode();
1676
+ }
1677
+ checkMode() {
1678
+ if (!this.mql || !this.$menu || !this.$menuButton) {
1679
+ return;
1680
+ }
1681
+ if (this.mql.matches) {
1682
+ this.$menu.removeAttribute('hidden');
1683
+ this.$menuButton.setAttribute('hidden', '');
1684
+ } else {
1685
+ this.$menuButton.removeAttribute('hidden');
1686
+ this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString());
1687
+ if (this.menuIsOpen) {
1688
+ this.$menu.removeAttribute('hidden');
1689
+ } else {
1690
+ this.$menu.setAttribute('hidden', '');
1691
+ }
1692
+ }
1693
+ }
1694
+ handleMenuButtonClick() {
1695
+ this.menuIsOpen = !this.menuIsOpen;
1696
+ this.checkMode();
1697
+ }
1698
+ }
1699
+ Header.moduleName = 'govuk-header';
1700
+
1701
+ /**
1702
+ * Notification Banner component
1703
+ *
1704
+ * @preserve
1705
+ */
1706
+ class NotificationBanner extends GOVUKFrontendComponent {
1707
+ /**
1708
+ * @param {Element | null} $module - HTML element to use for notification banner
1709
+ * @param {NotificationBannerConfig} [config] - Notification banner config
1710
+ */
1711
+ constructor($module, config = {}) {
1712
+ super();
1713
+ this.$module = void 0;
1714
+ this.config = void 0;
1715
+ if (!($module instanceof HTMLElement)) {
1716
+ throw new ElementError({
1717
+ componentName: 'Notification banner',
1718
+ element: $module,
1719
+ identifier: 'Root element (`$module`)'
1720
+ });
1721
+ }
1722
+ this.$module = $module;
1723
+ this.config = mergeConfigs(NotificationBanner.defaults, config, normaliseDataset(NotificationBanner, $module.dataset));
1724
+ if (this.$module.getAttribute('role') === 'alert' && !this.config.disableAutoFocus) {
1725
+ setFocus(this.$module);
1726
+ }
1727
+ }
1728
+ }
1729
+
1730
+ /**
1731
+ * Notification banner config
1732
+ *
1733
+ * @typedef {object} NotificationBannerConfig
1734
+ * @property {boolean} [disableAutoFocus=false] - If set to `true` the
1735
+ * notification banner will not be focussed when the page loads. This only
1736
+ * applies if the component has a `role` of `alert` – in other cases the
1737
+ * component will not be focused on page load, regardless of this option.
1738
+ */
1739
+
1740
+ /**
1741
+ * @typedef {import('../../common/index.mjs').Schema} Schema
1742
+ */
1743
+ NotificationBanner.moduleName = 'govuk-notification-banner';
1744
+ NotificationBanner.defaults = Object.freeze({
1745
+ disableAutoFocus: false
1746
+ });
1747
+ NotificationBanner.schema = Object.freeze({
1748
+ properties: {
1749
+ disableAutoFocus: {
1750
+ type: 'boolean'
1751
+ }
1752
+ }
1753
+ });
1754
+
1755
+ /**
1756
+ * Password input component
1757
+ *
1758
+ * @preserve
1759
+ */
1760
+ class PasswordInput extends GOVUKFrontendComponent {
1761
+ /**
1762
+ * @param {Element | null} $module - HTML element to use for password input
1763
+ * @param {PasswordInputConfig} [config] - Password input config
1764
+ */
1765
+ constructor($module, config = {}) {
1766
+ super();
1767
+ this.$module = void 0;
1768
+ this.config = void 0;
1769
+ this.i18n = void 0;
1770
+ this.$input = void 0;
1771
+ this.$showHideButton = void 0;
1772
+ this.$screenReaderStatusMessage = void 0;
1773
+ if (!($module instanceof HTMLElement)) {
1774
+ throw new ElementError({
1775
+ componentName: 'Password input',
1776
+ element: $module,
1777
+ identifier: 'Root element (`$module`)'
1778
+ });
1779
+ }
1780
+ const $input = $module.querySelector('.govuk-js-password-input-input');
1781
+ if (!($input instanceof HTMLInputElement)) {
1782
+ throw new ElementError({
1783
+ componentName: 'Password input',
1784
+ element: $input,
1785
+ expectedType: 'HTMLInputElement',
1786
+ identifier: 'Form field (`.govuk-js-password-input-input`)'
1787
+ });
1788
+ }
1789
+ if ($input.type !== 'password') {
1790
+ throw new ElementError('Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.');
1791
+ }
1792
+ const $showHideButton = $module.querySelector('.govuk-js-password-input-toggle');
1793
+ if (!($showHideButton instanceof HTMLButtonElement)) {
1794
+ throw new ElementError({
1795
+ componentName: 'Password input',
1796
+ element: $showHideButton,
1797
+ expectedType: 'HTMLButtonElement',
1798
+ identifier: 'Button (`.govuk-js-password-input-toggle`)'
1799
+ });
1800
+ }
1801
+ if ($showHideButton.type !== 'button') {
1802
+ throw new ElementError('Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.');
1803
+ }
1804
+ this.$module = $module;
1805
+ this.$input = $input;
1806
+ this.$showHideButton = $showHideButton;
1807
+ this.config = mergeConfigs(PasswordInput.defaults, config, normaliseDataset(PasswordInput, $module.dataset));
1808
+ this.i18n = new I18n(this.config.i18n, {
1809
+ locale: closestAttributeValue($module, 'lang')
1810
+ });
1811
+ this.$showHideButton.removeAttribute('hidden');
1812
+ const $screenReaderStatusMessage = document.createElement('div');
1813
+ $screenReaderStatusMessage.className = 'govuk-password-input__sr-status govuk-visually-hidden';
1814
+ $screenReaderStatusMessage.setAttribute('aria-live', 'polite');
1815
+ this.$screenReaderStatusMessage = $screenReaderStatusMessage;
1816
+ this.$input.insertAdjacentElement('afterend', $screenReaderStatusMessage);
1817
+ this.$showHideButton.addEventListener('click', this.toggle.bind(this));
1818
+ if (this.$input.form) {
1819
+ this.$input.form.addEventListener('submit', () => this.hide());
1820
+ }
1821
+ window.addEventListener('pageshow', event => {
1822
+ if (event.persisted && this.$input.type !== 'password') {
1823
+ this.hide();
1824
+ }
1825
+ });
1826
+ this.hide();
1827
+ }
1828
+ toggle(event) {
1829
+ event.preventDefault();
1830
+ if (this.$input.type === 'password') {
1831
+ this.show();
1832
+ return;
1833
+ }
1834
+ this.hide();
1835
+ }
1836
+ show() {
1837
+ this.setType('text');
1838
+ }
1839
+ hide() {
1840
+ this.setType('password');
1841
+ }
1842
+ setType(type) {
1843
+ if (type === this.$input.type) {
1844
+ return;
1845
+ }
1846
+ this.$input.setAttribute('type', type);
1847
+ const isHidden = type === 'password';
1848
+ const prefixButton = isHidden ? 'show' : 'hide';
1849
+ const prefixStatus = isHidden ? 'passwordHidden' : 'passwordShown';
1850
+ this.$showHideButton.innerText = this.i18n.t(`${prefixButton}Password`);
1851
+ this.$showHideButton.setAttribute('aria-label', this.i18n.t(`${prefixButton}PasswordAriaLabel`));
1852
+ this.$screenReaderStatusMessage.innerText = this.i18n.t(`${prefixStatus}Announcement`);
1853
+ }
1854
+ }
1855
+
1856
+ /**
1857
+ * Password input config
1858
+ *
1859
+ * @typedef {object} PasswordInputConfig
1860
+ * @property {PasswordInputTranslations} [i18n=PasswordInput.defaults.i18n] - Password input translations
1861
+ */
1862
+
1863
+ /**
1864
+ * Password input translations
1865
+ *
1866
+ * @see {@link PasswordInput.defaults.i18n}
1867
+ * @typedef {object} PasswordInputTranslations
1868
+ *
1869
+ * Messages displayed to the user indicating the state of the show/hide toggle.
1870
+ * @property {string} [showPassword] - Visible text of the button when the
1871
+ * password is currently hidden. Plain text only.
1872
+ * @property {string} [hidePassword] - Visible text of the button when the
1873
+ * password is currently visible. Plain text only.
1874
+ * @property {string} [showPasswordAriaLabel] - aria-label of the button when
1875
+ * the password is currently hidden. Plain text only.
1876
+ * @property {string} [hidePasswordAriaLabel] - aria-label of the button when
1877
+ * the password is currently visible. Plain text only.
1878
+ * @property {string} [passwordShownAnnouncement] - Screen reader
1879
+ * announcement to make when the password has just become visible.
1880
+ * Plain text only.
1881
+ * @property {string} [passwordHiddenAnnouncement] - Screen reader
1882
+ * announcement to make when the password has just been hidden.
1883
+ * Plain text only.
1884
+ */
1885
+
1886
+ /**
1887
+ * @typedef {import('../../common/index.mjs').Schema} Schema
1888
+ * @typedef {import('../../i18n.mjs').TranslationPluralForms} TranslationPluralForms
1889
+ */
1890
+ PasswordInput.moduleName = 'govuk-password-input';
1891
+ PasswordInput.defaults = Object.freeze({
1892
+ i18n: {
1893
+ showPassword: 'Show',
1894
+ hidePassword: 'Hide',
1895
+ showPasswordAriaLabel: 'Show password',
1896
+ hidePasswordAriaLabel: 'Hide password',
1897
+ passwordShownAnnouncement: 'Your password is visible',
1898
+ passwordHiddenAnnouncement: 'Your password is hidden'
1899
+ }
1900
+ });
1901
+ PasswordInput.schema = Object.freeze({
1902
+ properties: {
1903
+ i18n: {
1904
+ type: 'object'
1905
+ }
1906
+ }
1907
+ });
1908
+
1909
+ /**
1910
+ * Radios component
1911
+ *
1912
+ * @preserve
1913
+ */
1914
+ class Radios extends GOVUKFrontendComponent {
1915
+ /**
1916
+ * Radios can be associated with a 'conditionally revealed' content block –
1917
+ * for example, a radio for 'Phone' could reveal an additional form field for
1918
+ * the user to enter their phone number.
1919
+ *
1920
+ * These associations are made using a `data-aria-controls` attribute, which
1921
+ * is promoted to an aria-controls attribute during initialisation.
1922
+ *
1923
+ * We also need to restore the state of any conditional reveals on the page
1924
+ * (for example if the user has navigated back), and set up event handlers to
1925
+ * keep the reveal in sync with the radio state.
1926
+ *
1927
+ * @param {Element | null} $module - HTML element to use for radios
1928
+ */
1929
+ constructor($module) {
1930
+ super();
1931
+ this.$module = void 0;
1932
+ this.$inputs = void 0;
1933
+ if (!($module instanceof HTMLElement)) {
1934
+ throw new ElementError({
1935
+ componentName: 'Radios',
1936
+ element: $module,
1937
+ identifier: 'Root element (`$module`)'
1938
+ });
1939
+ }
1940
+ const $inputs = $module.querySelectorAll('input[type="radio"]');
1941
+ if (!$inputs.length) {
1942
+ throw new ElementError({
1943
+ componentName: 'Radios',
1944
+ identifier: 'Form inputs (`<input type="radio">`)'
1945
+ });
1946
+ }
1947
+ this.$module = $module;
1948
+ this.$inputs = $inputs;
1949
+ this.$inputs.forEach($input => {
1950
+ const targetId = $input.getAttribute('data-aria-controls');
1951
+ if (!targetId) {
1952
+ return;
1953
+ }
1954
+ if (!document.getElementById(targetId)) {
1955
+ throw new ElementError({
1956
+ componentName: 'Radios',
1957
+ identifier: `Conditional reveal (\`id="${targetId}"\`)`
1958
+ });
1959
+ }
1960
+ $input.setAttribute('aria-controls', targetId);
1961
+ $input.removeAttribute('data-aria-controls');
1962
+ });
1963
+ window.addEventListener('pageshow', () => this.syncAllConditionalReveals());
1964
+ this.syncAllConditionalReveals();
1965
+ this.$module.addEventListener('click', event => this.handleClick(event));
1966
+ }
1967
+ syncAllConditionalReveals() {
1968
+ this.$inputs.forEach($input => this.syncConditionalRevealWithInputState($input));
1969
+ }
1970
+ syncConditionalRevealWithInputState($input) {
1971
+ const targetId = $input.getAttribute('aria-controls');
1972
+ if (!targetId) {
1973
+ return;
1974
+ }
1975
+ const $target = document.getElementById(targetId);
1976
+ if ($target != null && $target.classList.contains('govuk-radios__conditional')) {
1977
+ const inputIsChecked = $input.checked;
1978
+ $input.setAttribute('aria-expanded', inputIsChecked.toString());
1979
+ $target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked);
1980
+ }
1981
+ }
1982
+ handleClick(event) {
1983
+ const $clickedInput = event.target;
1984
+ if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {
1985
+ return;
1986
+ }
1987
+ const $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]');
1988
+ const $clickedInputForm = $clickedInput.form;
1989
+ const $clickedInputName = $clickedInput.name;
1990
+ $allInputs.forEach($input => {
1991
+ const hasSameFormOwner = $input.form === $clickedInputForm;
1992
+ const hasSameName = $input.name === $clickedInputName;
1993
+ if (hasSameName && hasSameFormOwner) {
1994
+ this.syncConditionalRevealWithInputState($input);
1995
+ }
1996
+ });
1997
+ }
1998
+ }
1999
+ Radios.moduleName = 'govuk-radios';
2000
+
2001
+ /**
2002
+ * Skip link component
2003
+ *
2004
+ * @preserve
2005
+ */
2006
+ class SkipLink extends GOVUKFrontendComponent {
2007
+ /**
2008
+ * @param {Element | null} $module - HTML element to use for skip link
2009
+ * @throws {ElementError} when $module is not set or the wrong type
2010
+ * @throws {ElementError} when $module.hash does not contain a hash
2011
+ * @throws {ElementError} when the linked element is missing or the wrong type
2012
+ */
2013
+ constructor($module) {
2014
+ var _this$$module$getAttr;
2015
+ super();
2016
+ this.$module = void 0;
2017
+ if (!($module instanceof HTMLAnchorElement)) {
2018
+ throw new ElementError({
2019
+ componentName: 'Skip link',
2020
+ element: $module,
2021
+ expectedType: 'HTMLAnchorElement',
2022
+ identifier: 'Root element (`$module`)'
2023
+ });
2024
+ }
2025
+ this.$module = $module;
2026
+ const hash = this.$module.hash;
2027
+ const href = (_this$$module$getAttr = this.$module.getAttribute('href')) != null ? _this$$module$getAttr : '';
2028
+ let url;
2029
+ try {
2030
+ url = new window.URL(this.$module.href);
2031
+ } catch (error) {
2032
+ throw new ElementError(`Skip link: Target link (\`href="${href}"\`) is invalid`);
2033
+ }
2034
+ if (url.origin !== window.location.origin || url.pathname !== window.location.pathname) {
2035
+ return;
2036
+ }
2037
+ const linkedElementId = getFragmentFromUrl(hash);
2038
+ if (!linkedElementId) {
2039
+ throw new ElementError(`Skip link: Target link (\`href="${href}"\`) has no hash fragment`);
2040
+ }
2041
+ const $linkedElement = document.getElementById(linkedElementId);
2042
+ if (!$linkedElement) {
2043
+ throw new ElementError({
2044
+ componentName: 'Skip link',
2045
+ element: $linkedElement,
2046
+ identifier: `Target content (\`id="${linkedElementId}"\`)`
2047
+ });
2048
+ }
2049
+ this.$module.addEventListener('click', () => setFocus($linkedElement, {
2050
+ onBeforeFocus() {
2051
+ $linkedElement.classList.add('govuk-skip-link-focused-element');
2052
+ },
2053
+ onBlur() {
2054
+ $linkedElement.classList.remove('govuk-skip-link-focused-element');
2055
+ }
2056
+ }));
2057
+ }
2058
+ }
2059
+ SkipLink.moduleName = 'govuk-skip-link';
2060
+
2061
+ /**
2062
+ * Tabs component
2063
+ *
2064
+ * @preserve
2065
+ */
2066
+ class Tabs extends GOVUKFrontendComponent {
2067
+ /**
2068
+ * @param {Element | null} $module - HTML element to use for tabs
2069
+ */
2070
+ constructor($module) {
2071
+ super();
2072
+ this.$module = void 0;
2073
+ this.$tabs = void 0;
2074
+ this.$tabList = void 0;
2075
+ this.$tabListItems = void 0;
2076
+ this.jsHiddenClass = 'govuk-tabs__panel--hidden';
2077
+ this.changingHash = false;
2078
+ this.boundTabClick = void 0;
2079
+ this.boundTabKeydown = void 0;
2080
+ this.boundOnHashChange = void 0;
2081
+ this.mql = null;
2082
+ if (!$module) {
2083
+ throw new ElementError({
2084
+ componentName: 'Tabs',
2085
+ element: $module,
2086
+ identifier: 'Root element (`$module`)'
2087
+ });
2088
+ }
2089
+ const $tabs = $module.querySelectorAll('a.govuk-tabs__tab');
2090
+ if (!$tabs.length) {
2091
+ throw new ElementError({
2092
+ componentName: 'Tabs',
2093
+ identifier: 'Links (`<a class="govuk-tabs__tab">`)'
2094
+ });
2095
+ }
2096
+ this.$module = $module;
2097
+ this.$tabs = $tabs;
2098
+ this.boundTabClick = this.onTabClick.bind(this);
2099
+ this.boundTabKeydown = this.onTabKeydown.bind(this);
2100
+ this.boundOnHashChange = this.onHashChange.bind(this);
2101
+ const $tabList = this.$module.querySelector('.govuk-tabs__list');
2102
+ const $tabListItems = this.$module.querySelectorAll('li.govuk-tabs__list-item');
2103
+ if (!$tabList) {
2104
+ throw new ElementError({
2105
+ componentName: 'Tabs',
2106
+ identifier: 'List (`<ul class="govuk-tabs__list">`)'
2107
+ });
2108
+ }
2109
+ if (!$tabListItems.length) {
2110
+ throw new ElementError({
2111
+ componentName: 'Tabs',
2112
+ identifier: 'List items (`<li class="govuk-tabs__list-item">`)'
2113
+ });
2114
+ }
2115
+ this.$tabList = $tabList;
2116
+ this.$tabListItems = $tabListItems;
2117
+ this.setupResponsiveChecks();
2118
+ }
2119
+ setupResponsiveChecks() {
2120
+ const breakpoint = getBreakpoint('tablet');
2121
+ if (!breakpoint.value) {
2122
+ throw new ElementError({
2123
+ componentName: 'Tabs',
2124
+ identifier: `CSS custom property (\`${breakpoint.property}\`) on pseudo-class \`:root\``
2125
+ });
2126
+ }
2127
+ this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`);
2128
+ if ('addEventListener' in this.mql) {
2129
+ this.mql.addEventListener('change', () => this.checkMode());
2130
+ } else {
2131
+ this.mql.addListener(() => this.checkMode());
2132
+ }
2133
+ this.checkMode();
2134
+ }
2135
+ checkMode() {
2136
+ var _this$mql;
2137
+ if ((_this$mql = this.mql) != null && _this$mql.matches) {
2138
+ this.setup();
2139
+ } else {
2140
+ this.teardown();
2141
+ }
2142
+ }
2143
+ setup() {
2144
+ var _this$getTab;
2145
+ this.$tabList.setAttribute('role', 'tablist');
2146
+ this.$tabListItems.forEach($item => {
2147
+ $item.setAttribute('role', 'presentation');
2148
+ });
2149
+ this.$tabs.forEach($tab => {
2150
+ this.setAttributes($tab);
2151
+ $tab.addEventListener('click', this.boundTabClick, true);
2152
+ $tab.addEventListener('keydown', this.boundTabKeydown, true);
2153
+ this.hideTab($tab);
2154
+ });
2155
+ const $activeTab = (_this$getTab = this.getTab(window.location.hash)) != null ? _this$getTab : this.$tabs[0];
2156
+ this.showTab($activeTab);
2157
+ window.addEventListener('hashchange', this.boundOnHashChange, true);
2158
+ }
2159
+ teardown() {
2160
+ this.$tabList.removeAttribute('role');
2161
+ this.$tabListItems.forEach($item => {
2162
+ $item.removeAttribute('role');
2163
+ });
2164
+ this.$tabs.forEach($tab => {
2165
+ $tab.removeEventListener('click', this.boundTabClick, true);
2166
+ $tab.removeEventListener('keydown', this.boundTabKeydown, true);
2167
+ this.unsetAttributes($tab);
2168
+ });
2169
+ window.removeEventListener('hashchange', this.boundOnHashChange, true);
2170
+ }
2171
+ onHashChange() {
2172
+ const hash = window.location.hash;
2173
+ const $tabWithHash = this.getTab(hash);
2174
+ if (!$tabWithHash) {
2175
+ return;
2176
+ }
2177
+ if (this.changingHash) {
2178
+ this.changingHash = false;
2179
+ return;
2180
+ }
2181
+ const $previousTab = this.getCurrentTab();
2182
+ if (!$previousTab) {
2183
+ return;
2184
+ }
2185
+ this.hideTab($previousTab);
2186
+ this.showTab($tabWithHash);
2187
+ $tabWithHash.focus();
2188
+ }
2189
+ hideTab($tab) {
2190
+ this.unhighlightTab($tab);
2191
+ this.hidePanel($tab);
2192
+ }
2193
+ showTab($tab) {
2194
+ this.highlightTab($tab);
2195
+ this.showPanel($tab);
2196
+ }
2197
+ getTab(hash) {
2198
+ return this.$module.querySelector(`a.govuk-tabs__tab[href="${hash}"]`);
2199
+ }
2200
+ setAttributes($tab) {
2201
+ const panelId = getFragmentFromUrl($tab.href);
2202
+ if (!panelId) {
2203
+ return;
2204
+ }
2205
+ $tab.setAttribute('id', `tab_${panelId}`);
2206
+ $tab.setAttribute('role', 'tab');
2207
+ $tab.setAttribute('aria-controls', panelId);
2208
+ $tab.setAttribute('aria-selected', 'false');
2209
+ $tab.setAttribute('tabindex', '-1');
2210
+ const $panel = this.getPanel($tab);
2211
+ if (!$panel) {
2212
+ return;
2213
+ }
2214
+ $panel.setAttribute('role', 'tabpanel');
2215
+ $panel.setAttribute('aria-labelledby', $tab.id);
2216
+ $panel.classList.add(this.jsHiddenClass);
2217
+ }
2218
+ unsetAttributes($tab) {
2219
+ $tab.removeAttribute('id');
2220
+ $tab.removeAttribute('role');
2221
+ $tab.removeAttribute('aria-controls');
2222
+ $tab.removeAttribute('aria-selected');
2223
+ $tab.removeAttribute('tabindex');
2224
+ const $panel = this.getPanel($tab);
2225
+ if (!$panel) {
2226
+ return;
2227
+ }
2228
+ $panel.removeAttribute('role');
2229
+ $panel.removeAttribute('aria-labelledby');
2230
+ $panel.classList.remove(this.jsHiddenClass);
2231
+ }
2232
+ onTabClick(event) {
2233
+ const $currentTab = this.getCurrentTab();
2234
+ const $nextTab = event.currentTarget;
2235
+ if (!$currentTab || !($nextTab instanceof HTMLAnchorElement)) {
2236
+ return;
2237
+ }
2238
+ event.preventDefault();
2239
+ this.hideTab($currentTab);
2240
+ this.showTab($nextTab);
2241
+ this.createHistoryEntry($nextTab);
2242
+ }
2243
+ createHistoryEntry($tab) {
2244
+ const $panel = this.getPanel($tab);
2245
+ if (!$panel) {
2246
+ return;
2247
+ }
2248
+ const panelId = $panel.id;
2249
+ $panel.id = '';
2250
+ this.changingHash = true;
2251
+ window.location.hash = panelId;
2252
+ $panel.id = panelId;
2253
+ }
2254
+ onTabKeydown(event) {
2255
+ switch (event.key) {
2256
+ case 'ArrowLeft':
2257
+ case 'ArrowUp':
2258
+ case 'Left':
2259
+ case 'Up':
2260
+ this.activatePreviousTab();
2261
+ event.preventDefault();
2262
+ break;
2263
+ case 'ArrowRight':
2264
+ case 'ArrowDown':
2265
+ case 'Right':
2266
+ case 'Down':
2267
+ this.activateNextTab();
2268
+ event.preventDefault();
2269
+ break;
2270
+ }
2271
+ }
2272
+ activateNextTab() {
2273
+ const $currentTab = this.getCurrentTab();
2274
+ if (!($currentTab != null && $currentTab.parentElement)) {
2275
+ return;
2276
+ }
2277
+ const $nextTabListItem = $currentTab.parentElement.nextElementSibling;
2278
+ if (!$nextTabListItem) {
2279
+ return;
2280
+ }
2281
+ const $nextTab = $nextTabListItem.querySelector('a.govuk-tabs__tab');
2282
+ if (!$nextTab) {
2283
+ return;
2284
+ }
2285
+ this.hideTab($currentTab);
2286
+ this.showTab($nextTab);
2287
+ $nextTab.focus();
2288
+ this.createHistoryEntry($nextTab);
2289
+ }
2290
+ activatePreviousTab() {
2291
+ const $currentTab = this.getCurrentTab();
2292
+ if (!($currentTab != null && $currentTab.parentElement)) {
2293
+ return;
2294
+ }
2295
+ const $previousTabListItem = $currentTab.parentElement.previousElementSibling;
2296
+ if (!$previousTabListItem) {
2297
+ return;
2298
+ }
2299
+ const $previousTab = $previousTabListItem.querySelector('a.govuk-tabs__tab');
2300
+ if (!$previousTab) {
2301
+ return;
2302
+ }
2303
+ this.hideTab($currentTab);
2304
+ this.showTab($previousTab);
2305
+ $previousTab.focus();
2306
+ this.createHistoryEntry($previousTab);
2307
+ }
2308
+ getPanel($tab) {
2309
+ const panelId = getFragmentFromUrl($tab.href);
2310
+ if (!panelId) {
2311
+ return null;
2312
+ }
2313
+ return this.$module.querySelector(`#${panelId}`);
2314
+ }
2315
+ showPanel($tab) {
2316
+ const $panel = this.getPanel($tab);
2317
+ if (!$panel) {
2318
+ return;
2319
+ }
2320
+ $panel.classList.remove(this.jsHiddenClass);
2321
+ }
2322
+ hidePanel($tab) {
2323
+ const $panel = this.getPanel($tab);
2324
+ if (!$panel) {
2325
+ return;
2326
+ }
2327
+ $panel.classList.add(this.jsHiddenClass);
2328
+ }
2329
+ unhighlightTab($tab) {
2330
+ if (!$tab.parentElement) {
2331
+ return;
2332
+ }
2333
+ $tab.setAttribute('aria-selected', 'false');
2334
+ $tab.parentElement.classList.remove('govuk-tabs__list-item--selected');
2335
+ $tab.setAttribute('tabindex', '-1');
2336
+ }
2337
+ highlightTab($tab) {
2338
+ if (!$tab.parentElement) {
2339
+ return;
2340
+ }
2341
+ $tab.setAttribute('aria-selected', 'true');
2342
+ $tab.parentElement.classList.add('govuk-tabs__list-item--selected');
2343
+ $tab.setAttribute('tabindex', '0');
2344
+ }
2345
+ getCurrentTab() {
2346
+ return this.$module.querySelector('.govuk-tabs__list-item--selected a.govuk-tabs__tab');
2347
+ }
2348
+ }
2349
+ Tabs.moduleName = 'govuk-tabs';
2350
+
2351
+ /**
2352
+ * Initialise all components
2353
+ *
2354
+ * Use the `data-module` attributes to find, instantiate and init all of the
2355
+ * components provided as part of GOV.UK Frontend.
2356
+ *
2357
+ * @param {Config & { scope?: Element }} [config] - Config for all components (with optional scope)
2358
+ */
2359
+ function initAll(config) {
2360
+ var _config$scope;
2361
+ config = typeof config !== 'undefined' ? config : {};
2362
+ if (!isSupported()) {
2363
+ console.log(new SupportError());
2364
+ return;
2365
+ }
2366
+ const components = [[Accordion, config.accordion], [Button, config.button], [CharacterCount, config.characterCount], [Checkboxes], [ErrorSummary, config.errorSummary], [ExitThisPage, config.exitThisPage], [Header], [NotificationBanner, config.notificationBanner], [PasswordInput, config.passwordInput], [Radios], [SkipLink], [Tabs]];
2367
+ const $scope = (_config$scope = config.scope) != null ? _config$scope : document;
2368
+ components.forEach(([Component, config]) => {
2369
+ createAll(Component, config, $scope);
2370
+ });
2371
+ }
2372
+
2373
+ /**
2374
+ * Create all instances of a specific component on the page
2375
+ *
2376
+ * Uses the `data-module` attribute to find all elements matching the specified
2377
+ * component on the page, creating instances of the component object for each
2378
+ * of them.
2379
+ *
2380
+ * Any component errors will be caught and logged to the console.
2381
+ *
2382
+ * @template {CompatibleClass} T
2383
+ * @param {T} Component - class of the component to create
2384
+ * @param {T["defaults"]} [config] - config for the component
2385
+ * @param {Element|Document} [$scope] - scope of the document to search within
2386
+ * @returns {Array<InstanceType<T>>} - array of instantiated components
2387
+ */
2388
+ function createAll(Component, config, $scope = document) {
2389
+ const $elements = $scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
2390
+ return Array.from($elements).map($element => {
2391
+ try {
2392
+ return 'defaults' in Component && typeof config !== 'undefined' ? new Component($element, config) : new Component($element);
2393
+ } catch (error) {
2394
+ console.log(error);
2395
+ return null;
2396
+ }
2397
+ }).filter(Boolean);
2398
+ }
2399
+ /**
2400
+ * @typedef {{new (...args: any[]): any, defaults?: object, moduleName: string}} CompatibleClass
2401
+ */
2402
+ /**
2403
+ * Config for all components via `initAll()`
2404
+ *
2405
+ * @typedef {object} Config
2406
+ * @property {AccordionConfig} [accordion] - Accordion config
2407
+ * @property {ButtonConfig} [button] - Button config
2408
+ * @property {CharacterCountConfig} [characterCount] - Character Count config
2409
+ * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config
2410
+ * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config
2411
+ * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config
2412
+ * @property {PasswordInputConfig} [passwordInput] - Password input config
2413
+ */
2414
+ /**
2415
+ * Config for individual components
2416
+ *
2417
+ * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig
2418
+ * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations
2419
+ * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig
2420
+ * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig
2421
+ * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations
2422
+ * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig
2423
+ * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig
2424
+ * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations
2425
+ * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig
2426
+ * @typedef {import('./components/password-input/password-input.mjs').PasswordInputConfig} PasswordInputConfig
2427
+ */
2428
+ /**
2429
+ * Component config keys, e.g. `accordion` and `characterCount`
2430
+ *
2431
+ * @typedef {keyof Config} ConfigKey
2432
+ */
2433
+
2434
+ export { Accordion, Button, CharacterCount, Checkboxes, ErrorSummary, ExitThisPage, Header, NotificationBanner, PasswordInput, Radios, SkipLink, Tabs, createAll, initAll, version };
2435
+ //# sourceMappingURL=all.bundle.mjs.map