govuk_tech_docs 6.3.0.beta → 6.4.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/documentation.yaml +29 -0
  3. data/.github/workflows/build-middleman-artifact.yaml +41 -0
  4. data/.github/workflows/check-documentation-updates.yaml +32 -0
  5. data/.github/workflows/check-gem-version.yaml +36 -0
  6. data/.github/workflows/dependency-review.yaml +2 -5
  7. data/.github/workflows/pipeline.yaml +50 -0
  8. data/.github/workflows/publish-gem.yaml +61 -0
  9. data/.github/workflows/publish-github-pages.yaml +38 -0
  10. data/.github/workflows/test.yaml +17 -10
  11. data/.gitignore +5 -4
  12. data/.rspec +1 -0
  13. data/CHANGELOG.md +17 -4
  14. data/README.md +10 -10
  15. data/Rakefile +1 -1
  16. data/documentation/.nvmrc +1 -0
  17. data/documentation/Gemfile +11 -0
  18. data/documentation/LICENSE +21 -0
  19. data/documentation/README.md +30 -0
  20. data/documentation/Staticfile +4 -0
  21. data/documentation/config/tech-docs.yml +45 -0
  22. data/{example → documentation}/config.rb +3 -6
  23. data/documentation/source/accessibility/index.html.md.erb +64 -0
  24. data/documentation/source/configure_project/frontmatter/index.html.md.erb +206 -0
  25. data/documentation/source/configure_project/global_configuration/index.html.md.erb +328 -0
  26. data/documentation/source/configure_project/index.html.md.erb +17 -0
  27. data/documentation/source/configure_project/page_expiry_and_review/index.html.md.erb +93 -0
  28. data/documentation/source/configure_project/structure_docs/index.html.md.erb +117 -0
  29. data/documentation/source/create_project/build/index.html.md.erb +20 -0
  30. data/documentation/source/create_project/create_new_project/index.html.md.erb +23 -0
  31. data/documentation/source/create_project/get_started/index.html.md.erb +58 -0
  32. data/documentation/source/create_project/index.html.md.erb +17 -0
  33. data/documentation/source/create_project/preview/index.html.md.erb +26 -0
  34. data/documentation/source/images/Basic multipage.svg +1 -0
  35. data/documentation/source/images/Basic_multipage.svg +1 -0
  36. data/documentation/source/images/Nested multipage.svg +1 -0
  37. data/documentation/source/images/Nested_multipage.svg +1 -0
  38. data/documentation/source/images/Single_page.svg +1 -0
  39. data/documentation/source/images/core-layout-without-sidebar.png +0 -0
  40. data/documentation/source/images/core-layout.png +0 -0
  41. data/documentation/source/images/daniel-the-manual-spaniel-screenshot.svg +1 -0
  42. data/documentation/source/images/expired-page.png +0 -0
  43. data/documentation/source/images/last-reviewed-only.png +0 -0
  44. data/documentation/source/images/last-reviewed-only.svg +1 -0
  45. data/documentation/source/images/layout-layout.png +0 -0
  46. data/documentation/source/images/multipage.svg +3 -0
  47. data/documentation/source/images/not-expired-page.png +0 -0
  48. data/documentation/source/index.html.md.erb +19 -0
  49. data/documentation/source/maintain_project/index.html.md.erb +18 -0
  50. data/documentation/source/maintain_project/redirects/index.html.md.erb +22 -0
  51. data/documentation/source/maintain_project/review_content/index.html.md.erb +45 -0
  52. data/documentation/source/maintain_project/use_latest_template/index.html.md.erb +34 -0
  53. data/documentation/source/partials/_links.erb +81 -0
  54. data/documentation/source/publish_project/deploy/index.html.md.erb +44 -0
  55. data/documentation/source/publish_project/index.html.md.erb +15 -0
  56. data/documentation/source/publish_project/version/index.html.md.erb +12 -0
  57. data/documentation/source/support/index.html.md.erb +46 -0
  58. data/documentation/source/write_docs/add_openapi_spec/index.html.md.erb +48 -0
  59. data/documentation/source/write_docs/content/index.html.md.erb +128 -0
  60. data/documentation/source/write_docs/index.html.md.erb +15 -0
  61. data/lib/govuk_tech_docs/version.rb +1 -1
  62. data/lib/source/layouts/_footer.erb +2 -2
  63. data/lib/source/layouts/_header.erb +2 -2
  64. data/lib/source/layouts/_service_navigation.erb +2 -5
  65. data/lib/source/layouts/core.erb +12 -6
  66. data/node_modules/govuk-frontend/dist/govuk/_base.import.scss +6 -0
  67. data/node_modules/govuk-frontend/dist/govuk/_base.scss +4 -5
  68. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +32 -26
  69. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +32 -26
  70. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-180.png +0 -0
  71. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-192.png +0 -0
  72. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-512.png +0 -0
  73. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  74. data/node_modules/govuk-frontend/dist/govuk/components/_index.import.scss +38 -0
  75. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +37 -39
  76. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.import.scss +6 -0
  77. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.import.scss +8 -0
  78. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +3 -373
  79. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_mixin.scss +375 -0
  80. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.import.scss +6 -0
  81. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_index.import.scss +8 -0
  82. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_index.scss +3 -85
  83. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_mixin.scss +87 -0
  84. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.import.scss +6 -0
  85. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_index.import.scss +8 -0
  86. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_index.scss +3 -136
  87. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_mixin.scss +134 -0
  88. data/node_modules/govuk-frontend/dist/govuk/components/button/_button.import.scss +6 -0
  89. data/node_modules/govuk-frontend/dist/govuk/components/button/_index.import.scss +13 -0
  90. data/node_modules/govuk-frontend/dist/govuk/components/button/_index.scss +9 -259
  91. data/node_modules/govuk-frontend/dist/govuk/components/button/_mixin.scss +233 -0
  92. data/node_modules/govuk-frontend/dist/govuk/components/button/_settings.import.scss +32 -0
  93. data/node_modules/govuk-frontend/dist/govuk/components/button/_settings.scss +34 -0
  94. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.import.scss +6 -0
  95. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.import.scss +12 -0
  96. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +7 -44
  97. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_mixin.scss +41 -0
  98. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.import.scss +6 -0
  99. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.import.scss +12 -0
  100. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +7 -314
  101. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_mixin.scss +317 -0
  102. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.import.scss +6 -0
  103. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.import.scss +9 -0
  104. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +4 -55
  105. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_mixin.scss +56 -0
  106. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.import.scss +6 -0
  107. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.import.scss +13 -0
  108. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +8 -33
  109. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_mixin.scss +29 -0
  110. data/node_modules/govuk-frontend/dist/govuk/components/details/_details.import.scss +6 -0
  111. data/node_modules/govuk-frontend/dist/govuk/components/details/_index.import.scss +8 -0
  112. data/node_modules/govuk-frontend/dist/govuk/components/details/_index.scss +3 -141
  113. data/node_modules/govuk-frontend/dist/govuk/components/details/_mixin.scss +143 -0
  114. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.import.scss +6 -0
  115. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_index.import.scss +8 -0
  116. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_index.scss +3 -14
  117. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_mixin.scss +16 -0
  118. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.import.scss +6 -0
  119. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.import.scss +8 -0
  120. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +3 -57
  121. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_mixin.scss +58 -0
  122. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.import.scss +6 -0
  123. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_index.import.scss +9 -0
  124. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_index.scss +4 -91
  125. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_mixin.scss +96 -0
  126. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.import.scss +6 -0
  127. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.import.scss +8 -0
  128. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +3 -69
  129. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_mixin.scss +71 -0
  130. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.import.scss +6 -0
  131. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.import.scss +11 -0
  132. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +6 -211
  133. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_mixin.scss +217 -0
  134. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.js +31 -25
  135. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.mjs +31 -25
  136. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.mjs +31 -26
  137. data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.import.scss +6 -0
  138. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.import.scss +8 -0
  139. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss +3 -197
  140. data/node_modules/govuk-frontend/dist/govuk/components/footer/_mixin.scss +199 -0
  141. data/node_modules/govuk-frontend/dist/govuk/components/generic-header/_generic-header.import.scss +6 -0
  142. data/node_modules/govuk-frontend/dist/govuk/components/generic-header/_index.import.scss +8 -0
  143. data/node_modules/govuk-frontend/dist/govuk/components/generic-header/_index.scss +5 -0
  144. data/node_modules/govuk-frontend/dist/govuk/components/generic-header/_mixin.scss +140 -0
  145. data/node_modules/govuk-frontend/dist/govuk/components/header/_header.import.scss +6 -0
  146. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.import.scss +8 -0
  147. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +3 -188
  148. data/node_modules/govuk-frontend/dist/govuk/components/header/_mixin.scss +119 -0
  149. data/node_modules/govuk-frontend/dist/govuk/components/hint/_hint.import.scss +6 -0
  150. data/node_modules/govuk-frontend/dist/govuk/components/hint/_index.import.scss +8 -0
  151. data/node_modules/govuk-frontend/dist/govuk/components/hint/_index.scss +3 -45
  152. data/node_modules/govuk-frontend/dist/govuk/components/hint/_mixin.scss +47 -0
  153. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.import.scss +11 -0
  154. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +6 -162
  155. data/node_modules/govuk-frontend/dist/govuk/components/input/_input.import.scss +6 -0
  156. data/node_modules/govuk-frontend/dist/govuk/components/input/_mixin.scss +161 -0
  157. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_index.import.scss +8 -0
  158. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_index.scss +3 -29
  159. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.import.scss +6 -0
  160. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_mixin.scss +31 -0
  161. data/node_modules/govuk-frontend/dist/govuk/components/label/_index.import.scss +8 -0
  162. data/node_modules/govuk-frontend/dist/govuk/components/label/_index.scss +3 -46
  163. data/node_modules/govuk-frontend/dist/govuk/components/label/_label.import.scss +6 -0
  164. data/node_modules/govuk-frontend/dist/govuk/components/label/_mixin.scss +48 -0
  165. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.import.scss +8 -0
  166. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +3 -97
  167. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_mixin.scss +100 -0
  168. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.import.scss +6 -0
  169. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.import.scss +8 -0
  170. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +3 -233
  171. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_mixin.scss +235 -0
  172. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.import.scss +6 -0
  173. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.import.scss +8 -0
  174. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +3 -58
  175. data/node_modules/govuk-frontend/dist/govuk/components/panel/_mixin.scss +94 -0
  176. data/node_modules/govuk-frontend/dist/govuk/components/panel/_panel.import.scss +6 -0
  177. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.import.scss +10 -0
  178. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +5 -56
  179. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_mixin.scss +56 -0
  180. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.import.scss +6 -0
  181. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.import.scss +9 -0
  182. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +4 -41
  183. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_mixin.scss +42 -0
  184. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.import.scss +6 -0
  185. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.import.scss +12 -0
  186. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +7 -330
  187. data/node_modules/govuk-frontend/dist/govuk/components/radios/_mixin.scss +336 -0
  188. data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.import.scss +6 -0
  189. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.import.scss +11 -0
  190. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +6 -53
  191. data/node_modules/govuk-frontend/dist/govuk/components/select/_mixin.scss +45 -0
  192. data/node_modules/govuk-frontend/dist/govuk/components/select/_select.import.scss +6 -0
  193. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.import.scss +8 -0
  194. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +3 -235
  195. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_mixin.scss +238 -0
  196. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.import.scss +6 -0
  197. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.import.scss +8 -0
  198. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +3 -58
  199. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_mixin.scss +60 -0
  200. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.import.scss +6 -0
  201. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.import.scss +8 -0
  202. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +3 -284
  203. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_mixin.scss +286 -0
  204. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.import.scss +6 -0
  205. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.import.scss +8 -0
  206. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss +3 -75
  207. data/node_modules/govuk-frontend/dist/govuk/components/table/_mixin.scss +77 -0
  208. data/node_modules/govuk-frontend/dist/govuk/components/table/_table.import.scss +6 -0
  209. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_index.import.scss +8 -0
  210. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_index.scss +3 -138
  211. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_mixin.scss +140 -0
  212. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_tabs.import.scss +6 -0
  213. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.import.scss +8 -0
  214. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +3 -132
  215. data/node_modules/govuk-frontend/dist/govuk/components/tag/_mixin.scss +135 -0
  216. data/node_modules/govuk-frontend/dist/govuk/components/tag/_tag.import.scss +6 -0
  217. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.import.scss +9 -0
  218. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +4 -82
  219. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_mixin.scss +83 -0
  220. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.import.scss +6 -0
  221. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.import.scss +11 -0
  222. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +6 -44
  223. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_mixin.scss +43 -0
  224. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.import.scss +6 -0
  225. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.import.scss +8 -0
  226. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +3 -67
  227. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_mixin.scss +69 -0
  228. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.import.scss +6 -0
  229. data/node_modules/govuk-frontend/dist/govuk/core/_global-styles.import.scss +10 -0
  230. data/node_modules/govuk-frontend/dist/govuk/core/_global-styles.mixin.scss +19 -0
  231. data/node_modules/govuk-frontend/dist/govuk/core/_global-styles.scss +5 -22
  232. data/node_modules/govuk-frontend/dist/govuk/core/_index.import.scss +6 -0
  233. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss +6 -10
  234. data/node_modules/govuk-frontend/dist/govuk/core/_links.import.scss +10 -0
  235. data/node_modules/govuk-frontend/dist/govuk/core/_links.mixin.scss +44 -0
  236. data/node_modules/govuk-frontend/dist/govuk/core/_links.scss +3 -48
  237. data/node_modules/govuk-frontend/dist/govuk/core/_lists.import.scss +14 -0
  238. data/node_modules/govuk-frontend/dist/govuk/core/_lists.mixin.scss +74 -0
  239. data/node_modules/govuk-frontend/dist/govuk/core/_lists.scss +6 -73
  240. data/node_modules/govuk-frontend/dist/govuk/core/_section-break.import.scss +8 -0
  241. data/node_modules/govuk-frontend/dist/govuk/core/_section-break.mixin.scss +54 -0
  242. data/node_modules/govuk-frontend/dist/govuk/core/_section-break.scss +3 -55
  243. data/node_modules/govuk-frontend/dist/govuk/core/_typography.import.scss +8 -0
  244. data/node_modules/govuk-frontend/dist/govuk/core/_typography.mixin.scss +173 -0
  245. data/node_modules/govuk-frontend/dist/govuk/core/_typography.scss +3 -174
  246. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_breakpoints.import.scss +8 -0
  247. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_breakpoints.mixin.scss +15 -0
  248. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_breakpoints.scss +2 -15
  249. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_frontend-version.import.scss +8 -0
  250. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_frontend-version.mixin.scss +13 -0
  251. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_frontend-version.scss +2 -13
  252. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_functional-colours.import.scss +8 -0
  253. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_functional-colours.mixin.scss +21 -0
  254. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_functional-colours.scss +2 -20
  255. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_index.import.scss +4 -0
  256. data/node_modules/govuk-frontend/dist/govuk/custom-properties/_index.scss +3 -4
  257. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  258. data/node_modules/govuk-frontend/dist/govuk/helpers/_clearfix.import.scss +2 -0
  259. data/node_modules/govuk-frontend/dist/govuk/helpers/_clearfix.scss +0 -1
  260. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.import.scss +2 -0
  261. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +35 -17
  262. data/node_modules/govuk-frontend/dist/govuk/helpers/_device-pixels.import.scss +2 -0
  263. data/node_modules/govuk-frontend/dist/govuk/helpers/_device-pixels.scss +2 -3
  264. data/node_modules/govuk-frontend/dist/govuk/helpers/_focused.import.scss +2 -0
  265. data/node_modules/govuk-frontend/dist/govuk/helpers/_focused.scss +3 -1
  266. data/node_modules/govuk-frontend/dist/govuk/helpers/{_font-faces.scss → _font-faces--internal.scss} +5 -5
  267. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.import.scss +2 -0
  268. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +3 -1
  269. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.import.scss +2 -0
  270. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss +12 -13
  271. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.import.scss +2 -0
  272. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +7 -2
  273. data/node_modules/govuk-frontend/dist/govuk/helpers/_media-queries.import.scss +2 -0
  274. data/node_modules/govuk-frontend/dist/govuk/helpers/_media-queries.scss +2 -3
  275. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.import.scss +2 -0
  276. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +0 -1
  277. data/node_modules/govuk-frontend/dist/govuk/helpers/_spacing--internal.scss +80 -0
  278. data/node_modules/govuk-frontend/dist/govuk/helpers/_spacing.import.scss +2 -0
  279. data/node_modules/govuk-frontend/dist/govuk/helpers/_spacing.scss +18 -79
  280. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography--internal.scss +24 -0
  281. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.import.scss +2 -0
  282. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +20 -37
  283. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.import.scss +2 -0
  284. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +1 -2
  285. data/node_modules/govuk-frontend/dist/govuk/helpers/_width-container.import.scss +2 -0
  286. data/node_modules/govuk-frontend/dist/govuk/helpers/_width-container.scss +73 -0
  287. data/node_modules/govuk-frontend/dist/govuk/index.import.scss +10 -0
  288. data/node_modules/govuk-frontend/dist/govuk/index.scss +6 -7
  289. data/node_modules/govuk-frontend/dist/govuk/objects/_button-group.import.scss +8 -0
  290. data/node_modules/govuk-frontend/dist/govuk/objects/_button-group.mixin.scss +80 -0
  291. data/node_modules/govuk-frontend/dist/govuk/objects/_button-group.scss +3 -78
  292. data/node_modules/govuk-frontend/dist/govuk/objects/_form-group.import.scss +8 -0
  293. data/node_modules/govuk-frontend/dist/govuk/objects/_form-group.mixin.scss +26 -0
  294. data/node_modules/govuk-frontend/dist/govuk/objects/_form-group.scss +3 -24
  295. data/node_modules/govuk-frontend/dist/govuk/objects/_grid.import.scss +8 -0
  296. data/node_modules/govuk-frontend/dist/govuk/objects/_grid.mixin.scss +28 -0
  297. data/node_modules/govuk-frontend/dist/govuk/objects/_grid.scss +3 -26
  298. data/node_modules/govuk-frontend/dist/govuk/objects/_index.import.scss +7 -0
  299. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss +6 -7
  300. data/node_modules/govuk-frontend/dist/govuk/objects/_main-wrapper.import.scss +8 -0
  301. data/node_modules/govuk-frontend/dist/govuk/objects/_main-wrapper.mixin.scss +55 -0
  302. data/node_modules/govuk-frontend/dist/govuk/objects/_main-wrapper.scss +3 -53
  303. data/node_modules/govuk-frontend/dist/govuk/objects/_template.import.scss +8 -0
  304. data/node_modules/govuk-frontend/dist/govuk/objects/_template.mixin.scss +53 -0
  305. data/node_modules/govuk-frontend/dist/govuk/objects/_template.scss +3 -51
  306. data/node_modules/govuk-frontend/dist/govuk/objects/_width-container.import.scss +8 -0
  307. data/node_modules/govuk-frontend/dist/govuk/objects/_width-container.mixin.scss +9 -0
  308. data/node_modules/govuk-frontend/dist/govuk/objects/_width-container.scss +3 -76
  309. data/node_modules/govuk-frontend/dist/govuk/overrides/_display.import.scss +8 -0
  310. data/node_modules/govuk-frontend/dist/govuk/overrides/_display.mixin.scss +26 -0
  311. data/node_modules/govuk-frontend/dist/govuk/overrides/_display.scss +2 -26
  312. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.import.scss +6 -0
  313. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss +5 -9
  314. data/node_modules/govuk-frontend/dist/govuk/overrides/_spacing.import.scss +8 -0
  315. data/node_modules/govuk-frontend/dist/govuk/overrides/_spacing.mixin.scss +89 -0
  316. data/node_modules/govuk-frontend/dist/govuk/overrides/_spacing.scss +2 -88
  317. data/node_modules/govuk-frontend/dist/govuk/overrides/_text-align.import.scss +8 -0
  318. data/node_modules/govuk-frontend/dist/govuk/overrides/_text-align.mixin.scss +16 -0
  319. data/node_modules/govuk-frontend/dist/govuk/overrides/_text-align.scss +2 -16
  320. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.import.scss +8 -0
  321. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.mixin.scss +43 -0
  322. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +2 -43
  323. data/node_modules/govuk-frontend/dist/govuk/overrides/_width.import.scss +8 -0
  324. data/node_modules/govuk-frontend/dist/govuk/overrides/_width.mixin.scss +50 -0
  325. data/node_modules/govuk-frontend/dist/govuk/overrides/_width.scss +2 -49
  326. data/node_modules/govuk-frontend/dist/govuk/settings/_assets.import.scss +13 -0
  327. data/node_modules/govuk-frontend/dist/govuk/settings/_assets.scss +46 -35
  328. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.import.scss +13 -0
  329. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-functional.import.scss +2 -0
  330. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-functional.scss +13 -235
  331. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-legacy-functional.import.scss +2 -0
  332. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-legacy-functional.scss +188 -0
  333. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.import.scss +2 -0
  334. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +1 -20
  335. data/node_modules/govuk-frontend/dist/govuk/settings/{_colours-palette.scss → _colours-palette--internal.scss} +2 -3
  336. data/node_modules/govuk-frontend/dist/govuk/settings/_custom-properties.import.scss +2 -0
  337. data/node_modules/govuk-frontend/dist/govuk/settings/_custom-properties.scss +0 -1
  338. data/node_modules/govuk-frontend/dist/govuk/settings/_global-styles.import.scss +2 -0
  339. data/node_modules/govuk-frontend/dist/govuk/settings/_global-styles.scss +0 -1
  340. data/node_modules/govuk-frontend/dist/govuk/settings/_index.import.scss +24 -0
  341. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss +13 -14
  342. data/node_modules/govuk-frontend/dist/govuk/settings/_links.import.scss +2 -0
  343. data/node_modules/govuk-frontend/dist/govuk/settings/_links.scss +0 -1
  344. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.import.scss +2 -0
  345. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss +2 -3
  346. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.import.scss +2 -0
  347. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss +0 -1
  348. data/node_modules/govuk-frontend/dist/govuk/settings/_spacing.import.scss +2 -0
  349. data/node_modules/govuk-frontend/dist/govuk/settings/_spacing.scss +0 -1
  350. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.import.scss +2 -0
  351. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss +2 -4
  352. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.import.scss +2 -0
  353. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +0 -1
  354. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings--internal.scss +69 -0
  355. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.import.scss +2 -0
  356. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss +9 -69
  357. data/node_modules/govuk-frontend/dist/govuk/tools/_exports.import.scss +2 -0
  358. data/node_modules/govuk-frontend/dist/govuk/tools/_exports.scss +11 -6
  359. data/node_modules/govuk-frontend/dist/govuk/tools/_font-url.import.scss +31 -0
  360. data/node_modules/govuk-frontend/dist/govuk/tools/_font-url.scss +9 -1
  361. data/node_modules/govuk-frontend/dist/govuk/tools/_if.import.scss +2 -0
  362. data/node_modules/govuk-frontend/dist/govuk/tools/_if.scss +0 -1
  363. data/node_modules/govuk-frontend/dist/govuk/tools/_image-url.import.scss +31 -0
  364. data/node_modules/govuk-frontend/dist/govuk/tools/_image-url.scss +9 -1
  365. data/node_modules/govuk-frontend/dist/govuk/tools/_index.import.scss +2 -0
  366. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss +6 -7
  367. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-em.import.scss +2 -0
  368. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-em.scss +1 -2
  369. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-rem.import.scss +2 -0
  370. data/node_modules/govuk-frontend/dist/govuk/tools/_px-to-rem.scss +1 -2
  371. data/node_modules/govuk-frontend/dist/govuk/utilities/_clearfix.import.scss +8 -0
  372. data/node_modules/govuk-frontend/dist/govuk/utilities/_clearfix.mixin.scss +10 -0
  373. data/node_modules/govuk-frontend/dist/govuk/utilities/_clearfix.scss +2 -8
  374. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.import.scss +3 -0
  375. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss +2 -4
  376. data/node_modules/govuk-frontend/dist/govuk/utilities/_visually-hidden.import.scss +8 -0
  377. data/node_modules/govuk-frontend/dist/govuk/utilities/_visually-hidden.mixin.scss +14 -0
  378. data/node_modules/govuk-frontend/dist/govuk/utilities/_visually-hidden.scss +2 -12
  379. data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.scss +2 -3
  380. data/package-lock.json +229 -599
  381. data/package.json +3 -3
  382. metadata +263 -74
  383. data/.github/workflows/publish.yaml +0 -83
  384. data/docs/configuration.md +0 -3
  385. data/docs/frontmatter.md +0 -3
  386. data/docs/page-expiry.md +0 -3
  387. data/example/.ruby-version +0 -1
  388. data/example/Gemfile +0 -3
  389. data/example/config/tech-docs.yml +0 -67
  390. data/example/source/active-pages/index.html.md.erb +0 -7
  391. data/example/source/active-pages/sub-section/index.html.md.erb +0 -7
  392. data/example/source/api-path.html.md +0 -7
  393. data/example/source/api-reference.html.md +0 -5
  394. data/example/source/child-of-expired-page.html.md +0 -8
  395. data/example/source/code.html.md +0 -42
  396. data/example/source/core-layout-without-sidebar.html.md.erb +0 -7
  397. data/example/source/core-layout.html.md.erb +0 -12
  398. data/example/source/expired-page-with-owner.html.md +0 -10
  399. data/example/source/expired-page.html.md +0 -9
  400. data/example/source/headings.html.md +0 -11
  401. data/example/source/hidden-page.html.md +0 -10
  402. data/example/source/index.html.md.erb +0 -27
  403. data/example/source/javascripts/govuk_frontend.js +0 -1
  404. data/example/source/nested-page/another-nested-nested-page/index.html.md +0 -5
  405. data/example/source/nested-page/another-nested-page/index.html.md +0 -5
  406. data/example/source/nested-page/index.html.md +0 -5
  407. data/example/source/not-expired-page.html.md +0 -9
  408. data/example/source/pets.yml +0 -113
  409. data/example/source/prevent-index-page.html.md +0 -10
  410. data/example/source/single-page-nav.html.md +0 -13
  411. data/example/source/templates/proxy_template.html.md +0 -8
  412. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.scss +0 -7
  413. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.scss +0 -7
  414. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.scss +0 -7
  415. data/node_modules/govuk-frontend/dist/govuk/components/button/_button.scss +0 -7
  416. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.scss +0 -7
  417. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.scss +0 -7
  418. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.scss +0 -7
  419. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.scss +0 -7
  420. data/node_modules/govuk-frontend/dist/govuk/components/details/_details.scss +0 -7
  421. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.scss +0 -7
  422. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.scss +0 -7
  423. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.scss +0 -7
  424. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.scss +0 -7
  425. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.scss +0 -7
  426. data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.scss +0 -7
  427. data/node_modules/govuk-frontend/dist/govuk/components/header/_header.scss +0 -7
  428. data/node_modules/govuk-frontend/dist/govuk/components/hint/_hint.scss +0 -7
  429. data/node_modules/govuk-frontend/dist/govuk/components/input/_input.scss +0 -7
  430. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.scss +0 -7
  431. data/node_modules/govuk-frontend/dist/govuk/components/label/_label.scss +0 -7
  432. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.scss +0 -7
  433. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.scss +0 -7
  434. data/node_modules/govuk-frontend/dist/govuk/components/panel/_panel.scss +0 -7
  435. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +0 -7
  436. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.scss +0 -7
  437. data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.scss +0 -7
  438. data/node_modules/govuk-frontend/dist/govuk/components/select/_select.scss +0 -7
  439. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.scss +0 -7
  440. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.scss +0 -7
  441. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.scss +0 -7
  442. data/node_modules/govuk-frontend/dist/govuk/components/table/_table.scss +0 -7
  443. data/node_modules/govuk-frontend/dist/govuk/components/tabs/_tabs.scss +0 -7
  444. data/node_modules/govuk-frontend/dist/govuk/components/tag/_tag.scss +0 -7
  445. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.scss +0 -7
  446. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.scss +0 -7
  447. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.scss +0 -7
  448. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.scss +0 -10
  449. /data/{example → documentation}/source/javascripts/application.js +0 -0
  450. /data/{example → documentation}/source/stylesheets/print.css.scss +0 -0
  451. /data/{example → documentation}/source/stylesheets/screen-old-ie.css.scss +0 -0
  452. /data/{example → documentation}/source/stylesheets/screen.css.scss +0 -0
@@ -0,0 +1,13 @@
1
+ /// @access private
2
+ @mixin styles {
3
+ // This custom property is automatically overwritten during builds and
4
+ // releases. It doesn't need to be updated manually.
5
+ //
6
+ // This custom property is always output by base regardless of if
7
+ // `$govuk-output-custom-properties` is true or not to help with checking if
8
+ // multiple stylesheets are outputting the same version
9
+ :root {
10
+ --govuk-frontend-version: "6.4.0";
11
+ }
12
+ }
13
+
@@ -1,15 +1,4 @@
1
- @import "../tools/exports";
1
+ @use "frontend-version.mixin" as frontend-version;
2
2
 
3
- // This custom property is automatically overwritten during builds and
4
- // releases. It doesn't need to be updated manually.
5
- //
6
- // This custom property is always output by base regardless of if
7
- // `$govuk-output-custom-properties` is true or not to help with checking if
8
- // multiple stylesheets are outputting the same version
9
- @include govuk-exports("govuk/custom-properties/frontend-version") {
10
- :root {
11
- --govuk-frontend-version: "6.1.0";
12
- }
13
- }
3
+ @include frontend-version.styles;
14
4
 
15
- /*# sourceMappingURL=_frontend-version.scss.map */
@@ -0,0 +1,8 @@
1
+ @use "../tools/exports" as *;
2
+ @use "functional-colours.mixin" as functional-colours;
3
+
4
+ // CSS custom property for each breakpoint
5
+ @include govuk-exports("govuk/custom-properties/functional-colours") {
6
+ @include functional-colours.styles;
7
+ }
8
+
@@ -0,0 +1,21 @@
1
+ @use "../settings/custom-properties" as *;
2
+ @use "../settings/colours-functional" as *;
3
+ @use "../helpers/colour" as *;
4
+
5
+ /// @access private
6
+ @mixin styles {
7
+ // CSS custom properties for each functional colour
8
+ :root {
9
+ @if $govuk-output-custom-properties {
10
+ @each $name, $value in $govuk-functional-colours {
11
+ --govuk-#{$name}-colour: #{govuk-resolve-colour($value)};
12
+ }
13
+
14
+ @media print {
15
+ // Use 'true black' to avoid printers using colour ink to print body text
16
+ --govuk-text-colour: #{govuk-functional-colour("print-text")};
17
+ }
18
+ }
19
+ }
20
+ }
21
+
@@ -1,22 +1,4 @@
1
- @import "../settings/custom-properties";
2
- @import "../settings/colours-functional";
3
- @import "../tools/exports";
4
- @import "../helpers/colour";
1
+ @use "functional-colours.mixin" as functional-colours;
5
2
 
6
- // CSS custom properties for each functional colour
7
- @include govuk-exports("govuk/custom-properties/functional-colours") {
8
- :root {
9
- @if $govuk-output-custom-properties {
10
- @each $name, $value in $govuk-functional-colours {
11
- --govuk-#{$name}-colour: #{_govuk-resolve-colour($value)};
12
- }
3
+ @include functional-colours.styles;
13
4
 
14
- @media print {
15
- // Use 'true black' to avoid printers using colour ink to print body text
16
- --govuk-text-colour: #{govuk-functional-colour("print-text")};
17
- }
18
- }
19
- }
20
- }
21
-
22
- /*# sourceMappingURL=_functional-colours.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "breakpoints";
2
+ @import "frontend-version";
3
+ @import "functional-colours";
4
+
@@ -1,5 +1,4 @@
1
- @import "breakpoints";
2
- @import "frontend-version";
3
- @import "functional-colours";
1
+ @use "breakpoints";
2
+ @use "frontend-version";
3
+ @use "functional-colours";
4
4
 
5
- /*# sourceMappingURL=_index.scss.map */
@@ -1 +1 @@
1
- const version="6.1.0";function getBreakpoint(t){const e=`--govuk-breakpoint-${t}`;return{property:e,value:window.getComputedStyle(document.documentElement).getPropertyValue(e)||void 0}}function setFocus(t,e={}){var i;const n=t.getAttribute("tabindex");function onBlur(){var i;null==(i=e.onBlur)||i.call(t),n||t.removeAttribute("tabindex")}n||t.setAttribute("tabindex","-1"),t.addEventListener("focus",(function(){t.addEventListener("blur",onBlur,{once:!0})}),{once:!0}),null==(i=e.onBeforeFocus)||i.call(t),t.focus()}function isSupported(t=document.body){return!!t&&t.classList.contains("govuk-frontend-supported")}function isObject(t){return!!t&&"object"==typeof t&&!function(t){return Array.isArray(t)}(t)}function isScope(t){return!!t&&(t instanceof Element||t instanceof Document)}function formatErrorMessage(Component,t){return`${Component.moduleName}: ${t}`}class GOVUKFrontendError extends Error{constructor(...t){super(...t),this.name="GOVUKFrontendError"}}class SupportError extends GOVUKFrontendError{constructor(t=document.body){const e="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";super(t?e:'GOV.UK Frontend initialised without `<script type="module">`'),this.name="SupportError"}}class ConfigError extends GOVUKFrontendError{constructor(...t){super(...t),this.name="ConfigError"}}class ElementError extends GOVUKFrontendError{constructor(t){let e="string"==typeof t?t:"";if(isObject(t)){const{component:i,identifier:n,element:s,expectedType:o}=t;e=n,e+=s?` is not of type ${null!=o?o:"HTMLElement"}`:" not found",i&&(e=formatErrorMessage(i,e))}super(e),this.name="ElementError"}}class InitError extends GOVUKFrontendError{constructor(t){super("string"==typeof t?t:formatErrorMessage(t,"Root element (`$root`) already initialised")),this.name="InitError"}}class Component{get $root(){return this._$root}constructor(t){this._$root=void 0;const e=this.constructor;if("string"!=typeof e.moduleName)throw new InitError("`moduleName` not defined in component");if(!(t instanceof e.elementType))throw new ElementError({element:t,component:e,identifier:"Root element (`$root`)",expectedType:e.elementType.name});this._$root=t,e.checkSupport(),this.checkInitialised();const i=e.moduleName;this.$root.setAttribute(`data-${i}-init`,"")}checkInitialised(){const t=this.constructor,e=t.moduleName;if(e&&function(t,e){return t instanceof HTMLElement&&t.hasAttribute(`data-${e}-init`)}(this.$root,e))throw new InitError(t)}static checkSupport(){if(!isSupported())throw new SupportError}}Component.elementType=HTMLElement;const t=Symbol.for("configOverride");class ConfigurableComponent extends Component{[t](t){return{}}get config(){return this._config}constructor(e,i){super(e),this._config=void 0;const n=this.constructor;if(!isObject(n.defaults))throw new ConfigError(formatErrorMessage(n,"Config passed as parameter into constructor but no defaults defined"));const s=function(Component,t){if(!isObject(Component.schema))throw new ConfigError(formatErrorMessage(Component,"Config passed as parameter into constructor but no schema defined"));const e={},i=Object.entries(Component.schema.properties);for(const n of i){const[i,s]=n,o=i.toString();o in t&&(e[o]=normaliseString(t[o],s)),"object"===(null==s?void 0:s.type)&&(e[o]=extractConfigByNamespace(Component.schema,t,i))}return e}(n,this._$root.dataset);this._config=mergeConfigs(n.defaults,null!=i?i:{},this[t](s),s)}}function normaliseString(t,e){const i=t?t.trim():"";let n,s=null==e?void 0:e.type;switch(s||(["true","false"].includes(i)&&(s="boolean"),i.length>0&&isFinite(Number(i))&&(s="number")),s){case"boolean":n="true"===i;break;case"number":n=Number(i);break;default:n=t}return n}function normaliseOptions(t){let e,i=document;if(isObject(t)){const n=t;(isScope(n.scope)||null===n.scope)&&(i=n.scope),"function"==typeof n.onError&&(e=n.onError)}return isScope(t)?i=t:null===t?i=null:"function"==typeof t&&(e=t),{scope:i,onError:e}}function mergeConfigs(...t){const e={};for(const i of t)for(const t of Object.keys(i)){const n=e[t],s=i[t];isObject(n)&&isObject(s)?e[t]=mergeConfigs(n,s):e[t]=s}return e}function extractConfigByNamespace(t,e,i){const n=t.properties[i];if("object"!==(null==n?void 0:n.type))return;const s={[i]:{}};for(const[o,r]of Object.entries(e)){let t=s;const e=o.split(".");for(const[n,s]of e.entries())isObject(t)&&(n<e.length-1?(isObject(t[s])||(t[s]={}),t=t[s]):o!==i&&(t[s]=normaliseString(r)))}return s[i]}class I18n{constructor(t={},e={}){var i;this.translations=void 0,this.locale=void 0,this.translations=t,this.locale=null!=(i=e.locale)?i:document.documentElement.lang||"en"}t(t,e){if(!t)throw new Error("i18n: lookup key missing");let i=this.translations[t];if("number"==typeof(null==e?void 0:e.count)&&isObject(i)){const n=i[this.getPluralSuffix(t,e.count)];n&&(i=n)}if("string"==typeof i){if(i.match(/%{(.\S+)}/)){if(!e)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(i,e)}return i}return t}replacePlaceholders(t,e){const i=Intl.NumberFormat.supportedLocalesOf(this.locale).length?new Intl.NumberFormat(this.locale):void 0;return t.replace(/%{(.\S+)}/g,(function(t,n){if(Object.prototype.hasOwnProperty.call(e,n)){const t=e[n];return!1===t||"number"!=typeof t&&"string"!=typeof t?"":"number"==typeof t?i?i.format(t):`${t}`:t}throw new Error(`i18n: no data found to replace ${t} placeholder in string`)}))}hasIntlPluralRulesSupport(){return Boolean("PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)}getPluralSuffix(t,e){if(e=Number(e),!isFinite(e))return"other";const i=this.translations[t],n=this.hasIntlPluralRulesSupport()?new Intl.PluralRules(this.locale).select(e):"other";if(isObject(i)){if(n in i)return n;if("other"in i)return console.warn(`i18n: Missing plural form ".${n}" for "${this.locale}" locale. Falling back to ".other".`),"other"}throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)}}class Accordion extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.controlsClass="govuk-accordion__controls",this.showAllClass="govuk-accordion__show-all",this.showAllTextClass="govuk-accordion__show-all-text",this.sectionClass="govuk-accordion__section",this.sectionExpandedClass="govuk-accordion__section--expanded",this.sectionButtonClass="govuk-accordion__section-button",this.sectionHeaderClass="govuk-accordion__section-header",this.sectionHeadingClass="govuk-accordion__section-heading",this.sectionHeadingDividerClass="govuk-accordion__section-heading-divider",this.sectionHeadingTextClass="govuk-accordion__section-heading-text",this.sectionHeadingTextFocusClass="govuk-accordion__section-heading-text-focus",this.sectionShowHideToggleClass="govuk-accordion__section-toggle",this.sectionShowHideToggleFocusClass="govuk-accordion__section-toggle-focus",this.sectionShowHideTextClass="govuk-accordion__section-toggle-text",this.upChevronIconClass="govuk-accordion-nav__chevron",this.downChevronIconClass="govuk-accordion-nav__chevron--down",this.sectionSummaryClass="govuk-accordion__section-summary",this.sectionSummaryFocusClass="govuk-accordion__section-summary-focus",this.sectionContentClass="govuk-accordion__section-content",this.$sections=void 0,this.$showAllButton=null,this.$showAllIcon=null,this.$showAllText=null,this.i18n=new I18n(this.config.i18n);const i=this.$root.querySelectorAll(`.${this.sectionClass}`);if(!i.length)throw new ElementError({component:Accordion,identifier:`Sections (\`<div class="${this.sectionClass}">\`)`});this.$sections=i,this.initControls(),this.initSectionHeaders(),this.updateShowAllButton(this.areAllSectionsOpen())}initControls(){this.$showAllButton=document.createElement("button"),this.$showAllButton.setAttribute("type","button"),this.$showAllButton.setAttribute("class",this.showAllClass),this.$showAllButton.setAttribute("aria-expanded","false"),this.$showAllIcon=document.createElement("span"),this.$showAllIcon.classList.add(this.upChevronIconClass),this.$showAllButton.appendChild(this.$showAllIcon);const t=document.createElement("div");t.setAttribute("class",this.controlsClass),t.appendChild(this.$showAllButton),this.$root.insertBefore(t,this.$root.firstChild),this.$showAllText=document.createElement("span"),this.$showAllText.classList.add(this.showAllTextClass),this.$showAllButton.appendChild(this.$showAllText),this.$showAllButton.addEventListener("click",(()=>this.onShowOrHideAllToggle())),"onbeforematch"in document&&document.addEventListener("beforematch",(t=>this.onBeforeMatch(t)))}initSectionHeaders(){this.$sections.forEach(((t,e)=>{const i=t.querySelector(`.${this.sectionHeaderClass}`);if(!i)throw new ElementError({component:Accordion,identifier:`Section headers (\`<div class="${this.sectionHeaderClass}">\`)`});this.constructHeaderMarkup(i,e),this.setExpanded(this.isExpanded(t),t),i.addEventListener("click",(()=>this.onSectionToggle(t))),this.setInitialState(t)}))}constructHeaderMarkup(t,e){const i=t.querySelector(`.${this.sectionButtonClass}`),n=t.querySelector(`.${this.sectionHeadingClass}`),s=t.querySelector(`.${this.sectionSummaryClass}`);if(!n)throw new ElementError({component:Accordion,identifier:`Section heading (\`.${this.sectionHeadingClass}\`)`});if(!i)throw new ElementError({component:Accordion,identifier:`Section button placeholder (\`<span class="${this.sectionButtonClass}">\`)`});const o=document.createElement("button");o.setAttribute("type","button"),o.setAttribute("aria-controls",`${this.$root.id}-content-${e+1}`);for(const d of Array.from(i.attributes))"id"!==d.name&&o.setAttribute(d.name,d.value);const r=document.createElement("span");r.classList.add(this.sectionHeadingTextClass),r.id=i.id;const a=document.createElement("span");a.classList.add(this.sectionHeadingTextFocusClass),r.appendChild(a),Array.from(i.childNodes).forEach((t=>a.appendChild(t)));const l=document.createElement("span");l.classList.add(this.sectionShowHideToggleClass),l.setAttribute("data-nosnippet","");const c=document.createElement("span");c.classList.add(this.sectionShowHideToggleFocusClass),l.appendChild(c);const u=document.createElement("span"),h=document.createElement("span");if(h.classList.add(this.upChevronIconClass),c.appendChild(h),u.classList.add(this.sectionShowHideTextClass),c.appendChild(u),o.appendChild(r),o.appendChild(this.getButtonPunctuationEl()),s){const t=document.createElement("span"),e=document.createElement("span");e.classList.add(this.sectionSummaryFocusClass),t.appendChild(e);for(const i of Array.from(s.attributes))t.setAttribute(i.name,i.value);Array.from(s.childNodes).forEach((t=>e.appendChild(t))),s.remove(),o.appendChild(t),o.appendChild(this.getButtonPunctuationEl())}o.appendChild(l),n.removeChild(i),n.appendChild(o)}onBeforeMatch(t){const e=t.target;if(!(e instanceof Element))return;const i=e.closest(`.${this.sectionClass}`);i&&this.setExpanded(!0,i)}onSectionToggle(t){const e=!this.isExpanded(t);this.setExpanded(e,t),this.storeState(t,e)}onShowOrHideAllToggle(){const t=!this.areAllSectionsOpen();this.$sections.forEach((e=>{this.setExpanded(t,e),this.storeState(e,t)})),this.updateShowAllButton(t)}setExpanded(t,e){const i=e.querySelector(`.${this.upChevronIconClass}`),n=e.querySelector(`.${this.sectionShowHideTextClass}`),s=e.querySelector(`.${this.sectionButtonClass}`),o=e.querySelector(`.${this.sectionContentClass}`);if(!o)throw new ElementError({component:Accordion,identifier:`Section content (\`<div class="${this.sectionContentClass}">\`)`});if(!i||!n||!s)return;const r=t?this.i18n.t("hideSection"):this.i18n.t("showSection");n.textContent=r,s.setAttribute("aria-expanded",`${t}`);const a=[],l=e.querySelector(`.${this.sectionHeadingTextClass}`);l&&a.push(l.textContent.trim());const c=e.querySelector(`.${this.sectionSummaryClass}`);c&&a.push(c.textContent.trim());const u=t?this.i18n.t("hideSectionAriaLabel"):this.i18n.t("showSectionAriaLabel");a.push(u),s.setAttribute("aria-label",a.join(" , ")),t?(o.removeAttribute("hidden"),e.classList.add(this.sectionExpandedClass),i.classList.remove(this.downChevronIconClass)):(o.setAttribute("hidden","until-found"),e.classList.remove(this.sectionExpandedClass),i.classList.add(this.downChevronIconClass)),this.updateShowAllButton(this.areAllSectionsOpen())}isExpanded(t){return t.classList.contains(this.sectionExpandedClass)}areAllSectionsOpen(){return Array.from(this.$sections).every((t=>this.isExpanded(t)))}updateShowAllButton(t){this.$showAllButton&&this.$showAllText&&this.$showAllIcon&&(this.$showAllButton.setAttribute("aria-expanded",t.toString()),this.$showAllText.textContent=t?this.i18n.t("hideAllSections"):this.i18n.t("showAllSections"),this.$showAllIcon.classList.toggle(this.downChevronIconClass,!t))}getIdentifier(t){const e=t.querySelector(`.${this.sectionButtonClass}`);return null==e?void 0:e.getAttribute("aria-controls")}storeState(t,e){if(!this.config.rememberExpanded)return;const i=this.getIdentifier(t);if(i)try{window.sessionStorage.setItem(i,e.toString())}catch(n){}}setInitialState(t){if(!this.config.rememberExpanded)return;const e=this.getIdentifier(t);if(e)try{const i=window.sessionStorage.getItem(e);null!==i&&this.setExpanded("true"===i,t)}catch(i){}}getButtonPunctuationEl(){const t=document.createElement("span");return t.classList.add("govuk-visually-hidden",this.sectionHeadingDividerClass),t.textContent=", ",t}}Accordion.moduleName="govuk-accordion",Accordion.defaults=Object.freeze({i18n:{hideAllSections:"Hide all sections",hideSection:"Hide",hideSectionAriaLabel:"Hide this section",showAllSections:"Show all sections",showSection:"Show",showSectionAriaLabel:"Show this section"},rememberExpanded:!0}),Accordion.schema=Object.freeze({properties:{i18n:{type:"object"},rememberExpanded:{type:"boolean"}}});class Button extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.debounceFormSubmitTimer=null,this.$root.addEventListener("keydown",(t=>this.handleKeyDown(t))),this.$root.addEventListener("click",(t=>this.debounce(t)))}handleKeyDown(t){const e=t.target;" "===t.key&&e instanceof HTMLElement&&"button"===e.getAttribute("role")&&(t.preventDefault(),e.click())}debounce(t){if(this.config.preventDoubleClick)return this.debounceFormSubmitTimer?(t.preventDefault(),!1):void(this.debounceFormSubmitTimer=window.setTimeout((()=>{this.debounceFormSubmitTimer=null}),1e3))}}function closestAttributeValue(t,e){const i=t.closest(`[${e}]`);return i?i.getAttribute(e):null}Button.moduleName="govuk-button",Button.defaults=Object.freeze({preventDoubleClick:!1}),Button.schema=Object.freeze({properties:{preventDoubleClick:{type:"boolean"}}});class CharacterCount extends ConfigurableComponent{[t](t){let e={};return("maxwords"in t||"maxlength"in t)&&(e={maxlength:void 0,maxwords:void 0}),e}constructor(t,e={}){var i,n;super(t,e),this.$textarea=void 0,this.count=0,this.$visibleCountMessage=void 0,this.$screenReaderCountMessage=void 0,this.lastInputTimestamp=null,this.lastInputValue="",this.valueChecker=null,this.i18n=void 0,this.maxLength=void 0;const s=this.$root.querySelector(".govuk-js-character-count");if(!(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement))throw new ElementError({component:CharacterCount,element:s,expectedType:"HTMLTextareaElement or HTMLInputElement",identifier:"Form field (`.govuk-js-character-count`)"});const o=function(t,e){const i=[];for(const[n,s]of Object.entries(t)){const t=[];if(Array.isArray(s)){for(const{required:i,errorMessage:n}of s)i.every((t=>!!e[t]))||t.push(n);"anyOf"!==n||s.length-t.length>=1||i.push(...t)}}return i}(CharacterCount.schema,this.config);if(o[0])throw new ConfigError(formatErrorMessage(CharacterCount,o[0]));this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")}),this.maxLength=null!=(i=null!=(n=this.config.maxwords)?n:this.config.maxlength)?i:1/0,this.$textarea=s;const r=`${this.$textarea.id}-info`,a=document.getElementById(r);if(!a)throw new ElementError({component:CharacterCount,element:a,identifier:`Count message (\`id="${r}"\`)`});this.$errorMessage=this.$root.querySelector(".govuk-error-message"),a.textContent.match(/^\s*$/)&&(a.textContent=this.i18n.t("textareaDescription",{count:this.maxLength})),this.$textarea.insertAdjacentElement("afterend",a);const l=document.createElement("div");l.className="govuk-character-count__sr-status govuk-visually-hidden",l.setAttribute("aria-live","polite"),this.$screenReaderCountMessage=l,a.insertAdjacentElement("afterend",l);const c=document.createElement("div");c.className=a.className,c.classList.add("govuk-character-count__status"),c.setAttribute("aria-hidden","true"),this.$visibleCountMessage=c,a.insertAdjacentElement("afterend",c),a.classList.add("govuk-visually-hidden"),this.$textarea.removeAttribute("maxlength"),this.bindChangeEvents(),window.addEventListener("pageshow",(()=>{this.$textarea.value!==this.$textarea.textContent&&(this.updateCount(),this.updateCountMessage())})),this.updateCount(),this.updateCountMessage()}bindChangeEvents(){this.$textarea.addEventListener("input",(()=>this.handleInput())),this.$textarea.addEventListener("focus",(()=>this.handleFocus())),this.$textarea.addEventListener("blur",(()=>this.handleBlur()))}handleInput(){this.updateCount(),this.updateVisibleCountMessage(),this.lastInputTimestamp=Date.now()}handleFocus(){this.valueChecker=window.setInterval((()=>{(!this.lastInputTimestamp||Date.now()-500>=this.lastInputTimestamp)&&this.updateIfValueChanged()}),1e3)}handleBlur(){this.valueChecker&&window.clearInterval(this.valueChecker)}updateIfValueChanged(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())}updateCountMessage(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()}updateVisibleCountMessage(){const t=this.maxLength-this.count<0;this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled",!this.isOverThreshold()),this.$errorMessage||this.$textarea.classList.toggle("govuk-textarea--error",t),this.$visibleCountMessage.classList.toggle("govuk-error-message",t),this.$visibleCountMessage.classList.toggle("govuk-hint",!t),this.$visibleCountMessage.textContent=this.getCountMessage()}updateScreenReaderCountMessage(){this.isOverThreshold()?this.$screenReaderCountMessage.removeAttribute("aria-hidden"):this.$screenReaderCountMessage.setAttribute("aria-hidden","true"),this.$screenReaderCountMessage.textContent=this.getCountMessage()}updateCount(){const t=this.$textarea.value;if(this.config.maxwords){var e;const i=null!=(e=t.match(/\S+/g))?e:[];this.count=i.length}else this.count=t.length}getCountMessage(){const t=this.maxLength-this.count,e=this.config.maxwords?"words":"characters";return this.formatCountMessage(t,e)}formatCountMessage(t,e){if(0===t)return this.i18n.t(`${e}AtLimit`);const i=t<0?"OverLimit":"UnderLimit";return this.i18n.t(`${e}${i}`,{count:Math.abs(t)})}isOverThreshold(){if(!this.config.threshold)return!0;const t=this.count;return this.maxLength*this.config.threshold/100<=t}}CharacterCount.moduleName="govuk-character-count",CharacterCount.defaults=Object.freeze({threshold:0,i18n:{charactersUnderLimit:{one:"You have %{count} character remaining",other:"You have %{count} characters remaining"},charactersAtLimit:"You have 0 characters remaining",charactersOverLimit:{one:"You have %{count} character too many",other:"You have %{count} characters too many"},wordsUnderLimit:{one:"You have %{count} word remaining",other:"You have %{count} words remaining"},wordsAtLimit:"You have 0 words remaining",wordsOverLimit:{one:"You have %{count} word too many",other:"You have %{count} words too many"},textareaDescription:{other:""}}}),CharacterCount.schema=Object.freeze({properties:{i18n:{type:"object"},maxwords:{type:"number"},maxlength:{type:"number"},threshold:{type:"number"}},anyOf:[{required:["maxwords"],errorMessage:'Either "maxlength" or "maxwords" must be provided'},{required:["maxlength"],errorMessage:'Either "maxlength" or "maxwords" must be provided'}]});class Checkboxes extends Component{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="checkbox"]');if(!e.length)throw new ElementError({component:Checkboxes,identifier:'Form inputs (`<input type="checkbox">`)'});this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new ElementError({component:Checkboxes,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$root.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(null!=i&&i.classList.contains("govuk-checkboxes__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-checkboxes__conditional--hidden",!e)}}unCheckAllInputsExcept(t){document.querySelectorAll(`input[type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&e!==t&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}unCheckExclusiveInputs(t){document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"checkbox"!==e.type)return;if(e.getAttribute("aria-controls")&&this.syncConditionalRevealWithInputState(e),!e.checked)return;"exclusive"===e.getAttribute("data-behaviour")?this.unCheckAllInputsExcept(e):this.unCheckExclusiveInputs(e)}}Checkboxes.moduleName="govuk-checkboxes";class ErrorSummary extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.config.disableAutoFocus||setFocus(this.$root),this.$root.addEventListener("click",(t=>this.handleClick(t)))}handleClick(t){const e=t.target;e&&this.focusTarget(e)&&t.preventDefault()}focusTarget(t){if(!(t instanceof HTMLAnchorElement))return!1;const e=t.hash.replace("#","");if(!e)return!1;const i=document.getElementById(e);if(!i)return!1;const n=this.getAssociatedLegendOrLabel(i);return!!n&&(n.scrollIntoView(),i.focus({preventScroll:!0}),!0)}getAssociatedLegendOrLabel(t){var e;const i=t.closest("fieldset");if(i){const e=i.getElementsByTagName("legend");if(e.length){const i=e[0];if(t instanceof HTMLInputElement&&("checkbox"===t.type||"radio"===t.type))return i;const n=i.getBoundingClientRect().top,s=t.getBoundingClientRect();if(s.height&&window.innerHeight){if(s.top+s.height-n<window.innerHeight/2)return i}}}return null!=(e=document.querySelector(`label[for='${t.getAttribute("id")}']`))?e:t.closest("label")}}ErrorSummary.moduleName="govuk-error-summary",ErrorSummary.defaults=Object.freeze({disableAutoFocus:!1}),ErrorSummary.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class ExitThisPage extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.$button=void 0,this.$skiplinkButton=null,this.$updateSpan=null,this.$indicatorContainer=null,this.$overlay=null,this.keypressCounter=0,this.lastKeyWasModified=!1,this.timeoutTime=5e3,this.keypressTimeoutId=null,this.timeoutMessageId=null;const i=this.$root.querySelector(".govuk-exit-this-page__button");if(!(i instanceof HTMLAnchorElement))throw new ElementError({component:ExitThisPage,element:i,expectedType:"HTMLAnchorElement",identifier:"Button (`.govuk-exit-this-page__button`)"});this.i18n=new I18n(this.config.i18n),this.$button=i;const n=document.querySelector(".govuk-js-exit-this-page-skiplink");n instanceof HTMLAnchorElement&&(this.$skiplinkButton=n),this.buildIndicator(),this.initUpdateSpan(),this.initButtonClickHandler(),"govukFrontendExitThisPageKeypress"in document.body.dataset||(document.addEventListener("keyup",this.handleKeypress.bind(this),!0),document.body.dataset.govukFrontendExitThisPageKeypress="true"),window.addEventListener("pageshow",this.resetPage.bind(this))}initUpdateSpan(){this.$updateSpan=document.createElement("span"),this.$updateSpan.setAttribute("role","status"),this.$updateSpan.className="govuk-visually-hidden",this.$root.appendChild(this.$updateSpan)}initButtonClickHandler(){this.$button.addEventListener("click",this.handleClick.bind(this)),this.$skiplinkButton&&this.$skiplinkButton.addEventListener("click",this.handleClick.bind(this))}buildIndicator(){this.$indicatorContainer=document.createElement("div"),this.$indicatorContainer.className="govuk-exit-this-page__indicator",this.$indicatorContainer.setAttribute("aria-hidden","true");for(let t=0;t<3;t++){const t=document.createElement("div");t.className="govuk-exit-this-page__indicator-light",this.$indicatorContainer.appendChild(t)}this.$button.appendChild(this.$indicatorContainer)}updateIndicator(){if(!this.$indicatorContainer)return;this.$indicatorContainer.classList.toggle("govuk-exit-this-page__indicator--visible",this.keypressCounter>0);this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light").forEach(((t,e)=>{t.classList.toggle("govuk-exit-this-page__indicator-light--on",e<this.keypressCounter)}))}exitPage(){this.$updateSpan&&(this.$updateSpan.textContent="",document.body.classList.add("govuk-exit-this-page-hide-content"),this.$overlay=document.createElement("div"),this.$overlay.className="govuk-exit-this-page-overlay",this.$overlay.setAttribute("role","alert"),document.body.appendChild(this.$overlay),this.$overlay.textContent=this.i18n.t("activated"),window.location.href=this.$button.href)}handleClick(t){t.preventDefault(),this.exitPage()}handleKeypress(t){this.$updateSpan&&("Shift"!==t.key||this.lastKeyWasModified?this.keypressTimeoutId&&this.resetKeypressTimer():(this.keypressCounter+=1,this.updateIndicator(),this.timeoutMessageId&&(window.clearTimeout(this.timeoutMessageId),this.timeoutMessageId=null),this.keypressCounter>=3?(this.keypressCounter=0,this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null),this.exitPage()):1===this.keypressCounter?this.$updateSpan.textContent=this.i18n.t("pressTwoMoreTimes"):this.$updateSpan.textContent=this.i18n.t("pressOneMoreTime"),this.setKeypressTimer()),this.lastKeyWasModified=t.shiftKey)}setKeypressTimer(){this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=window.setTimeout(this.resetKeypressTimer.bind(this),this.timeoutTime)}resetKeypressTimer(){if(!this.$updateSpan)return;this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null);const t=this.$updateSpan;this.keypressCounter=0,t.textContent=this.i18n.t("timedOut"),this.timeoutMessageId=window.setTimeout((()=>{t.textContent=""}),this.timeoutTime),this.updateIndicator()}resetPage(){document.body.classList.remove("govuk-exit-this-page-hide-content"),this.$overlay&&(this.$overlay.remove(),this.$overlay=null),this.$updateSpan&&(this.$updateSpan.setAttribute("role","status"),this.$updateSpan.textContent=""),this.updateIndicator(),this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.timeoutMessageId&&window.clearTimeout(this.timeoutMessageId)}}ExitThisPage.moduleName="govuk-exit-this-page",ExitThisPage.defaults=Object.freeze({i18n:{activated:"Loading.",timedOut:"Exit this page expired.",pressTwoMoreTimes:"Shift, press 2 more times to exit.",pressOneMoreTime:"Shift, press 1 more time to exit."}}),ExitThisPage.schema=Object.freeze({properties:{i18n:{type:"object"}}});class FileUpload extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.$input=void 0,this.$button=void 0,this.$status=void 0,this.i18n=void 0,this.id=void 0,this.$announcements=void 0,this.enteredAnotherElement=void 0;const i=this.$root.querySelector("input");if(null===i)throw new ElementError({component:FileUpload,identifier:'File inputs (`<input type="file">`)'});if("file"!==i.type)throw new ElementError(formatErrorMessage(FileUpload,'File input (`<input type="file">`) attribute (`type`) is not `file`'));if(this.$input=i,!this.$input.id)throw new ElementError({component:FileUpload,identifier:'File input (`<input type="file">`) attribute (`id`)'});this.id=this.$input.id,this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")});const n=this.findLabel();n.id||(n.id=`${this.id}-label`),this.$input.id=`${this.id}-input`,this.$input.setAttribute("hidden","true");const s=document.createElement("button");s.classList.add("govuk-file-upload-button"),s.type="button",s.id=this.id,s.classList.add("govuk-file-upload-button--empty");const o=this.$input.getAttribute("aria-describedby");o&&s.setAttribute("aria-describedby",o);const r=document.createElement("span");r.className="govuk-body govuk-file-upload-button__status",r.setAttribute("aria-live","polite"),r.innerText=this.i18n.t("noFileChosen"),s.appendChild(r);const a=document.createElement("span");a.className="govuk-visually-hidden",a.innerText=", ",a.id=`${this.id}-comma`,s.appendChild(a);const l=document.createElement("span");l.className="govuk-file-upload-button__pseudo-button-container";const c=document.createElement("span");c.className="govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button",c.innerText=this.i18n.t("chooseFilesButton"),l.appendChild(c),l.insertAdjacentText("beforeend"," ");const u=document.createElement("span");u.className="govuk-body govuk-file-upload-button__instruction",u.innerText=this.i18n.t("dropInstruction"),l.appendChild(u),s.appendChild(l),s.setAttribute("aria-labelledby",`${n.id} ${a.id} ${s.id}`),s.addEventListener("click",this.onClick.bind(this)),s.addEventListener("dragover",(t=>{t.preventDefault()})),this.$root.insertAdjacentElement("afterbegin",s),this.$input.setAttribute("tabindex","-1"),this.$input.setAttribute("aria-hidden","true"),this.$button=s,this.$status=r,this.$input.addEventListener("change",this.onChange.bind(this)),this.updateDisabledState(),this.observeDisabledState(),this.$announcements=document.createElement("span"),this.$announcements.classList.add("govuk-file-upload-announcements"),this.$announcements.classList.add("govuk-visually-hidden"),this.$announcements.setAttribute("aria-live","assertive"),this.$root.insertAdjacentElement("afterend",this.$announcements),this.$button.addEventListener("drop",this.onDrop.bind(this)),document.addEventListener("dragenter",this.updateDropzoneVisibility.bind(this)),document.addEventListener("dragenter",(()=>{this.enteredAnotherElement=!0})),document.addEventListener("dragleave",(()=>{this.enteredAnotherElement||this.$button.disabled||(this.hideDraggingState(),this.$announcements.innerText=this.i18n.t("leftDropZone")),this.enteredAnotherElement=!1}))}updateDropzoneVisibility(t){this.$button.disabled||t.target instanceof Node&&(this.$root.contains(t.target)?t.dataTransfer&&this.canDrop(t.dataTransfer)&&(this.$button.classList.contains("govuk-file-upload-button--dragging")||(this.showDraggingState(),this.$announcements.innerText=this.i18n.t("enteredDropZone"))):this.$button.classList.contains("govuk-file-upload-button--dragging")&&(this.hideDraggingState(),this.$announcements.innerText=this.i18n.t("leftDropZone")))}showDraggingState(){this.$button.classList.add("govuk-file-upload-button--dragging")}hideDraggingState(){this.$button.classList.remove("govuk-file-upload-button--dragging")}onDrop(t){t.preventDefault(),t.dataTransfer&&this.canFillInput(t.dataTransfer)&&(this.$input.files=t.dataTransfer.files,this.$input.dispatchEvent(new CustomEvent("change")),this.hideDraggingState())}canFillInput(t){return this.matchesInputCapacity(t.files.length)}canDrop(t){return t.items.length?this.matchesInputCapacity(function(t){let e=0;for(let i=0;i<t.length;i++)"file"===t[i].kind&&e++;return e}(t.items)):!t.types.length||t.types.includes("Files")}matchesInputCapacity(t){return this.$input.multiple?t>0:1===t}onChange(){const t=this.$input.files.length;0===t?(this.$status.innerText=this.i18n.t("noFileChosen"),this.$button.classList.add("govuk-file-upload-button--empty")):(this.$status.innerText=1===t?this.$input.files[0].name:this.i18n.t("multipleFilesChosen",{count:t}),this.$button.classList.remove("govuk-file-upload-button--empty"))}findLabel(){const t=document.querySelector(`label[for="${this.$input.id}"]`);if(!t)throw new ElementError({component:FileUpload,identifier:`Field label (\`<label for=${this.$input.id}>\`)`});return t}onClick(){this.$input.click()}observeDisabledState(){new MutationObserver((t=>{for(const e of t)"attributes"===e.type&&"disabled"===e.attributeName&&this.updateDisabledState()})).observe(this.$input,{attributes:!0})}updateDisabledState(){this.$button.disabled=this.$input.disabled,this.$root.classList.toggle("govuk-drop-zone--disabled",this.$button.disabled)}}FileUpload.moduleName="govuk-file-upload",FileUpload.defaults=Object.freeze({i18n:{chooseFilesButton:"Choose file",dropInstruction:"or drop file",noFileChosen:"No file chosen",multipleFilesChosen:{one:"%{count} file chosen",other:"%{count} files chosen"},enteredDropZone:"Entered drop zone",leftDropZone:"Left drop zone"}}),FileUpload.schema=Object.freeze({properties:{i18n:{type:"object"}}});class NotificationBanner extends ConfigurableComponent{constructor(t,e={}){super(t,e),"alert"!==this.$root.getAttribute("role")||this.config.disableAutoFocus||setFocus(this.$root)}}NotificationBanner.moduleName="govuk-notification-banner",NotificationBanner.defaults=Object.freeze({disableAutoFocus:!1}),NotificationBanner.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class PasswordInput extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.$input=void 0,this.$showHideButton=void 0,this.$screenReaderStatusMessage=void 0;const i=this.$root.querySelector(".govuk-js-password-input-input");if(!(i instanceof HTMLInputElement))throw new ElementError({component:PasswordInput,element:i,expectedType:"HTMLInputElement",identifier:"Form field (`.govuk-js-password-input-input`)"});if("password"!==i.type)throw new ElementError("Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.");const n=this.$root.querySelector(".govuk-js-password-input-toggle");if(!(n instanceof HTMLButtonElement))throw new ElementError({component:PasswordInput,element:n,expectedType:"HTMLButtonElement",identifier:"Button (`.govuk-js-password-input-toggle`)"});if("button"!==n.type)throw new ElementError("Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.");this.$input=i,this.$showHideButton=n,this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")}),this.$showHideButton.removeAttribute("hidden");const s=document.createElement("div");s.className="govuk-password-input__sr-status govuk-visually-hidden",s.setAttribute("aria-live","polite"),this.$screenReaderStatusMessage=s,this.$input.insertAdjacentElement("afterend",s),this.$showHideButton.addEventListener("click",this.toggle.bind(this)),this.$input.form&&this.$input.form.addEventListener("submit",(()=>this.hide())),window.addEventListener("pageshow",(t=>{t.persisted&&"password"!==this.$input.type&&this.hide()})),this.hide()}toggle(t){t.preventDefault(),"password"!==this.$input.type?this.hide():this.show()}show(){this.setType("text")}hide(){this.setType("password")}setType(t){if(t===this.$input.type)return;this.$input.setAttribute("type",t);const e="password"===t,i=e?"show":"hide",n=e?"passwordHidden":"passwordShown";this.$showHideButton.innerText=this.i18n.t(`${i}Password`),this.$showHideButton.setAttribute("aria-label",this.i18n.t(`${i}PasswordAriaLabel`)),this.$screenReaderStatusMessage.innerText=this.i18n.t(`${n}Announcement`)}}PasswordInput.moduleName="govuk-password-input",PasswordInput.defaults=Object.freeze({i18n:{showPassword:"Show",hidePassword:"Hide",showPasswordAriaLabel:"Show password",hidePasswordAriaLabel:"Hide password",passwordShownAnnouncement:"Your password is visible",passwordHiddenAnnouncement:"Your password is hidden"}}),PasswordInput.schema=Object.freeze({properties:{i18n:{type:"object"}}});class Radios extends Component{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="radio"]');if(!e.length)throw new ElementError({component:Radios,identifier:'Form inputs (`<input type="radio">`)'});this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new ElementError({component:Radios,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$root.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(null!=i&&i.classList.contains("govuk-radios__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-radios__conditional--hidden",!e)}}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"radio"!==e.type)return;const i=document.querySelectorAll('input[type="radio"][aria-controls]'),n=e.form,s=e.name;i.forEach((t=>{const e=t.form===n;t.name===s&&e&&this.syncConditionalRevealWithInputState(t)}))}}Radios.moduleName="govuk-radios";class ServiceNavigation extends Component{constructor(t){super(t),this.$menuButton=void 0,this.$menu=void 0,this.menuIsOpen=!1,this.mql=null;const e=this.$root.querySelector(".govuk-js-service-navigation-toggle");if(!e)return this;const i=e.getAttribute("aria-controls");if(!i)throw new ElementError({component:ServiceNavigation,identifier:'Navigation button (`<button class="govuk-js-service-navigation-toggle">`) attribute (`aria-controls`)'});const n=document.getElementById(i);if(!n)throw new ElementError({component:ServiceNavigation,element:n,identifier:`Navigation (\`<ul id="${i}">\`)`});this.$menu=n,this.$menuButton=e,this.setupResponsiveChecks(),this.$menuButton.addEventListener("click",(()=>this.handleMenuButtonClick()))}setupResponsiveChecks(){const t=getBreakpoint("tablet");if(!t.value)throw new ElementError({component:ServiceNavigation,identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){this.mql&&this.$menu&&this.$menuButton&&(this.mql.matches?(this.$menu.removeAttribute("hidden"),function(t,e){for(const i in e)t.setAttribute(i,e[i])}(this.$menuButton,e)):(!function(t,e){for(const i of e)t.removeAttribute(i)}(this.$menuButton,Object.keys(e)),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden","")))}handleMenuButtonClick(){this.menuIsOpen=!this.menuIsOpen,this.checkMode()}}ServiceNavigation.moduleName="govuk-service-navigation";const e={hidden:"","aria-hidden":"true"};class SkipLink extends Component{constructor(t){var e;super(t);const i=this.$root.hash,n=null!=(e=this.$root.getAttribute("href"))?e:"";if(this.$root.origin!==window.location.origin||this.$root.pathname!==window.location.pathname)return;const s=i.replace("#","");if(!s)throw new ElementError(`Skip link: Target link (\`href="${n}"\`) has no hash fragment`);const o=document.getElementById(s);if(!o)throw new ElementError({component:SkipLink,element:o,identifier:`Target content (\`id="${s}"\`)`});this.$root.addEventListener("click",(()=>setFocus(o,{onBeforeFocus(){o.classList.add("govuk-skip-link-focused-element")},onBlur(){o.classList.remove("govuk-skip-link-focused-element")}})))}}SkipLink.elementType=HTMLAnchorElement,SkipLink.moduleName="govuk-skip-link";class Tabs extends Component{constructor(t){super(t),this.$tabs=void 0,this.$tabList=void 0,this.$tabListItems=void 0,this.jsHiddenClass="govuk-tabs__panel--hidden",this.changingHash=!1,this.boundTabClick=void 0,this.boundTabKeydown=void 0,this.boundOnHashChange=void 0,this.mql=null;const e=this.$root.querySelectorAll("a.govuk-tabs__tab");if(!e.length)throw new ElementError({component:Tabs,identifier:'Links (`<a class="govuk-tabs__tab">`)'});this.$tabs=e,this.boundTabClick=this.onTabClick.bind(this),this.boundTabKeydown=this.onTabKeydown.bind(this),this.boundOnHashChange=this.onHashChange.bind(this);const i=this.$root.querySelector(".govuk-tabs__list"),n=this.$root.querySelectorAll("li.govuk-tabs__list-item");if(!i)throw new ElementError({component:Tabs,identifier:'List (`<ul class="govuk-tabs__list">`)'});if(!n.length)throw new ElementError({component:Tabs,identifier:'List items (`<li class="govuk-tabs__list-item">`)'});this.$tabList=i,this.$tabListItems=n,this.setupResponsiveChecks()}setupResponsiveChecks(){const t=getBreakpoint("tablet");if(!t.value)throw new ElementError({component:Tabs,identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){var t;null!=(t=this.mql)&&t.matches?this.setup():this.teardown()}setup(){var t;this.$tabList.setAttribute("role","tablist"),this.$tabListItems.forEach((t=>{t.setAttribute("role","presentation")})),this.$tabs.forEach((t=>{this.setAttributes(t),t.addEventListener("click",this.boundTabClick,!0),t.addEventListener("keydown",this.boundTabKeydown,!0),this.hideTab(t)}));const e=null!=(t=this.getTab(window.location.hash))?t:this.$tabs[0];this.showTab(e),window.addEventListener("hashchange",this.boundOnHashChange,!0)}teardown(){this.$tabList.removeAttribute("role"),this.$tabListItems.forEach((t=>{t.removeAttribute("role")})),this.$tabs.forEach((t=>{t.removeEventListener("click",this.boundTabClick,!0),t.removeEventListener("keydown",this.boundTabKeydown,!0),this.unsetAttributes(t)})),window.removeEventListener("hashchange",this.boundOnHashChange,!0)}onHashChange(){const t=window.location.hash,e=this.getTab(t);if(!e)return;if(this.changingHash)return void(this.changingHash=!1);const i=this.getCurrentTab();i&&(this.hideTab(i),this.showTab(e),e.focus())}hideTab(t){this.unhighlightTab(t),this.hidePanel(t)}showTab(t){this.highlightTab(t),this.showPanel(t)}getTab(t){return this.$root.querySelector(`a.govuk-tabs__tab[href="${t}"]`)}setAttributes(t){const e=t.hash.replace("#","");if(!e)return;t.setAttribute("id",`tab_${e}`),t.setAttribute("role","tab"),t.setAttribute("aria-controls",e),t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1");const i=this.getPanel(t);i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby",t.id),i.classList.add(this.jsHiddenClass))}unsetAttributes(t){t.removeAttribute("id"),t.removeAttribute("role"),t.removeAttribute("aria-controls"),t.removeAttribute("aria-selected"),t.removeAttribute("tabindex");const e=this.getPanel(t);e&&(e.removeAttribute("role"),e.removeAttribute("aria-labelledby"),e.classList.remove(this.jsHiddenClass))}onTabClick(t){const e=this.getCurrentTab(),i=t.currentTarget;e&&i instanceof HTMLAnchorElement&&(t.preventDefault(),this.hideTab(e),this.showTab(i),this.createHistoryEntry(i))}createHistoryEntry(t){const e=this.getPanel(t);if(!e)return;const i=e.id;e.id="",this.changingHash=!0,window.location.hash=i,e.id=i}onTabKeydown(t){switch(t.key){case"ArrowLeft":case"Left":this.activatePreviousTab(),t.preventDefault();break;case"ArrowRight":case"Right":this.activateNextTab(),t.preventDefault()}}activateNextTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.nextElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}activatePreviousTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.previousElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}getPanel(t){const e=t.hash.replace("#","");return e?this.$root.querySelector(`#${e}`):null}showPanel(t){const e=this.getPanel(t);e&&e.classList.remove(this.jsHiddenClass)}hidePanel(t){const e=this.getPanel(t);e&&e.classList.add(this.jsHiddenClass)}unhighlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","false"),t.parentElement.classList.remove("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","-1"))}highlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","true"),t.parentElement.classList.add("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","0"))}getCurrentTab(){return this.$root.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")}}function initAll(t={}){const e=isObject(t)?t:{},i=normaliseOptions(t);try{if(!isSupported())throw new SupportError;if(null===i.scope)throw new ElementError({element:i.scope,identifier:"GOV.UK Frontend scope element (`$scope`)"})}catch(n){return void(i.onError?i.onError(n,{config:e}):console.log(n))}[[Accordion,e.accordion],[Button,e.button],[CharacterCount,e.characterCount],[Checkboxes],[ErrorSummary,e.errorSummary],[ExitThisPage,e.exitThisPage],[FileUpload,e.fileUpload],[NotificationBanner,e.notificationBanner],[PasswordInput,e.passwordInput],[Radios],[ServiceNavigation],[SkipLink],[Tabs]].forEach((([Component,t])=>{createAll(Component,t,i)}))}function createAll(Component,t,e){let i;const n=normaliseOptions(e);try{var s;if(!isSupported())throw new SupportError;if(null===n.scope)throw new ElementError({element:n.scope,component:Component,identifier:"Scope element (`$scope`)"});i=null==(s=n.scope)?void 0:s.querySelectorAll(`[data-module="${Component.moduleName}"]`)}catch(o){return n.onError?n.onError(o,{component:Component,config:t}):console.log(o),[]}return Array.from(null!=i?i:[]).map((e=>{try{return void 0!==t?new Component(e,t):new Component(e)}catch(o){return n.onError?n.onError(o,{element:e,component:Component,config:t}):console.log(o),null}})).filter(Boolean)}Tabs.moduleName="govuk-tabs";export{Accordion,Button,CharacterCount,Checkboxes,Component,ConfigurableComponent,ErrorSummary,ExitThisPage,FileUpload,NotificationBanner,PasswordInput,Radios,ServiceNavigation,SkipLink,Tabs,createAll,initAll,isSupported,version};//# sourceMappingURL=govuk-frontend.min.js.map
1
+ const version="6.4.0";function getBreakpoint(t){const e=`--govuk-breakpoint-${t}`;return{property:e,value:window.getComputedStyle(document.documentElement).getPropertyValue(e)||void 0}}function setFocus(t,e={}){var i;const n=t.getAttribute("tabindex");function onBlur(){var i;null==(i=e.onBlur)||i.call(t),n||t.removeAttribute("tabindex")}n||t.setAttribute("tabindex","-1"),t.addEventListener("focus",(function(){t.addEventListener("blur",onBlur,{once:!0})}),{once:!0}),null==(i=e.onBeforeFocus)||i.call(t),t.focus()}function isSupported(t=document.body){return!!t&&t.classList.contains("govuk-frontend-supported")}function isObject(t){return!!t&&"object"==typeof t&&!function(t){return Array.isArray(t)}(t)}function isScope(t){return!!t&&(t instanceof Element||t instanceof Document)}function formatErrorMessage(Component,t){return`${Component.moduleName}: ${t}`}class GOVUKFrontendError extends Error{constructor(...t){super(...t),this.name="GOVUKFrontendError"}}class SupportError extends GOVUKFrontendError{constructor(t=document.body){const e="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";super(t?e:'GOV.UK Frontend initialised without `<script type="module">`'),this.name="SupportError"}}class ConfigError extends GOVUKFrontendError{constructor(...t){super(...t),this.name="ConfigError"}}class ElementError extends GOVUKFrontendError{constructor(t){let e="string"==typeof t?t:"";if(isObject(t)){const{component:i,identifier:n,element:s,expectedType:o}=t;e=n,e+=s?` is not of type ${null!=o?o:"HTMLElement"}`:" not found",i&&(e=formatErrorMessage(i,e))}super(e),this.name="ElementError"}}class InitError extends GOVUKFrontendError{constructor(t){super("string"==typeof t?t:formatErrorMessage(t,"Root element (`$root`) already initialised")),this.name="InitError"}}class Component{get $root(){return this._$root}constructor(t){this._$root=void 0;const e=this.constructor;if("string"!=typeof e.moduleName)throw new InitError("`moduleName` not defined in component");if(!(t instanceof e.elementType))throw new ElementError({element:t,component:e,identifier:"Root element (`$root`)",expectedType:e.elementType.name});this._$root=t,e.checkSupport(),this.checkInitialised();const i=e.moduleName;this.$root.setAttribute(`data-${i}-init`,"")}checkInitialised(){const t=this.constructor,e=t.moduleName;if(e&&function(t,e){return t instanceof HTMLElement&&t.hasAttribute(`data-${e}-init`)}(this.$root,e))throw new InitError(t)}static checkSupport(){if(!isSupported())throw new SupportError}}Component.elementType=HTMLElement;const t=Symbol.for("configOverride");class ConfigurableComponent extends Component{[t](t){return{}}get config(){return this._config}constructor(e,i){super(e),this._config=void 0;const n=this.constructor;if(!isObject(n.defaults))throw new ConfigError(formatErrorMessage(n,"Config passed as parameter into constructor but no defaults defined"));const s=function(Component,t){if(!isObject(Component.schema))throw new ConfigError(formatErrorMessage(Component,"Config passed as parameter into constructor but no schema defined"));const e={},i=Object.entries(Component.schema.properties);for(const n of i){const[i,s]=n,o=i.toString();o in t&&(e[o]=normaliseString(t[o],s)),"object"===(null==s?void 0:s.type)&&(e[o]=extractConfigByNamespace(Component.schema,t,i))}return e}(n,this._$root.dataset);this._config=mergeConfigs(n.defaults,null!=i?i:{},this[t](s),s)}}function normaliseString(t,e){const i=t?t.trim():"";let n,s=null==e?void 0:e.type;switch(s||(["true","false"].includes(i)&&(s="boolean"),i.length>0&&isFinite(Number(i))&&(s="number")),s){case"boolean":n="true"===i;break;case"number":n=Number(i);break;default:n=t}return n}function normaliseOptions(t){let e,i=document;if(isObject(t)){const n=t;(isScope(n.scope)||null===n.scope)&&(i=n.scope),"function"==typeof n.onError&&(e=n.onError)}return isScope(t)?i=t:null===t?i=null:"function"==typeof t&&(e=t),{scope:i,onError:e}}function mergeConfigs(...t){const e={};for(const i of t)for(const t of Object.keys(i)){const n=e[t],s=i[t];isObject(n)&&isObject(s)?e[t]=mergeConfigs(n,s):e[t]=s}return e}function extractConfigByNamespace(t,e,i){const n=t.properties[i];if("object"!==(null==n?void 0:n.type))return;const s={[i]:{}};for(const[o,r]of Object.entries(e)){let t=s;const e=o.split(".");for(const[n,s]of e.entries())isObject(t)&&(n<e.length-1?(isObject(t[s])||(t[s]={}),t=t[s]):o!==i&&(t[s]=normaliseString(r)))}return s[i]}class I18n{constructor(t={},e={}){var i;this.translations=void 0,this.locale=void 0,this.translations=t,this.locale=null!=(i=e.locale)?i:document.documentElement.lang||"en"}t(t,e){if(!t)throw new Error("i18n: lookup key missing");let i=this.translations[t];if("number"==typeof(null==e?void 0:e.count)&&isObject(i)){const n=i[this.getPluralSuffix(t,e.count)];n&&(i=n)}if("string"==typeof i){if(i.match(/%{(.\S+)}/)){if(!e)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(i,e)}return i}return t}replacePlaceholders(t,e){const i=Intl.NumberFormat.supportedLocalesOf(this.locale).length?new Intl.NumberFormat(this.locale):void 0;return t.replace(/%{(.\S+)}/g,(function(t,n){if(Object.prototype.hasOwnProperty.call(e,n)){const t=e[n];return!1===t||"number"!=typeof t&&"string"!=typeof t?"":"number"==typeof t?i?i.format(t):`${t}`:t}throw new Error(`i18n: no data found to replace ${t} placeholder in string`)}))}hasIntlPluralRulesSupport(){return Boolean("PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)}getPluralSuffix(t,e){if(e=Number(e),!isFinite(e))return"other";const i=this.translations[t],n=this.hasIntlPluralRulesSupport()?new Intl.PluralRules(this.locale).select(e):"other";if(isObject(i)){if(n in i)return n;if("other"in i)return console.warn(`i18n: Missing plural form ".${n}" for "${this.locale}" locale. Falling back to ".other".`),"other"}throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)}}class Accordion extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.controlsClass="govuk-accordion__controls",this.showAllClass="govuk-accordion__show-all",this.showAllTextClass="govuk-accordion__show-all-text",this.sectionClass="govuk-accordion__section",this.sectionExpandedClass="govuk-accordion__section--expanded",this.sectionButtonClass="govuk-accordion__section-button",this.sectionHeaderClass="govuk-accordion__section-header",this.sectionHeadingClass="govuk-accordion__section-heading",this.sectionHeadingDividerClass="govuk-accordion__section-heading-divider",this.sectionHeadingTextClass="govuk-accordion__section-heading-text",this.sectionHeadingTextFocusClass="govuk-accordion__section-heading-text-focus",this.sectionShowHideToggleClass="govuk-accordion__section-toggle",this.sectionShowHideToggleFocusClass="govuk-accordion__section-toggle-focus",this.sectionShowHideTextClass="govuk-accordion__section-toggle-text",this.upChevronIconClass="govuk-accordion-nav__chevron",this.downChevronIconClass="govuk-accordion-nav__chevron--down",this.sectionSummaryClass="govuk-accordion__section-summary",this.sectionSummaryFocusClass="govuk-accordion__section-summary-focus",this.sectionContentClass="govuk-accordion__section-content",this.$sections=void 0,this.$showAllButton=null,this.$showAllIcon=null,this.$showAllText=null,this.i18n=new I18n(this.config.i18n);const i=this.$root.querySelectorAll(`.${this.sectionClass}`);if(!i.length)throw new ElementError({component:Accordion,identifier:`Sections (\`<div class="${this.sectionClass}">\`)`});this.$sections=i,this.initControls(),this.initSectionHeaders(),this.updateShowAllButton(this.areAllSectionsOpen())}initControls(){this.$showAllButton=document.createElement("button"),this.$showAllButton.setAttribute("type","button"),this.$showAllButton.setAttribute("class",this.showAllClass),this.$showAllButton.setAttribute("aria-expanded","false"),this.$showAllIcon=document.createElement("span"),this.$showAllIcon.classList.add(this.upChevronIconClass),this.$showAllButton.appendChild(this.$showAllIcon);const t=document.createElement("div");t.setAttribute("class",this.controlsClass),t.appendChild(this.$showAllButton),this.$root.insertBefore(t,this.$root.firstChild),this.$showAllText=document.createElement("span"),this.$showAllText.classList.add(this.showAllTextClass),this.$showAllButton.appendChild(this.$showAllText),this.$showAllButton.addEventListener("click",(()=>this.onShowOrHideAllToggle())),"onbeforematch"in document&&document.addEventListener("beforematch",(t=>this.onBeforeMatch(t)))}initSectionHeaders(){this.$sections.forEach(((t,e)=>{const i=t.querySelector(`.${this.sectionHeaderClass}`);if(!i)throw new ElementError({component:Accordion,identifier:`Section headers (\`<div class="${this.sectionHeaderClass}">\`)`});this.constructHeaderMarkup(i,e),this.setExpanded(this.isExpanded(t),t),i.addEventListener("click",(()=>this.onSectionToggle(t))),this.setInitialState(t)}))}constructHeaderMarkup(t,e){const i=t.querySelector(`.${this.sectionButtonClass}`),n=t.querySelector(`.${this.sectionHeadingClass}`),s=t.querySelector(`.${this.sectionSummaryClass}`);if(!n)throw new ElementError({component:Accordion,identifier:`Section heading (\`.${this.sectionHeadingClass}\`)`});if(!i)throw new ElementError({component:Accordion,identifier:`Section button placeholder (\`<span class="${this.sectionButtonClass}">\`)`});const o=document.createElement("button");o.setAttribute("type","button"),o.setAttribute("aria-controls",`${this.$root.id}-content-${e+1}`);for(const d of Array.from(i.attributes))"id"!==d.name&&o.setAttribute(d.name,d.value);const r=document.createElement("span");r.classList.add(this.sectionHeadingTextClass),r.id=i.id;const a=document.createElement("span");a.classList.add(this.sectionHeadingTextFocusClass),r.appendChild(a),Array.from(i.childNodes).forEach((t=>a.appendChild(t)));const l=document.createElement("span");l.classList.add(this.sectionShowHideToggleClass),l.setAttribute("data-nosnippet","");const c=document.createElement("span");c.classList.add(this.sectionShowHideToggleFocusClass),l.appendChild(c);const u=document.createElement("span"),h=document.createElement("span");if(h.classList.add(this.upChevronIconClass),c.appendChild(h),u.classList.add(this.sectionShowHideTextClass),c.appendChild(u),o.appendChild(r),o.appendChild(this.getButtonPunctuationEl()),s){const t=document.createElement("span"),e=document.createElement("span");e.classList.add(this.sectionSummaryFocusClass),t.appendChild(e);for(const i of Array.from(s.attributes))t.setAttribute(i.name,i.value);Array.from(s.childNodes).forEach((t=>e.appendChild(t))),s.remove(),o.appendChild(t),o.appendChild(this.getButtonPunctuationEl())}o.appendChild(l),n.removeChild(i),n.appendChild(o)}onBeforeMatch(t){const e=t.target;if(!(e instanceof Element))return;const i=e.closest(`.${this.sectionClass}`);i&&this.setExpanded(!0,i)}onSectionToggle(t){const e=!this.isExpanded(t);this.setExpanded(e,t),this.storeState(t,e)}onShowOrHideAllToggle(){const t=!this.areAllSectionsOpen();this.$sections.forEach((e=>{this.setExpanded(t,e),this.storeState(e,t)})),this.updateShowAllButton(t)}setExpanded(t,e){const i=e.querySelector(`.${this.upChevronIconClass}`),n=e.querySelector(`.${this.sectionShowHideTextClass}`),s=e.querySelector(`.${this.sectionButtonClass}`),o=e.querySelector(`.${this.sectionContentClass}`);if(!o)throw new ElementError({component:Accordion,identifier:`Section content (\`<div class="${this.sectionContentClass}">\`)`});if(!i||!n||!s)return;const r=t?this.i18n.t("hideSection"):this.i18n.t("showSection");n.textContent=r,s.setAttribute("aria-expanded",`${t}`);const a=[],l=e.querySelector(`.${this.sectionHeadingTextClass}`);l&&a.push(l.textContent.trim());const c=e.querySelector(`.${this.sectionSummaryClass}`);c&&a.push(c.textContent.trim());const u=t?this.i18n.t("hideSectionAriaLabel"):this.i18n.t("showSectionAriaLabel");a.push(u),s.setAttribute("aria-label",a.join(" , ")),t?(o.removeAttribute("hidden"),e.classList.add(this.sectionExpandedClass),i.classList.remove(this.downChevronIconClass)):(o.setAttribute("hidden","until-found"),e.classList.remove(this.sectionExpandedClass),i.classList.add(this.downChevronIconClass)),this.updateShowAllButton(this.areAllSectionsOpen())}isExpanded(t){return t.classList.contains(this.sectionExpandedClass)}areAllSectionsOpen(){return Array.from(this.$sections).every((t=>this.isExpanded(t)))}updateShowAllButton(t){this.$showAllButton&&this.$showAllText&&this.$showAllIcon&&(this.$showAllButton.setAttribute("aria-expanded",t.toString()),this.$showAllText.textContent=t?this.i18n.t("hideAllSections"):this.i18n.t("showAllSections"),this.$showAllIcon.classList.toggle(this.downChevronIconClass,!t))}getIdentifier(t){const e=t.querySelector(`.${this.sectionButtonClass}`);return null==e?void 0:e.getAttribute("aria-controls")}storeState(t,e){if(!this.config.rememberExpanded)return;const i=this.getIdentifier(t);if(i)try{window.sessionStorage.setItem(i,e.toString())}catch(n){}}setInitialState(t){if(!this.config.rememberExpanded)return;const e=this.getIdentifier(t);if(e)try{const i=window.sessionStorage.getItem(e);null!==i&&this.setExpanded("true"===i,t)}catch(i){}}getButtonPunctuationEl(){const t=document.createElement("span");return t.classList.add("govuk-visually-hidden",this.sectionHeadingDividerClass),t.textContent=", ",t}}Accordion.moduleName="govuk-accordion",Accordion.defaults=Object.freeze({i18n:{hideAllSections:"Hide all sections",hideSection:"Hide",hideSectionAriaLabel:"Hide this section",showAllSections:"Show all sections",showSection:"Show",showSectionAriaLabel:"Show this section"},rememberExpanded:!0}),Accordion.schema=Object.freeze({properties:{i18n:{type:"object"},rememberExpanded:{type:"boolean"}}});class Button extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.debounceFormSubmitTimer=null,this.$root.addEventListener("keydown",(t=>this.handleKeyDown(t))),this.$root.addEventListener("click",(t=>this.debounce(t)))}handleKeyDown(t){const e=t.target;" "===t.key&&e instanceof HTMLElement&&"button"===e.getAttribute("role")&&(t.preventDefault(),e.click())}debounce(t){if(this.config.preventDoubleClick)return this.debounceFormSubmitTimer?(t.preventDefault(),!1):void(this.debounceFormSubmitTimer=window.setTimeout((()=>{this.debounceFormSubmitTimer=null}),1e3))}}function closestAttributeValue(t,e){const i=t.closest(`[${e}]`);return i?i.getAttribute(e):null}Button.moduleName="govuk-button",Button.defaults=Object.freeze({preventDoubleClick:!1}),Button.schema=Object.freeze({properties:{preventDoubleClick:{type:"boolean"}}});class CharacterCount extends ConfigurableComponent{[t](t){let e={};return("maxwords"in t||"maxlength"in t)&&(e={maxlength:void 0,maxwords:void 0}),e}constructor(t,e={}){var i,n;super(t,e),this.$textarea=void 0,this.count=0,this.$visibleCountMessage=void 0,this.$screenReaderCountMessage=void 0,this.lastInputTimestamp=null,this.lastInputValue="",this.valueChecker=null,this.i18n=void 0,this.maxLength=void 0;const s=this.$root.querySelector(".govuk-js-character-count");if(!(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement))throw new ElementError({component:CharacterCount,element:s,expectedType:"HTMLTextareaElement or HTMLInputElement",identifier:"Form field (`.govuk-js-character-count`)"});const o=function(t,e){const i=[];for(const[n,s]of Object.entries(t)){const t=[];if(Array.isArray(s)){for(const{required:i,errorMessage:n}of s)i.every((t=>!!e[t]))||t.push(n);"anyOf"!==n||s.length-t.length>=1||i.push(...t)}}return i}(CharacterCount.schema,this.config);if(o[0])throw new ConfigError(formatErrorMessage(CharacterCount,o[0]));this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")}),this.maxLength=null!=(i=null!=(n=this.config.maxwords)?n:this.config.maxlength)?i:1/0,this.$textarea=s;const r=`${this.$textarea.id}-info`,a=document.getElementById(r);if(!a)throw new ElementError({component:CharacterCount,element:a,identifier:`Count message (\`id="${r}"\`)`});this.$errorMessage=this.$root.querySelector(".govuk-error-message"),a.textContent.match(/^\s*$/)&&(a.textContent=this.i18n.t("textareaDescription",{count:this.maxLength})),this.$textarea.insertAdjacentElement("afterend",a);const l=document.createElement("div");l.className="govuk-character-count__sr-status govuk-visually-hidden",l.setAttribute("aria-live","polite"),this.$screenReaderCountMessage=l,a.insertAdjacentElement("afterend",l);const c=document.createElement("div");c.className=a.className,c.classList.add("govuk-character-count__status"),c.setAttribute("aria-hidden","true"),this.$visibleCountMessage=c,a.insertAdjacentElement("afterend",c),a.classList.add("govuk-visually-hidden"),this.$textarea.removeAttribute("maxlength"),this.bindChangeEvents(),window.addEventListener("pageshow",(()=>{this.$textarea.value!==this.$textarea.textContent&&(this.updateCount(),this.updateCountMessage())})),this.updateCount(),this.updateCountMessage()}bindChangeEvents(){this.$textarea.addEventListener("input",(()=>this.handleInput())),this.$textarea.addEventListener("focus",(()=>this.handleFocus())),this.$textarea.addEventListener("blur",(()=>this.handleBlur()))}handleInput(){this.updateCount(),this.updateVisibleCountMessage(),this.lastInputTimestamp=Date.now()}handleFocus(){this.valueChecker=window.setInterval((()=>{(!this.lastInputTimestamp||Date.now()-500>=this.lastInputTimestamp)&&this.updateIfValueChanged()}),1e3)}handleBlur(){this.valueChecker&&window.clearInterval(this.valueChecker)}updateIfValueChanged(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())}updateCountMessage(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()}updateVisibleCountMessage(){const t=this.maxLength-this.count<0;this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled",!this.isOverThreshold()),this.$errorMessage||this.$textarea.classList.toggle("govuk-textarea--error",t),this.$visibleCountMessage.classList.toggle("govuk-error-message",t),this.$visibleCountMessage.classList.toggle("govuk-hint",!t),this.$visibleCountMessage.textContent=this.getCountMessage()}updateScreenReaderCountMessage(){this.isOverThreshold()?this.$screenReaderCountMessage.removeAttribute("aria-hidden"):this.$screenReaderCountMessage.setAttribute("aria-hidden","true"),this.$screenReaderCountMessage.textContent=this.getCountMessage()}updateCount(){const t=this.$textarea.value;if(this.config.maxwords){var e;const i=null!=(e=t.match(/\S+/g))?e:[];this.count=i.length}else this.count=t.length}getCountMessage(){const t=this.maxLength-this.count,e=this.config.maxwords?"words":"characters";return this.formatCountMessage(t,e)}formatCountMessage(t,e){if(0===t)return this.i18n.t(`${e}AtLimit`);const i=t<0?"OverLimit":"UnderLimit";return this.i18n.t(`${e}${i}`,{count:Math.abs(t)})}isOverThreshold(){if(!this.config.threshold)return!0;const t=this.count;return this.maxLength*this.config.threshold/100<=t}}CharacterCount.moduleName="govuk-character-count",CharacterCount.defaults=Object.freeze({threshold:0,i18n:{charactersUnderLimit:{one:"You have %{count} character remaining",other:"You have %{count} characters remaining"},charactersAtLimit:"You have 0 characters remaining",charactersOverLimit:{one:"You have %{count} character too many",other:"You have %{count} characters too many"},wordsUnderLimit:{one:"You have %{count} word remaining",other:"You have %{count} words remaining"},wordsAtLimit:"You have 0 words remaining",wordsOverLimit:{one:"You have %{count} word too many",other:"You have %{count} words too many"},textareaDescription:{other:""}}}),CharacterCount.schema=Object.freeze({properties:{i18n:{type:"object"},maxwords:{type:"number"},maxlength:{type:"number"},threshold:{type:"number"}},anyOf:[{required:["maxwords"],errorMessage:'Either "maxlength" or "maxwords" must be provided'},{required:["maxlength"],errorMessage:'Either "maxlength" or "maxwords" must be provided'}]});class Checkboxes extends Component{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="checkbox"]');if(!e.length)throw new ElementError({component:Checkboxes,identifier:'Form inputs (`<input type="checkbox">`)'});this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new ElementError({component:Checkboxes,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$root.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(null!=i&&i.classList.contains("govuk-checkboxes__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-checkboxes__conditional--hidden",!e)}}unCheckAllInputsExcept(t){document.querySelectorAll(`input[type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&e!==t&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}unCheckExclusiveInputs(t){document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"checkbox"!==e.type)return;if(e.getAttribute("aria-controls")&&this.syncConditionalRevealWithInputState(e),!e.checked)return;"exclusive"===e.getAttribute("data-behaviour")?this.unCheckAllInputsExcept(e):this.unCheckExclusiveInputs(e)}}Checkboxes.moduleName="govuk-checkboxes";class ErrorSummary extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.config.disableAutoFocus||setFocus(this.$root),this.$root.addEventListener("click",(t=>this.handleClick(t)))}handleClick(t){const e=t.target;e&&this.focusTarget(e)&&t.preventDefault()}focusTarget(t){if(!(t instanceof HTMLAnchorElement))return!1;const e=t.hash.replace("#","");if(!e)return!1;const i=document.getElementById(e);if(!i)return!1;const n=this.getAssociatedLegendOrLabel(i);return!!n&&(n.scrollIntoView(),i.focus({preventScroll:!0}),!0)}getAssociatedLegendOrLabel(t){var e;const i=t.closest("fieldset");if(i){const e=i.getElementsByTagName("legend");if(e.length){const i=e[0];if(t instanceof HTMLInputElement&&("checkbox"===t.type||"radio"===t.type))return i;const n=i.getBoundingClientRect().top,s=t.getBoundingClientRect();if(s.height&&window.innerHeight){if(s.top+s.height-n<window.innerHeight/2)return i}}}return null!=(e=document.querySelector(`label[for='${t.getAttribute("id")}']`))?e:t.closest("label")}}ErrorSummary.moduleName="govuk-error-summary",ErrorSummary.defaults=Object.freeze({disableAutoFocus:!1}),ErrorSummary.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class ExitThisPage extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.$button=void 0,this.$skiplinkButton=null,this.$updateSpan=null,this.$indicatorContainer=null,this.$overlay=null,this.keypressCounter=0,this.lastKeyWasModified=!1,this.timeoutTime=5e3,this.keypressTimeoutId=null,this.timeoutMessageId=null;const i=this.$root.querySelector(".govuk-exit-this-page__button");if(!(i instanceof HTMLAnchorElement))throw new ElementError({component:ExitThisPage,element:i,expectedType:"HTMLAnchorElement",identifier:"Button (`.govuk-exit-this-page__button`)"});this.i18n=new I18n(this.config.i18n),this.$button=i;const n=document.querySelector(".govuk-js-exit-this-page-skiplink");n instanceof HTMLAnchorElement&&(this.$skiplinkButton=n),this.buildIndicator(),this.initUpdateSpan(),this.initButtonClickHandler(),"govukFrontendExitThisPageKeypress"in document.body.dataset||(document.addEventListener("keyup",this.handleKeypress.bind(this),!0),document.body.dataset.govukFrontendExitThisPageKeypress="true"),window.addEventListener("pageshow",this.resetPage.bind(this))}initUpdateSpan(){this.$updateSpan=document.createElement("span"),this.$updateSpan.setAttribute("role","status"),this.$updateSpan.className="govuk-visually-hidden",this.$root.appendChild(this.$updateSpan)}initButtonClickHandler(){this.$button.addEventListener("click",this.handleClick.bind(this)),this.$skiplinkButton&&this.$skiplinkButton.addEventListener("click",this.handleClick.bind(this))}buildIndicator(){this.$indicatorContainer=document.createElement("div"),this.$indicatorContainer.className="govuk-exit-this-page__indicator",this.$indicatorContainer.setAttribute("aria-hidden","true");for(let t=0;t<3;t++){const t=document.createElement("div");t.className="govuk-exit-this-page__indicator-light",this.$indicatorContainer.appendChild(t)}this.$button.appendChild(this.$indicatorContainer)}updateIndicator(){if(!this.$indicatorContainer)return;this.$indicatorContainer.classList.toggle("govuk-exit-this-page__indicator--visible",this.keypressCounter>0);this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light").forEach(((t,e)=>{t.classList.toggle("govuk-exit-this-page__indicator-light--on",e<this.keypressCounter)}))}exitPage(){this.$updateSpan&&(this.$updateSpan.textContent="",document.body.classList.add("govuk-exit-this-page-hide-content"),this.$overlay=document.createElement("div"),this.$overlay.className="govuk-exit-this-page-overlay",this.$overlay.setAttribute("role","alert"),document.body.appendChild(this.$overlay),this.$overlay.textContent=this.i18n.t("activated"),window.location.href=this.$button.href)}handleClick(t){t.preventDefault(),this.exitPage()}handleKeypress(t){this.$updateSpan&&("Shift"!==t.key||this.lastKeyWasModified?this.keypressTimeoutId&&this.resetKeypressTimer():(this.keypressCounter+=1,this.updateIndicator(),this.timeoutMessageId&&(window.clearTimeout(this.timeoutMessageId),this.timeoutMessageId=null),this.keypressCounter>=3?(this.keypressCounter=0,this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null),this.exitPage()):1===this.keypressCounter?this.$updateSpan.textContent=this.i18n.t("pressTwoMoreTimes"):this.$updateSpan.textContent=this.i18n.t("pressOneMoreTime"),this.setKeypressTimer()),this.lastKeyWasModified=t.shiftKey)}setKeypressTimer(){this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=window.setTimeout(this.resetKeypressTimer.bind(this),this.timeoutTime)}resetKeypressTimer(){if(!this.$updateSpan)return;this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null);const t=this.$updateSpan;this.keypressCounter=0,t.textContent=this.i18n.t("timedOut"),this.timeoutMessageId=window.setTimeout((()=>{t.textContent=""}),this.timeoutTime),this.updateIndicator()}resetPage(){document.body.classList.remove("govuk-exit-this-page-hide-content"),this.$overlay&&(this.$overlay.remove(),this.$overlay=null),this.$updateSpan&&(this.$updateSpan.setAttribute("role","status"),this.$updateSpan.textContent=""),this.updateIndicator(),this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.timeoutMessageId&&window.clearTimeout(this.timeoutMessageId)}}ExitThisPage.moduleName="govuk-exit-this-page",ExitThisPage.defaults=Object.freeze({i18n:{activated:"Loading.",timedOut:"Exit this page expired.",pressTwoMoreTimes:"Shift, press 2 more times to exit.",pressOneMoreTime:"Shift, press 1 more time to exit."}}),ExitThisPage.schema=Object.freeze({properties:{i18n:{type:"object"}}});class FileUpload extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.$input=void 0,this.$button=void 0,this.$status=void 0,this.$label=void 0,this.i18n=void 0,this.id=void 0,this.$announcements=void 0,this.enteredAnotherElement=void 0;const i=this.$root.querySelector('input[type="file"]');if(null===i)throw new ElementError({component:FileUpload,identifier:'File inputs (`<input type="file">`)'});if(this.$input=i,!this.$input.id)throw new ElementError({component:FileUpload,identifier:'File input (`<input type="file">`) attribute (`id`)'});this.id=this.$input.id,this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")});const n=this.findLabel();n.id||(n.id=`${this.id}-label`),this.$label=n,this.$input.id=`${this.id}-input`,this.$input.setAttribute("hidden","hidden"),this.$status=this.createStatus(),this.$button=this.createButton(),this.$root.insertAdjacentElement("afterbegin",this.$button),this.$input.addEventListener("change",this.onChange.bind(this)),this.updateDisabledState(),this.observeDisabledState(),this.$announcements=document.createElement("span"),this.$announcements.classList.add("govuk-file-upload-announcements"),this.$announcements.classList.add("govuk-visually-hidden"),this.$announcements.setAttribute("aria-live","assertive"),this.$root.insertAdjacentElement("afterend",this.$announcements),this.bindDraggingEvents()}createStatus(){const t=document.createElement("span");return t.className="govuk-body govuk-file-upload-button__status",t.setAttribute("aria-live","polite"),t.innerText=this.i18n.t("noFileChosen"),t}createButton(){const t=document.createElement("button");t.classList.add("govuk-file-upload-button"),t.type="button",t.id=this.id,t.classList.add("govuk-file-upload-button--empty");const e=this.$input.getAttribute("aria-describedby");e&&t.setAttribute("aria-describedby",e),t.appendChild(this.$status);const i=document.createElement("span");i.className="govuk-visually-hidden",i.innerText=", ",i.id=`${this.id}-comma`,t.appendChild(i);const n=document.createElement("span");n.className="govuk-file-upload-button__pseudo-button-container";const s=document.createElement("span");s.className="govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button",s.innerText=this.i18n.t("chooseFilesButton"),n.appendChild(s),n.insertAdjacentText("beforeend"," ");const o=document.createElement("span");return o.className="govuk-body govuk-file-upload-button__instruction",o.innerText=this.i18n.t("dropInstruction"),n.appendChild(o),t.appendChild(n),t.setAttribute("aria-labelledby",`${this.$label.id} ${i.id} ${t.id}`),t.addEventListener("click",this.onClick.bind(this)),t.addEventListener("dragover",(t=>{t.preventDefault()})),t}bindDraggingEvents(){this.$button.addEventListener("drop",this.onDrop.bind(this)),document.addEventListener("dragenter",this.updateDropzoneVisibility.bind(this)),document.addEventListener("dragenter",(()=>{this.enteredAnotherElement=!0})),document.addEventListener("dragleave",(()=>{this.enteredAnotherElement||this.$button.disabled||(this.hideDraggingState(),this.$announcements.innerText=this.i18n.t("leftDropZone")),this.enteredAnotherElement=!1}))}updateDropzoneVisibility(t){this.$button.disabled||t.target instanceof Node&&(this.$root.contains(t.target)?t.dataTransfer&&this.canDrop(t.dataTransfer)&&(this.$button.classList.contains("govuk-file-upload-button--dragging")||(this.showDraggingState(),this.$announcements.innerText=this.i18n.t("enteredDropZone"))):this.$button.classList.contains("govuk-file-upload-button--dragging")&&(this.hideDraggingState(),this.$announcements.innerText=this.i18n.t("leftDropZone")))}showDraggingState(){this.$button.classList.add("govuk-file-upload-button--dragging")}hideDraggingState(){this.$button.classList.remove("govuk-file-upload-button--dragging")}onDrop(t){t.preventDefault(),t.dataTransfer&&this.canFillInput(t.dataTransfer)&&(this.$input.files=t.dataTransfer.files,this.$input.dispatchEvent(new CustomEvent("change")),this.hideDraggingState())}canFillInput(t){return this.matchesInputCapacity(t.files.length)}canDrop(t){return t.items.length?this.matchesInputCapacity(function(t){let e=0;for(let i=0;i<t.length;i++)"file"===t[i].kind&&e++;return e}(t.items)):!t.types.length||t.types.includes("Files")}matchesInputCapacity(t){return this.$input.multiple?t>0:1===t}onChange(){const t=this.$input.files.length;0===t?(this.$status.innerText=this.i18n.t("noFileChosen"),this.$button.classList.add("govuk-file-upload-button--empty")):(this.$status.innerText=1===t?this.$input.files[0].name:this.i18n.t("multipleFilesChosen",{count:t}),this.$button.classList.remove("govuk-file-upload-button--empty"))}findLabel(){const t=document.querySelector(`label[for="${this.$input.id}"]`);if(!t)throw new ElementError({component:FileUpload,identifier:`Field label (\`<label for=${this.$input.id}>\`)`});return t}onClick(){this.$input.click()}observeDisabledState(){new MutationObserver((t=>{for(const e of t)"attributes"===e.type&&"disabled"===e.attributeName&&this.updateDisabledState()})).observe(this.$input,{attributes:!0})}updateDisabledState(){this.$button.disabled=this.$input.disabled,this.$root.classList.toggle("govuk-file-upload-wrapper--disabled",this.$button.disabled)}}FileUpload.moduleName="govuk-file-upload",FileUpload.defaults=Object.freeze({i18n:{chooseFilesButton:"Choose file",dropInstruction:"or drop file",noFileChosen:"No file chosen",multipleFilesChosen:{one:"%{count} file chosen",other:"%{count} files chosen"},enteredDropZone:"Entered drop zone",leftDropZone:"Left drop zone"}}),FileUpload.schema=Object.freeze({properties:{i18n:{type:"object"}}});class NotificationBanner extends ConfigurableComponent{constructor(t,e={}){super(t,e),"alert"!==this.$root.getAttribute("role")||this.config.disableAutoFocus||setFocus(this.$root)}}NotificationBanner.moduleName="govuk-notification-banner",NotificationBanner.defaults=Object.freeze({disableAutoFocus:!1}),NotificationBanner.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class PasswordInput extends ConfigurableComponent{constructor(t,e={}){super(t,e),this.i18n=void 0,this.$input=void 0,this.$showHideButton=void 0,this.$screenReaderStatusMessage=void 0;const i=this.$root.querySelector(".govuk-js-password-input-input");if(!(i instanceof HTMLInputElement))throw new ElementError({component:PasswordInput,element:i,expectedType:"HTMLInputElement",identifier:"Form field (`.govuk-js-password-input-input`)"});if("password"!==i.type)throw new ElementError("Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.");const n=this.$root.querySelector(".govuk-js-password-input-toggle");if(!(n instanceof HTMLButtonElement))throw new ElementError({component:PasswordInput,element:n,expectedType:"HTMLButtonElement",identifier:"Button (`.govuk-js-password-input-toggle`)"});if("button"!==n.type)throw new ElementError("Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.");this.$input=i,this.$showHideButton=n,this.i18n=new I18n(this.config.i18n,{locale:closestAttributeValue(this.$root,"lang")}),this.$showHideButton.removeAttribute("hidden");const s=document.createElement("div");s.className="govuk-password-input__sr-status govuk-visually-hidden",s.setAttribute("aria-live","polite"),this.$screenReaderStatusMessage=s,this.$input.insertAdjacentElement("afterend",s),this.$showHideButton.addEventListener("click",this.toggle.bind(this)),this.$input.form&&this.$input.form.addEventListener("submit",(()=>this.hide())),window.addEventListener("pageshow",(t=>{t.persisted&&"password"!==this.$input.type&&this.hide()})),this.hide()}toggle(t){t.preventDefault(),"password"!==this.$input.type?this.hide():this.show()}show(){this.setType("text")}hide(){this.setType("password")}setType(t){if(t===this.$input.type)return;this.$input.setAttribute("type",t);const e="password"===t,i=e?"show":"hide",n=e?"passwordHidden":"passwordShown";this.$showHideButton.innerText=this.i18n.t(`${i}Password`),this.$showHideButton.setAttribute("aria-label",this.i18n.t(`${i}PasswordAriaLabel`)),this.$screenReaderStatusMessage.innerText=this.i18n.t(`${n}Announcement`)}}PasswordInput.moduleName="govuk-password-input",PasswordInput.defaults=Object.freeze({i18n:{showPassword:"Show",hidePassword:"Hide",showPasswordAriaLabel:"Show password",hidePasswordAriaLabel:"Hide password",passwordShownAnnouncement:"Your password is visible",passwordHiddenAnnouncement:"Your password is hidden"}}),PasswordInput.schema=Object.freeze({properties:{i18n:{type:"object"}}});class Radios extends Component{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="radio"]');if(!e.length)throw new ElementError({component:Radios,identifier:'Form inputs (`<input type="radio">`)'});this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new ElementError({component:Radios,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$root.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(null!=i&&i.classList.contains("govuk-radios__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-radios__conditional--hidden",!e)}}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"radio"!==e.type)return;const i=document.querySelectorAll('input[type="radio"][aria-controls]'),n=e.form,s=e.name;i.forEach((t=>{const e=t.form===n;t.name===s&&e&&this.syncConditionalRevealWithInputState(t)}))}}Radios.moduleName="govuk-radios";class ServiceNavigation extends Component{constructor(t){super(t),this.$menuButton=void 0,this.$menu=void 0,this.menuIsOpen=!1,this.mql=null;const e=this.$root.querySelector(".govuk-js-service-navigation-toggle");if(!e)return this;const i=e.getAttribute("aria-controls");if(!i)throw new ElementError({component:ServiceNavigation,identifier:'Navigation button (`<button class="govuk-js-service-navigation-toggle">`) attribute (`aria-controls`)'});const n=document.getElementById(i);if(!n)throw new ElementError({component:ServiceNavigation,element:n,identifier:`Navigation (\`<ul id="${i}">\`)`});this.$menu=n,this.$menuButton=e,this.setupResponsiveChecks(),this.$menuButton.addEventListener("click",(()=>this.handleMenuButtonClick()))}setupResponsiveChecks(){const t=getBreakpoint("tablet");if(!t.value)throw new ElementError({component:ServiceNavigation,identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){this.mql&&this.$menu&&this.$menuButton&&(this.mql.matches?(this.$menu.removeAttribute("hidden"),function(t,e){for(const i in e)t.setAttribute(i,e[i])}(this.$menuButton,e)):(!function(t,e){for(const i of e)t.removeAttribute(i)}(this.$menuButton,Object.keys(e)),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden","")))}handleMenuButtonClick(){this.menuIsOpen=!this.menuIsOpen,this.checkMode()}}ServiceNavigation.moduleName="govuk-service-navigation";const e={hidden:"","aria-hidden":"true"};class SkipLink extends Component{constructor(t){var e;super(t);const i=this.$root.hash,n=null!=(e=this.$root.getAttribute("href"))?e:"";if(this.$root.origin!==window.location.origin||this.$root.pathname!==window.location.pathname)return;const s=i.replace("#","");if(!s)throw new ElementError(`Skip link: Target link (\`href="${n}"\`) has no hash fragment`);const o=document.getElementById(s);if(!o)throw new ElementError({component:SkipLink,element:o,identifier:`Target content (\`id="${s}"\`)`});this.$root.addEventListener("click",(()=>setFocus(o,{onBeforeFocus(){o.classList.add("govuk-skip-link-focused-element")},onBlur(){o.classList.remove("govuk-skip-link-focused-element")}})))}}SkipLink.elementType=HTMLAnchorElement,SkipLink.moduleName="govuk-skip-link";class Tabs extends Component{constructor(t){super(t),this.$tabs=void 0,this.$tabList=void 0,this.$tabListItems=void 0,this.jsHiddenClass="govuk-tabs__panel--hidden",this.changingHash=!1,this.boundTabClick=void 0,this.boundTabKeydown=void 0,this.boundOnHashChange=void 0,this.mql=null;const e=this.$root.querySelectorAll("a.govuk-tabs__tab");if(!e.length)throw new ElementError({component:Tabs,identifier:'Links (`<a class="govuk-tabs__tab">`)'});this.$tabs=e,this.boundTabClick=this.onTabClick.bind(this),this.boundTabKeydown=this.onTabKeydown.bind(this),this.boundOnHashChange=this.onHashChange.bind(this);const i=this.$root.querySelector(".govuk-tabs__list"),n=this.$root.querySelectorAll("li.govuk-tabs__list-item");if(!i)throw new ElementError({component:Tabs,identifier:'List (`<ul class="govuk-tabs__list">`)'});if(!n.length)throw new ElementError({component:Tabs,identifier:'List items (`<li class="govuk-tabs__list-item">`)'});this.$tabList=i,this.$tabListItems=n,this.setupResponsiveChecks()}setupResponsiveChecks(){const t=getBreakpoint("tablet");if(!t.value)throw new ElementError({component:Tabs,identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){var t;null!=(t=this.mql)&&t.matches?this.setup():this.teardown()}setup(){var t;this.$tabList.setAttribute("role","tablist"),this.$tabListItems.forEach((t=>{t.setAttribute("role","presentation")})),this.$tabs.forEach((t=>{this.setAttributes(t),t.addEventListener("click",this.boundTabClick,!0),t.addEventListener("keydown",this.boundTabKeydown,!0),this.hideTab(t)}));const e=null!=(t=this.getTab(window.location.hash))?t:this.$tabs[0];this.showTab(e),window.addEventListener("hashchange",this.boundOnHashChange,!0)}teardown(){this.$tabList.removeAttribute("role"),this.$tabListItems.forEach((t=>{t.removeAttribute("role")})),this.$tabs.forEach((t=>{t.removeEventListener("click",this.boundTabClick,!0),t.removeEventListener("keydown",this.boundTabKeydown,!0),this.unsetAttributes(t)})),window.removeEventListener("hashchange",this.boundOnHashChange,!0)}onHashChange(){const t=window.location.hash,e=this.getTab(t);if(!e)return;if(this.changingHash)return void(this.changingHash=!1);const i=this.getCurrentTab();i&&(this.hideTab(i),this.showTab(e),e.focus())}hideTab(t){this.unhighlightTab(t),this.hidePanel(t)}showTab(t){this.highlightTab(t),this.showPanel(t)}getTab(t){return this.$root.querySelector(`a.govuk-tabs__tab[href="${t}"]`)}setAttributes(t){const e=t.hash.replace("#","");if(!e)return;t.setAttribute("id",`tab_${e}`),t.setAttribute("role","tab"),t.setAttribute("aria-controls",e),t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1");const i=this.getPanel(t);i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby",t.id),i.classList.add(this.jsHiddenClass))}unsetAttributes(t){t.removeAttribute("id"),t.removeAttribute("role"),t.removeAttribute("aria-controls"),t.removeAttribute("aria-selected"),t.removeAttribute("tabindex");const e=this.getPanel(t);e&&(e.removeAttribute("role"),e.removeAttribute("aria-labelledby"),e.classList.remove(this.jsHiddenClass))}onTabClick(t){const e=this.getCurrentTab(),i=t.currentTarget;e&&i instanceof HTMLAnchorElement&&(t.preventDefault(),this.hideTab(e),this.showTab(i),this.createHistoryEntry(i))}createHistoryEntry(t){const e=this.getPanel(t);if(!e)return;const i=e.id;e.id="",this.changingHash=!0,window.location.hash=i,e.id=i}onTabKeydown(t){switch(t.key){case"ArrowLeft":case"Left":this.activatePreviousTab(),t.preventDefault();break;case"ArrowRight":case"Right":this.activateNextTab(),t.preventDefault()}}activateNextTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.nextElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}activatePreviousTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.previousElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}getPanel(t){const e=t.hash.replace("#","");return e?this.$root.querySelector(`#${e}`):null}showPanel(t){const e=this.getPanel(t);e&&e.classList.remove(this.jsHiddenClass)}hidePanel(t){const e=this.getPanel(t);e&&e.classList.add(this.jsHiddenClass)}unhighlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","false"),t.parentElement.classList.remove("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","-1"))}highlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","true"),t.parentElement.classList.add("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","0"))}getCurrentTab(){return this.$root.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")}}function initAll(t={}){const e=isObject(t)?t:{},i=normaliseOptions(t);try{if(!isSupported())throw new SupportError;if(null===i.scope)throw new ElementError({element:i.scope,identifier:"GOV.UK Frontend scope element (`$scope`)"})}catch(n){return void(i.onError?i.onError(n,{config:e}):console.log(n))}[[Accordion,e.accordion],[Button,e.button],[CharacterCount,e.characterCount],[Checkboxes],[ErrorSummary,e.errorSummary],[ExitThisPage,e.exitThisPage],[FileUpload,e.fileUpload],[NotificationBanner,e.notificationBanner],[PasswordInput,e.passwordInput],[Radios],[ServiceNavigation],[SkipLink],[Tabs]].forEach((([Component,t])=>{createAll(Component,t,i)}))}function createAll(Component,t,e){let i;const n=normaliseOptions(e);try{var s;if(!isSupported())throw new SupportError;if(null===n.scope)throw new ElementError({element:n.scope,component:Component,identifier:"Scope element (`$scope`)"});i=null==(s=n.scope)?void 0:s.querySelectorAll(`[data-module="${Component.moduleName}"]`)}catch(o){return n.onError?n.onError(o,{component:Component,config:t}):console.log(o),[]}return Array.from(null!=i?i:[]).map((e=>{try{return void 0!==t?new Component(e,t):new Component(e)}catch(o){return n.onError?n.onError(o,{element:e,component:Component,config:t}):console.log(o),null}})).filter(Boolean)}Tabs.moduleName="govuk-tabs";export{Accordion,Button,CharacterCount,Checkboxes,Component,ConfigurableComponent,ErrorSummary,ExitThisPage,FileUpload,NotificationBanner,PasswordInput,Radios,ServiceNavigation,SkipLink,Tabs,createAll,initAll,isSupported,version};//# sourceMappingURL=govuk-frontend.min.js.map
@@ -0,0 +1,2 @@
1
+ @forward "clearfix";
2
+
@@ -14,4 +14,3 @@
14
14
  }
15
15
  }
16
16
 
17
- /*# sourceMappingURL=_clearfix.scss.map */
@@ -0,0 +1,2 @@
1
+ @forward "colour";
2
+
@@ -6,10 +6,11 @@
6
6
  @use "sass:meta";
7
7
  @use "sass:string";
8
8
 
9
- @import "../settings/colours-functional";
10
- @import "../settings/colours-palette";
11
- @import "../settings/colours-organisations";
12
- @import "../settings/warnings";
9
+ @use "../settings/colours-palette--internal";
10
+ @use "../settings/warnings--internal";
11
+
12
+ @use "../settings/colours-functional" as *;
13
+ @use "../settings/colours-organisations" as *;
13
14
 
14
15
  /// Get a colour from the palette
15
16
  ///
@@ -17,10 +18,10 @@
17
18
  /// functional colour. For example, use `govuk-functional-colour("link")` for
18
19
  /// links rather than `govuk-colour("blue")`.
19
20
  ///
20
- /// @param {String | Colour} $colour - Name of colour from the colour palette
21
- /// (`$_govuk-palette`)
22
- /// @param {String | Colour} $variant - Name of the variant from the colour palette
23
- /// (`$_govuk-palette`)
21
+ /// @param {String | Colour} $colour - Name of colour from the [colour
22
+ /// palette](https://design-system.service.gov.uk/styles/colour/#add-colours-using-govuk-colour)
23
+ /// @param {String | Colour} $variant - Name of the variant from the [colour
24
+ /// palette](https://design-system.service.gov.uk/styles/colour/#add-colours-using-govuk-colour)
24
25
  /// @return {Colour} Representation of named colour
25
26
  ///
26
27
  /// @example scss - Getting the primary variant of a colour
@@ -38,7 +39,7 @@
38
39
  /// @throw if the palette is misformatted and doesn't associate a colour or map to `$colour`
39
40
  /// @access public
40
41
 
41
- @function govuk-colour($colour, $variant: primary, $colours: $_govuk-palette) {
42
+ @function govuk-colour($colour, $variant: primary, $colours: colours-palette--internal.$govuk-palette) {
42
43
  // Sass parses unquoted colours as colours, so we need to turn them into
43
44
  // strings before looking them up in the colour palette
44
45
  // https://sass-lang.com/documentation/values/strings#unquoted
@@ -51,7 +52,7 @@
51
52
  @if not $colour-variants {
52
53
  // To ease the transition between the brand palette and old GOV.UK Frontend colours
53
54
  // we'll automatically convert old colour names into their equivalent in the palette
54
- @if $colours == $_govuk-palette {
55
+ @if $colours == colours-palette--internal.$govuk-palette {
55
56
  $corresponding-colour: _govuk-corresponding-brand-colour($colour);
56
57
  @if $corresponding-colour {
57
58
  @return $corresponding-colour;
@@ -80,7 +81,7 @@
80
81
  }
81
82
 
82
83
  @function _govuk-corresponding-brand-colour($colour) {
83
- $pre-brand-colour: map.get($_govuk-pre-brand-colours, $colour);
84
+ $pre-brand-colour: map.get(colours-palette--internal.$govuk-pre-brand-colours, $colour);
84
85
 
85
86
  @if $pre-brand-colour {
86
87
  $corresponding-colour: list.nth($pre-brand-colour, 1);
@@ -89,7 +90,7 @@
89
90
  $corresponding-govuk-colour-call: 'govuk-colour("#{$corresponding-colour}", $variant: "#{$corresponding-variant}")';
90
91
 
91
92
  @if _should-warn("pre-brand-colour") {
92
- @warn _warning-text("pre-brand-colour",
93
+ @warn warnings--internal.warning-text("pre-brand-colour",
93
94
  "We've updated GOV.UK Frontend's colour palette. Use " +
94
95
  "`#{$corresponding-govuk-colour-call}` instead of " +
95
96
  "`govuk-colour(\"#{$colour}\")`. The `#{$colour}` colour is " +
@@ -132,7 +133,7 @@
132
133
  }
133
134
 
134
135
  @if map.has-key($govuk-functional-colours, $colour) {
135
- $value: _govuk-resolve-colour(map.get($govuk-functional-colours, $colour));
136
+ $value: govuk-resolve-colour(map.get($govuk-functional-colours, $colour));
136
137
 
137
138
  @return var(--govuk-#{$colour}-colour, #{$value});
138
139
  }
@@ -146,8 +147,8 @@
146
147
  /// @returns {Colour} The colour
147
148
  /// @throws if the `name` is present but falsy
148
149
  /// @throws if the `variant` is present but falsy
149
- /// @access private
150
- @function _govuk-resolve-colour($colour-reference) {
150
+ /// @access public
151
+ @function govuk-resolve-colour($colour-reference) {
151
152
  // If the reference is already a colour, return the colour
152
153
  @if meta.type-of($colour-reference) == "color" {
153
154
  @return $colour-reference;
@@ -174,6 +175,24 @@
174
175
  @return govuk-colour($name, $variant: $variant);
175
176
  }
176
177
 
178
+ /// Organisation colour aliases
179
+ ///
180
+ /// Some organisations have been renamed within our code over time. Here we
181
+ /// map the prior key to the new equivalent key.
182
+ ///
183
+ /// Note: This is for internal renames only. If a department has changed name
184
+ /// or brand colour in a machinery of government change, it should be added to
185
+ /// $govuk-colours-organisations as a new entry with any superseded
186
+ /// organisations marked deprecated.
187
+ ///
188
+ /// @type Map
189
+ ///
190
+ /// @access private
191
+
192
+ $_govuk-colours-organisations-aliases: (
193
+ "department-for-business-and-trade": "department-for-business-trade"
194
+ );
195
+
177
196
  /// Get the colour for a government organisation
178
197
  ///
179
198
  /// @param {String} $organisation - Organisation name, lowercase, hyphenated
@@ -205,7 +224,7 @@
205
224
  // If the organisation has a deprecation message associated with it
206
225
  // (e.g. it has ceased to exist) then output a warning.
207
226
  @if map.has-key($org-colour, "deprecation-message") and _should-warn("organisation-colours") {
208
- @warn _warning-text(
227
+ @warn warnings--internal.warning-text(
209
228
  "organisation-colours",
210
229
  map.get($org-colour, "deprecation-message")
211
230
  );
@@ -218,4 +237,3 @@
218
237
  }
219
238
  }
220
239
 
221
- /*# sourceMappingURL=_colour.scss.map */
@@ -0,0 +1,2 @@
1
+ @forward "device-pixels";
2
+
@@ -1,3 +1,5 @@
1
+ @use "sass:list";
2
+
1
3
  ////
2
4
  /// @group helpers
3
5
  ////
@@ -27,8 +29,6 @@
27
29
  ///
28
30
  /// @access public
29
31
 
30
- @use "sass:list";
31
-
32
32
  @mixin govuk-device-pixel-ratio($ratio: 2) {
33
33
  @media only screen and (-webkit-min-device-pixel-ratio: $ratio),
34
34
  only screen and (min-resolution: #{($ratio * 96)}dpi),
@@ -37,4 +37,3 @@
37
37
  }
38
38
  }
39
39
 
40
- /*# sourceMappingURL=_device-pixels.scss.map */
@@ -0,0 +1,2 @@
1
+ @forward "focused";
2
+
@@ -2,6 +2,9 @@
2
2
  /// @group helpers/accessibility
3
3
  ////
4
4
 
5
+ @use "../settings/measurements" as *;
6
+ @use "colour" as *;
7
+
5
8
  /// Focused text
6
9
  ///
7
10
  /// Provides an outline to clearly indicate when the target element is focused.
@@ -91,4 +94,3 @@
91
94
  box-shadow: inset 0 0 0 $govuk-border-width-form-element govuk-functional-colour(input-border);
92
95
  }
93
96
 
94
- /*# sourceMappingURL=_focused.scss.map */
@@ -2,7 +2,8 @@
2
2
  /// @group helpers
3
3
  ////
4
4
 
5
- @import "../tools/exports";
5
+ @use "../tools/exports" as *;
6
+ @use "../tools/font-url" as *;
6
7
 
7
8
  /// Font Face - GDS Transport
8
9
  ///
@@ -11,7 +12,7 @@
11
12
  ///
12
13
  /// @access private
13
14
 
14
- @mixin _govuk-font-face-gds-transport {
15
+ @mixin gds-transport {
15
16
  @include govuk-exports("govuk/helpers/font-faces") {
16
17
  @at-root {
17
18
  /*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */ /* stylelint-disable-line scss/comment-no-loud */
@@ -19,23 +20,22 @@
19
20
  font-family: "GDS Transport";
20
21
  font-style: normal;
21
22
  font-weight: normal;
23
+ font-display: fallback;
22
24
  src:
23
25
  govuk-font-url("light-94a07e06a1-v2.woff2") format("woff2"),
24
26
  govuk-font-url("light-f591b13f7d-v2.woff") format("woff");
25
- font-display: fallback;
26
27
  }
27
28
 
28
29
  @font-face {
29
30
  font-family: "GDS Transport";
30
31
  font-style: normal;
31
32
  font-weight: bold;
33
+ font-display: fallback;
32
34
  src:
33
35
  govuk-font-url("bold-b542beb274-v2.woff2") format("woff2"),
34
36
  govuk-font-url("bold-affa96571d-v2.woff") format("woff");
35
- font-display: fallback;
36
37
  }
37
38
  }
38
39
  }
39
40
  }
40
41
 
41
- /*# sourceMappingURL=_font-faces.scss.map */
@@ -0,0 +1,2 @@
1
+ @forward "grid";
2
+
@@ -3,6 +3,9 @@
3
3
  ////
4
4
  @use "sass:map";
5
5
 
6
+ @use "../settings/measurements" as *;
7
+ @use "media-queries" as *;
8
+
6
9
  /// Grid width percentage
7
10
  ///
8
11
  /// @param {String} $key - Name of grid width (e.g. two-thirds)
@@ -61,4 +64,3 @@
61
64
  }
62
65
  }
63
66
 
64
- /*# sourceMappingURL=_grid.scss.map */
@@ -0,0 +1,2 @@
1
+ @forward "index";
2
+