design_system 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +91 -0
  4. data/Rakefile +47 -0
  5. data/app/assets/config/design_system_manifest.js +0 -0
  6. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/_base.scss +3 -0
  7. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/all.scss +7 -0
  8. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/_all.scss +8 -0
  9. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/_index.scss +38 -0
  10. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/accordion/_accordion.scss +2 -0
  11. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/accordion/_index.scss +368 -0
  12. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/back-link/_back-link.scss +2 -0
  13. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/back-link/_index.scss +81 -0
  14. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/breadcrumbs/_breadcrumbs.scss +2 -0
  15. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/breadcrumbs/_index.scss +132 -0
  16. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/button/_button.scss +2 -0
  17. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/button/_index.scss +260 -0
  18. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/character-count/_character-count.scss +2 -0
  19. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/character-count/_index.scss +42 -0
  20. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/checkboxes/_checkboxes.scss +2 -0
  21. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/checkboxes/_index.scss +309 -0
  22. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/cookie-banner/_cookie-banner.scss +2 -0
  23. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/cookie-banner/_index.scss +57 -0
  24. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/date-input/_date-input.scss +2 -0
  25. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/date-input/_index.scss +26 -0
  26. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/details/_details.scss +2 -0
  27. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/details/_index.scss +137 -0
  28. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/error-message/_error-message.scss +2 -0
  29. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/error-message/_index.scss +12 -0
  30. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/error-summary/_error-summary.scss +2 -0
  31. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/error-summary/_index.scss +54 -0
  32. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/exit-this-page/_exit-this-page.scss +2 -0
  33. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/exit-this-page/_index.scss +90 -0
  34. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/fieldset/_fieldset.scss +2 -0
  35. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/fieldset/_index.scss +67 -0
  36. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/file-upload/_file-upload.scss +2 -0
  37. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/file-upload/_index.scss +216 -0
  38. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/footer/_footer.scss +2 -0
  39. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/footer/_index.scss +192 -0
  40. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/header/_header.scss +2 -0
  41. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/header/_index.scss +546 -0
  42. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/hint/_hint.scss +2 -0
  43. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/hint/_index.scss +43 -0
  44. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/input/_index.scss +166 -0
  45. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/input/_input.scss +2 -0
  46. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/inset-text/_index.scss +24 -0
  47. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/inset-text/_inset-text.scss +2 -0
  48. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/label/_index.scss +44 -0
  49. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/label/_label.scss +2 -0
  50. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/notification-banner/_index.scss +91 -0
  51. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/notification-banner/_notification-banner.scss +2 -0
  52. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/pagination/_index.scss +226 -0
  53. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/pagination/_pagination.scss +2 -0
  54. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/panel/_index.scss +56 -0
  55. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/panel/_panel.scss +2 -0
  56. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/password-input/_index.scss +55 -0
  57. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/password-input/_password-input.scss +2 -0
  58. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/phase-banner/_index.scss +34 -0
  59. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/phase-banner/_phase-banner.scss +2 -0
  60. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/radios/_index.scss +326 -0
  61. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/radios/_radios.scss +2 -0
  62. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/select/_index.scss +57 -0
  63. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/select/_select.scss +2 -0
  64. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/service-navigation/_index.scss +252 -0
  65. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/service-navigation/_service-navigation.scss +2 -0
  66. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/skip-link/_index.scss +50 -0
  67. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/skip-link/_skip-link.scss +2 -0
  68. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/summary-list/_index.scss +267 -0
  69. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/summary-list/_summary-list.scss +2 -0
  70. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/table/_index.scss +73 -0
  71. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/table/_table.scss +2 -0
  72. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/tabs/_index.scss +132 -0
  73. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/tabs/_tabs.scss +2 -0
  74. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/tag/_index.scss +95 -0
  75. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/tag/_tag.scss +2 -0
  76. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/task-list/_index.scss +77 -0
  77. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/task-list/_task-list.scss +2 -0
  78. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/textarea/_index.scss +48 -0
  79. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/textarea/_textarea.scss +2 -0
  80. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/warning-text/_index.scss +64 -0
  81. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/components/warning-text/_warning-text.scss +2 -0
  82. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_all.scss +8 -0
  83. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_global-styles.scss +18 -0
  84. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_govuk-frontend-properties.scss +13 -0
  85. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_index.scss +6 -0
  86. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_links.scss +40 -0
  87. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_lists.scss +65 -0
  88. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_section-break.scss +49 -0
  89. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/core/_typography.scss +187 -0
  90. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_all.scss +8 -0
  91. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_clearfix.scss +15 -0
  92. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_colour.scss +165 -0
  93. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_device-pixels.scss +36 -0
  94. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_focused.scss +57 -0
  95. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_font-faces.scss +39 -0
  96. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_grid.scss +61 -0
  97. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_index.scss +12 -0
  98. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_links.scss +389 -0
  99. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_media-queries.scss +80 -0
  100. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_shape-arrow.scss +80 -0
  101. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_spacing.scss +171 -0
  102. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_typography.scss +286 -0
  103. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/helpers/_visually-hidden.scss +86 -0
  104. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/index.scss +9 -0
  105. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_all.scss +8 -0
  106. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_button-group.scss +78 -0
  107. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_form-group.scss +23 -0
  108. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_grid.scss +24 -0
  109. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_index.scss +6 -0
  110. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_main-wrapper.scss +53 -0
  111. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_template.scss +55 -0
  112. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/objects/_width-container.scss +75 -0
  113. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_all.scss +7 -0
  114. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_display.scss +24 -0
  115. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_index.scss +5 -0
  116. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_spacing.scss +84 -0
  117. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_text-align.scss +14 -0
  118. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_typography.scss +40 -0
  119. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/overrides/_width.scss +46 -0
  120. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_all.scss +8 -0
  121. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_assets.scss +82 -0
  122. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_colours-applied.scss +193 -0
  123. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_colours-organisations.scss +380 -0
  124. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_colours-palette.scss +35 -0
  125. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_global-styles.scss +13 -0
  126. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_index.scss +34 -0
  127. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_links.scss +47 -0
  128. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_measurements.scss +105 -0
  129. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_media-queries.scss +23 -0
  130. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_spacing.scss +76 -0
  131. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_typography-font.scss +50 -0
  132. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_typography-responsive.scss +315 -0
  133. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/settings/_warnings.scss +76 -0
  134. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_all.scss +8 -0
  135. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_exports.scss +33 -0
  136. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_font-url.scss +26 -0
  137. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_image-url.scss +26 -0
  138. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_index.scss +6 -0
  139. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_px-to-em.scss +20 -0
  140. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_px-to-rem.scss +20 -0
  141. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/tools/_rebrand.scss +63 -0
  142. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/utilities/_all.scss +8 -0
  143. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/utilities/_clearfix.scss +5 -0
  144. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/utilities/_index.scss +2 -0
  145. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/utilities/_visually-hidden.scss +9 -0
  146. data/app/assets/stylesheets/design_system/govuk-frontend-5.11.1/vendor/_sass-mq.scss +347 -0
  147. data/app/assets/stylesheets/design_system/govuk.scss +7 -0
  148. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/_index.scss +38 -0
  149. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/action-link/_action-link.scss +1 -0
  150. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/action-link/_index.scss +73 -0
  151. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/back-link/_back-link.scss +1 -0
  152. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/back-link/_index.scss +66 -0
  153. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/breadcrumb/_breadcrumb.scss +1 -0
  154. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/breadcrumb/_index.scss +138 -0
  155. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/button/_button.scss +1 -0
  156. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/button/_index.scss +257 -0
  157. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/card/_card.scss +1 -0
  158. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/card/_index.scss +321 -0
  159. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/character-count/_character-count.scss +1 -0
  160. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/character-count/_index.scss +19 -0
  161. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/checkboxes/_checkboxes.scss +1 -0
  162. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/checkboxes/_index.scss +155 -0
  163. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/contents-list/_contents-list.scss +1 -0
  164. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/contents-list/_index.scss +40 -0
  165. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/date-input/_date-input.scss +1 -0
  166. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/date-input/_index.scss +29 -0
  167. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/details/_details.scss +1 -0
  168. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/details/_index.scss +211 -0
  169. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/do-dont-list/_do-dont-list.scss +1 -0
  170. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/do-dont-list/_index.scss +23 -0
  171. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/error-message/_error-message.scss +1 -0
  172. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/error-message/_index.scss +17 -0
  173. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/error-summary/_error-summary.scss +1 -0
  174. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/error-summary/_index.scss +72 -0
  175. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/fieldset/_fieldset.scss +1 -0
  176. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/fieldset/_index.scss +65 -0
  177. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/footer/_footer.scss +1 -0
  178. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/footer/_index.scss +87 -0
  179. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header-base.scss +495 -0
  180. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header-organisation.scss +126 -0
  181. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header-service.scss +60 -0
  182. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header-transactional.scss +61 -0
  183. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header-white.scss +117 -0
  184. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_header.scss +1 -0
  185. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/header/_index.scss +5 -0
  186. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/hero/_hero.scss +1 -0
  187. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/hero/_index.scss +187 -0
  188. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/hint/_hint.scss +1 -0
  189. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/hint/_index.scss +51 -0
  190. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/images/_images.scss +1 -0
  191. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/images/_index.scss +48 -0
  192. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/input/_index.scss +149 -0
  193. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/input/_input.scss +1 -0
  194. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/inset-text/_index.scss +28 -0
  195. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/inset-text/_inset-text.scss +1 -0
  196. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/label/_index.scss +53 -0
  197. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/label/_label.scss +1 -0
  198. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/pagination/_index.scss +95 -0
  199. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/pagination/_pagination.scss +1 -0
  200. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/panel/_index.scss +57 -0
  201. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/panel/_panel.scss +1 -0
  202. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/radios/_index.scss +180 -0
  203. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/radios/_radios.scss +1 -0
  204. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/select/_index.scss +44 -0
  205. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/select/_select.scss +1 -0
  206. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/skip-link/_index.scss +34 -0
  207. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/skip-link/_skip-link.scss +1 -0
  208. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/summary-list/_index.scss +183 -0
  209. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/summary-list/_summary-list.scss +1 -0
  210. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tables/_index.scss +181 -0
  211. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tables/_tables.scss +1 -0
  212. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tabs/_index.scss +120 -0
  213. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tabs/_tabs.scss +1 -0
  214. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tag/_index.scss +92 -0
  215. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/tag/_tag.scss +1 -0
  216. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/task-list/_index.scss +101 -0
  217. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/task-list/_task-list.scss +1 -0
  218. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/textarea/_index.scss +30 -0
  219. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/textarea/_textarea.scss +1 -0
  220. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/warning-callout/_index.scss +19 -0
  221. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/components/warning-callout/_warning-callout.scss +1 -0
  222. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/_index.scss +11 -0
  223. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/all.scss +8 -0
  224. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/elements/_forms.scss +16 -0
  225. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/elements/_index.scss +8 -0
  226. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/elements/_links.scss +42 -0
  227. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/elements/_page.scss +43 -0
  228. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/elements/_table.scss +62 -0
  229. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/generic/_box-sizing.scss +26 -0
  230. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/generic/_font-face.scss +47 -0
  231. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/generic/_index.scss +6 -0
  232. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/objects/_form-group.scss +25 -0
  233. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/objects/_grid.scss +23 -0
  234. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/objects/_index.scss +8 -0
  235. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/objects/_main-wrapper.scss +96 -0
  236. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/objects/_width-container.scss +63 -0
  237. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_all.scss +8 -0
  238. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_breakpoints.scss +18 -0
  239. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_colours.scss +188 -0
  240. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_globals.scss +82 -0
  241. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_index.scss +10 -0
  242. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_spacing.scss +79 -0
  243. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_typography.scss +176 -0
  244. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/settings/_warnings.scss +82 -0
  245. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/styles/_icons.scss +105 -0
  246. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/styles/_index.scss +4 -0
  247. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/styles/_lists.scss +115 -0
  248. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/styles/_section-break.scss +71 -0
  249. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/styles/_typography.scss +297 -0
  250. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_all.scss +8 -0
  251. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_exports.scss +47 -0
  252. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_focused.scss +86 -0
  253. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_functions.scss +45 -0
  254. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_grid.scss +138 -0
  255. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_ifff.scss +19 -0
  256. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_index.scss +15 -0
  257. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_links.scss +184 -0
  258. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_mixins.scss +520 -0
  259. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_sass-mq.scss +79 -0
  260. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_shape-arrow.scss +91 -0
  261. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_spacing.scss +192 -0
  262. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/tools/_typography.scss +259 -0
  263. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_clearfix.scss +15 -0
  264. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_display.scss +15 -0
  265. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_float.scss +15 -0
  266. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_grid-widths.scss +97 -0
  267. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_index.scss +16 -0
  268. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_link-nowrap.scss +19 -0
  269. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_list-border.scss +20 -0
  270. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_reading-width.scss +16 -0
  271. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_spacing.scss +88 -0
  272. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_text-align.scss +19 -0
  273. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_typography.scss +72 -0
  274. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_visually-hidden.scss +20 -0
  275. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/utilities/_widths.scss +62 -0
  276. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/core/vendor/sass-mq.scss +316 -0
  277. data/app/assets/stylesheets/design_system/nhsuk-frontend-9.6.4/nhsuk.scss +1 -0
  278. data/app/assets/stylesheets/design_system/nhsuk.scss +5 -0
  279. data/app/controllers/concerns/design_system/branded.rb +21 -0
  280. data/app/helpers/css_helper.rb +13 -0
  281. data/app/helpers/design_system_helper.rb +113 -0
  282. data/app/javascript/design_system/controllers/hello_world_controller.js +7 -0
  283. data/app/javascript/design_system/controllers/show_password_controller.js +40 -0
  284. data/app/javascript/design_system/index.js +11 -0
  285. data/app/views/govuk/_navigation.html.erb +14 -0
  286. data/app/views/layouts/_alert_and_notice.html.erb +7 -0
  287. data/app/views/layouts/govuk/application.html.erb +196 -0
  288. data/app/views/layouts/govuk/full_page.html.erb +2 -0
  289. data/app/views/layouts/govuk/left_panel.html.erb +2 -0
  290. data/app/views/layouts/nhsuk/application.html.erb +132 -0
  291. data/app/views/layouts/nhsuk/full_page.html.erb +2 -0
  292. data/app/views/layouts/nhsuk/left_panel.html.erb +2 -0
  293. data/app/views/nhsuk/_navigation.html.erb +25 -0
  294. data/config/importmap.rb +4 -0
  295. data/config/initializers/govuk_form_builder_overrides.rb +128 -0
  296. data/config/routes.rb +3 -0
  297. data/lib/design_system/all.rb +3 -0
  298. data/lib/design_system/components/summary_list.rb +53 -0
  299. data/lib/design_system/components/tab.rb +20 -0
  300. data/lib/design_system/components/table.rb +68 -0
  301. data/lib/design_system/engine.rb +30 -0
  302. data/lib/design_system/generic/builders/base.rb +18 -0
  303. data/lib/design_system/generic/builders/button.rb +35 -0
  304. data/lib/design_system/generic/builders/callout.rb +28 -0
  305. data/lib/design_system/generic/builders/concerns/brand_derivable.rb +14 -0
  306. data/lib/design_system/generic/builders/elements/breadcrumbs.rb +45 -0
  307. data/lib/design_system/generic/builders/elements/form.rb +23 -0
  308. data/lib/design_system/generic/builders/elements/headings.rb +31 -0
  309. data/lib/design_system/generic/builders/fixed_elements.rb +38 -0
  310. data/lib/design_system/generic/builders/heading.rb +38 -0
  311. data/lib/design_system/generic/builders/link.rb +37 -0
  312. data/lib/design_system/generic/builders/notification.rb +43 -0
  313. data/lib/design_system/generic/builders/pagination_renderer.rb +85 -0
  314. data/lib/design_system/generic/builders/panel.rb +18 -0
  315. data/lib/design_system/generic/builders/summary_list.rb +84 -0
  316. data/lib/design_system/generic/builders/tab.rb +17 -0
  317. data/lib/design_system/generic/builders/table.rb +76 -0
  318. data/lib/design_system/generic/form_builder.rb +54 -0
  319. data/lib/design_system/generic.rb +15 -0
  320. data/lib/design_system/govuk/builders/button.rb +57 -0
  321. data/lib/design_system/govuk/builders/callout.rb +26 -0
  322. data/lib/design_system/govuk/builders/elements/breadcrumbs.rb +33 -0
  323. data/lib/design_system/govuk/builders/elements/headings.rb +18 -0
  324. data/lib/design_system/govuk/builders/fixed_elements.rb +17 -0
  325. data/lib/design_system/govuk/builders/heading.rb +11 -0
  326. data/lib/design_system/govuk/builders/link.rb +23 -0
  327. data/lib/design_system/govuk/builders/notification.rb +11 -0
  328. data/lib/design_system/govuk/builders/pagination_renderer.rb +80 -0
  329. data/lib/design_system/govuk/builders/panel.rb +18 -0
  330. data/lib/design_system/govuk/builders/summary_list.rb +44 -0
  331. data/lib/design_system/govuk/builders/tab.rb +56 -0
  332. data/lib/design_system/govuk/builders/table.rb +79 -0
  333. data/lib/design_system/govuk/form_builder.rb +430 -0
  334. data/lib/design_system/govuk.rb +19 -0
  335. data/lib/design_system/nhsuk/builders/button.rb +11 -0
  336. data/lib/design_system/nhsuk/builders/callout.rb +11 -0
  337. data/lib/design_system/nhsuk/builders/elements/breadcrumbs.rb +47 -0
  338. data/lib/design_system/nhsuk/builders/fixed_elements.rb +15 -0
  339. data/lib/design_system/nhsuk/builders/heading.rb +11 -0
  340. data/lib/design_system/nhsuk/builders/link.rb +21 -0
  341. data/lib/design_system/nhsuk/builders/notification.rb +17 -0
  342. data/lib/design_system/nhsuk/builders/pagination_renderer.rb +16 -0
  343. data/lib/design_system/nhsuk/builders/panel.rb +11 -0
  344. data/lib/design_system/nhsuk/builders/summary_list.rb +34 -0
  345. data/lib/design_system/nhsuk/builders/tab.rb +11 -0
  346. data/lib/design_system/nhsuk/builders/table.rb +68 -0
  347. data/lib/design_system/nhsuk/form_builder.rb +83 -0
  348. data/lib/design_system/nhsuk.rb +18 -0
  349. data/lib/design_system/registry.rb +40 -0
  350. data/lib/design_system/version.rb +3 -0
  351. data/lib/design_system.rb +7 -0
  352. data/lib/tasks/design_system_tasks.rake +4 -0
  353. data/lib/tasks/govuk.rake +122 -0
  354. data/lib/tasks/nhsuk.rake +108 -0
  355. data/public/design_system/static/design_system-0.7.0/design_system.js +1309 -0
  356. data/public/design_system/static/govuk-frontend-5.11.1/fonts/bold-affa96571d-v2.woff +0 -0
  357. data/public/design_system/static/govuk-frontend-5.11.1/fonts/bold-b542beb274-v2.woff2 +0 -0
  358. data/public/design_system/static/govuk-frontend-5.11.1/fonts/light-94a07e06a1-v2.woff2 +0 -0
  359. data/public/design_system/static/govuk-frontend-5.11.1/fonts/light-f591b13f7d-v2.woff +0 -0
  360. data/public/design_system/static/govuk-frontend-5.11.1/govuk-frontend.min.js +1 -0
  361. data/public/design_system/static/govuk-frontend-5.11.1/govuk-frontend.min.js.map +1 -0
  362. data/public/design_system/static/govuk-frontend-5.11.1/images/favicon.ico +0 -0
  363. data/public/design_system/static/govuk-frontend-5.11.1/images/favicon.svg +1 -0
  364. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-crest.svg +1 -0
  365. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-icon-180.png +0 -0
  366. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-icon-192.png +0 -0
  367. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-icon-512.png +0 -0
  368. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-icon-mask.svg +1 -0
  369. data/public/design_system/static/govuk-frontend-5.11.1/images/govuk-opengraph-image.png +0 -0
  370. data/public/design_system/static/govuk-frontend-5.11.1/manifest.json +39 -0
  371. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/favicon.ico +0 -0
  372. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/favicon.svg +1 -0
  373. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-crest.svg +1 -0
  374. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-icon-180.png +0 -0
  375. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-icon-192.png +0 -0
  376. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-icon-512.png +0 -0
  377. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-icon-mask.svg +1 -0
  378. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/images/govuk-opengraph-image.png +0 -0
  379. data/public/design_system/static/govuk-frontend-5.11.1/rebrand/manifest.json +39 -0
  380. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/apple-touch-icon-180x180.png +0 -0
  381. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/apple-touch-icon.png +0 -0
  382. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/favicon-192x192.png +0 -0
  383. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/favicon.ico +0 -0
  384. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/favicon.png +0 -0
  385. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/favicon.svg +3 -0
  386. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/largetile-310x310.png +0 -0
  387. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/mediumtile-144x144.png +0 -0
  388. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/mediumtile-150x150.png +0 -0
  389. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/smalltile-70x70.png +0 -0
  390. data/public/design_system/static/nhsuk-frontend-9.6.4/favicons/widetile-310x150.png +0 -0
  391. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-arrow-left.svg +3 -0
  392. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-arrow-right-circle.svg +4 -0
  393. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-arrow-right.svg +3 -0
  394. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-chevron-left.svg +3 -0
  395. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-chevron-right.svg +3 -0
  396. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-close.svg +3 -0
  397. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-cross.svg +4 -0
  398. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-emdash-small.svg +3 -0
  399. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-emdash.svg +3 -0
  400. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-minus.svg +4 -0
  401. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-plus.svg +4 -0
  402. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-search.svg +3 -0
  403. data/public/design_system/static/nhsuk-frontend-9.6.4/icons/icon-tick.svg +3 -0
  404. data/public/design_system/static/nhsuk-frontend-9.6.4/logos/logo-nhs.svg +5 -0
  405. data/public/design_system/static/nhsuk-frontend-9.6.4/logos/nhs-logo.png +0 -0
  406. data/public/design_system/static/nhsuk-frontend-9.6.4/logos/open-graph.png +0 -0
  407. data/public/design_system/static/nhsuk-frontend-9.6.4/nhsuk.js +4 -0
  408. data/public/design_system/static/nhsuk-frontend-9.6.4/nhsuk.min.js +1 -0
  409. data/public/design_system/static/stimulus-3.2.2/stimulus-loading.js +87 -0
  410. data/public/design_system/static/tailwind-4.1.6/index.js +8 -0
  411. metadata +517 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 57a4557e70bd03738470403e3267f8e4cd7560950d17619ec86f766d5284dbba
4
+ data.tar.gz: 6b3bb953b829306cdcf28a1a5d35bbf9ca102b352d24e116e771b66f974915ca
5
+ SHA512:
6
+ metadata.gz: 39fe6fd17562c4f3afcce0b19a25172a275fc7435e2a5bd8c029e6550d975aad5ff6e8dfc95b925fd3530338d690f7ec3ff00fb2d0bb3ecd8f9192c7434b8cac
7
+ data.tar.gz: be52770529a9cea0f95fdd3c8d21f0194b8bc1757a120476794132a824ba12e298bd9e153f8285c19455db9eeb4280844530b1b5820ce79873589eadb9ea30f3
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright Health Data Insight CIC 2025
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # DesignSystem
2
+
3
+ DesignSystem is a Ruby on Rails engine that enables consistent, compliant web applications across design systems including GOV.UK, NHS. It is designed to be extensible, and design systems are being developed for the National Disease Registration Service (NDRS), and Health Data Insight (HDI).
4
+
5
+ The gem provides unified form builders, UI components (tables, buttons, navigation, tabs), layouts, and styling that automatically adapt to each design system's specific requirements and branding guidelines.
6
+
7
+ Key features include:
8
+
9
+ - Multi-brand support: Seamlessly switch between GOV.UK, NHS and other design systems
10
+ - Unified API: Single set of helper methods (ds_form_with, ds_button_tag, ds_table, etc.) that work across all brands
11
+ - Signature parity: `ds_` prefixed helper methods have the same signature as their Rails equivalents (where possible)
12
+ - Form builders: Brand-specific form builders with automatic styling and accessibility features
13
+ - Component library: Pre-built components like tables, summary lists, tabs, navigation, and notifications
14
+ - Frontend integration: Includes bundled frontend assets and JavaScript for each design system
15
+ - Rails integration: Built as a Rails engine with Stimulus controllers for interactive components
16
+ - The gem abstracts away the complexity of working with different design systems, allowing developers to build compliant applications without managing brand-specific implementations manually.
17
+
18
+ ## Usage
19
+
20
+ How to use the plugin.
21
+
22
+ ## Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem "design_system"
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```bash
33
+ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```bash
39
+ gem install design_system
40
+ ```
41
+
42
+ Add the following to `app/javascript/controllers/index.js`, after `import { application } from './application'`:
43
+
44
+ ```javascript
45
+ import { registerControllers } from 'design_system/controllers'
46
+ registerControllers(application)
47
+ ```
48
+
49
+ ## Updating Frontends
50
+
51
+ ### GOVUK Frontend (currently v5.9.0)
52
+
53
+ ```bash
54
+ # Automatically fetch the latest
55
+ bundle exec rake app:make_govuk
56
+
57
+ # Update to a specific version
58
+ bundle exec rake app:make_govuk\[5.9.0\]
59
+ ```
60
+
61
+ ### NHSUK Frontend (currently v9.3.0)
62
+
63
+ ```bash
64
+ # Automatically fetch the latest
65
+ bundle exec rake app:make_nhsuk
66
+
67
+ # Update to a specific version
68
+ bundle exec rake app:make_nhsuk\[9.3.0\]
69
+ ```
70
+
71
+ ### Shared Frontend Code
72
+
73
+ Before releasing a new version of the gem, rebuild the shared javascript code using:
74
+
75
+ ```bash
76
+ bundle exec rake js:build
77
+ ```
78
+
79
+ ## Contributing
80
+
81
+ Contribution directions go here.
82
+
83
+ Created using:
84
+
85
+ ```bash
86
+ rails plugin new design_system -MOC --skip-system-test --full --no-mountable
87
+ ```
88
+
89
+ ## License
90
+
91
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,47 @@
1
+ require "bundler/setup"
2
+
3
+ APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
4
+ load "rails/tasks/engine.rake"
5
+
6
+ load "rails/tasks/statistics.rake"
7
+
8
+ require "bundler/gem_tasks"
9
+ require 'ndr_dev_support/tasks'
10
+
11
+ # This class is responsible for building the JavaScript for the design system.
12
+ class JsBuilder
13
+ extend Rake::FileUtilsExt
14
+
15
+ def self.build(watch: false)
16
+ require 'fileutils'
17
+
18
+ output_dir = "public/design_system/static/design_system-#{DesignSystem::VERSION}"
19
+ mkdir_p(output_dir)
20
+
21
+ command = 'npx esbuild app/javascript/design_system/index.js --bundle ' \
22
+ "--outfile=#{output_dir}/design_system.js --format=esm"
23
+ command += " --watch" if watch
24
+
25
+ if watch
26
+ puts "Watching for changes... Press Ctrl+C to stop"
27
+ trap('INT') do
28
+ puts "\nStopping watch mode"
29
+ exit
30
+ end
31
+ end
32
+
33
+ sh command
34
+ end
35
+ end
36
+
37
+ namespace :js do
38
+ desc 'Build the JavaScript for the design system'
39
+ task :build do
40
+ JsBuilder.build(watch: false)
41
+ end
42
+
43
+ desc 'Watch for changes and rebuild the JavaScript for the design system'
44
+ task :watch do
45
+ JsBuilder.build(watch: true)
46
+ end
47
+ end
File without changes
@@ -0,0 +1,3 @@
1
+ @import "settings/index";
2
+ @import "tools/index";
3
+ @import "helpers/index";
@@ -0,0 +1,7 @@
1
+ @import "index";
2
+
3
+ @include _warning(
4
+ "import-using-all",
5
+ "Importing using 'govuk/all' is deprecated. Update your import statement to import 'govuk/index'.",
6
+ $silence-further-warnings: false
7
+ );
@@ -0,0 +1,8 @@
1
+ @import "../settings/warnings";
2
+ @import "index";
3
+
4
+ @include _warning(
5
+ "import-using-all",
6
+ "Importing using 'govuk/components/all' is deprecated. Update your import statement to import 'govuk/components/index'.",
7
+ $silence-further-warnings: false
8
+ );
@@ -0,0 +1,38 @@
1
+ @import "../base";
2
+
3
+ @import "accordion/index";
4
+ @import "back-link/index";
5
+ @import "breadcrumbs/index";
6
+ @import "button/index";
7
+ @import "character-count/index";
8
+ @import "checkboxes/index";
9
+ @import "cookie-banner/index";
10
+ @import "date-input/index";
11
+ @import "details/index";
12
+ @import "error-message/index";
13
+ @import "error-summary/index";
14
+ @import "exit-this-page/index";
15
+ @import "fieldset/index";
16
+ @import "file-upload/index";
17
+ @import "footer/index";
18
+ @import "header/index";
19
+ @import "hint/index";
20
+ @import "input/index";
21
+ @import "inset-text/index";
22
+ @import "label/index";
23
+ @import "notification-banner/index";
24
+ @import "pagination/index";
25
+ @import "panel/index";
26
+ @import "password-input/index";
27
+ @import "phase-banner/index";
28
+ @import "radios/index";
29
+ @import "select/index";
30
+ @import "service-navigation/index";
31
+ @import "skip-link/index";
32
+ @import "summary-list/index";
33
+ @import "table/index";
34
+ @import "tabs/index";
35
+ @import "tag/index";
36
+ @import "task-list/index";
37
+ @import "textarea/index";
38
+ @import "warning-text/index";
@@ -0,0 +1,2 @@
1
+ @import "../../base";
2
+ @import "./index";
@@ -0,0 +1,368 @@
1
+ @include govuk-exports("govuk/component/accordion") {
2
+ $govuk-accordion-base-colour: govuk-colour("black");
3
+ $govuk-accordion-hover-colour: govuk-colour("light-grey");
4
+ $govuk-accordion-icon-focus-colour: $govuk-focus-colour;
5
+ $govuk-accordion-bottom-border-width: 1px;
6
+
7
+ .govuk-accordion {
8
+ @include govuk-responsive-margin(6, "bottom");
9
+ }
10
+
11
+ .govuk-accordion__section {
12
+ padding-top: govuk-spacing(3);
13
+ }
14
+
15
+ .govuk-accordion__section-heading {
16
+ // Override browser defaults to ensure consistent element height
17
+ margin-top: 0;
18
+ margin-bottom: 0;
19
+
20
+ padding-top: govuk-spacing(3);
21
+ padding-bottom: govuk-spacing(3);
22
+ }
23
+
24
+ .govuk-accordion__section-button {
25
+ @include govuk-font($size: 24, $weight: bold);
26
+ @include govuk-text-colour;
27
+
28
+ display: block;
29
+ margin-bottom: 0;
30
+ padding-top: govuk-spacing(3);
31
+ }
32
+
33
+ // Remove the bottom margin from the last item inside the content
34
+ .govuk-accordion__section-content > :last-child {
35
+ margin-bottom: 0;
36
+ }
37
+
38
+ // GOV.UK Frontend JavaScript enabled
39
+ .govuk-frontend-supported {
40
+ .govuk-accordion {
41
+ // Border at the bottom of the whole accordion
42
+ border-bottom: $govuk-accordion-bottom-border-width solid $govuk-border-colour;
43
+ }
44
+
45
+ .govuk-accordion__section {
46
+ padding-top: 0;
47
+ }
48
+
49
+ // Hide the body of collapsed sections by default for browsers that lack
50
+ // support for `content-visibility` paired with [hidden=until-found]
51
+ .govuk-accordion__section-content {
52
+ display: none;
53
+
54
+ @include govuk-responsive-padding(3, "top");
55
+ @include govuk-responsive-padding(8, "bottom");
56
+ }
57
+
58
+ // Hide the body of collapsed sections using `content-visibility` to enable
59
+ // page search within [hidden=until-found] regions where browser supported
60
+ .govuk-accordion__section-content[hidden] {
61
+ @supports (content-visibility: hidden) {
62
+ content-visibility: hidden;
63
+ display: inherit;
64
+ }
65
+
66
+ // Hide the padding of collapsed sections
67
+ padding-top: 0;
68
+ padding-bottom: 0;
69
+ }
70
+
71
+ // Show the body of expanded sections
72
+ .govuk-accordion__section--expanded .govuk-accordion__section-content {
73
+ display: block;
74
+ }
75
+
76
+ .govuk-accordion__show-all {
77
+ @include govuk-font($size: 19);
78
+ position: relative;
79
+ z-index: 1;
80
+
81
+ margin-bottom: 9px;
82
+ padding: govuk-spacing(1) 2px govuk-spacing(1) 0;
83
+
84
+ border-width: 0;
85
+
86
+ color: $govuk-link-colour;
87
+ background: none;
88
+
89
+ cursor: pointer;
90
+ -webkit-appearance: none;
91
+
92
+ @include govuk-media-query($from: tablet) {
93
+ margin-bottom: 14px;
94
+ }
95
+
96
+ // Remove default button focus outline in Firefox
97
+ &::-moz-focus-inner {
98
+ padding: 0;
99
+ border: 0;
100
+ }
101
+
102
+ &:hover {
103
+ color: $govuk-accordion-base-colour;
104
+ background: $govuk-accordion-hover-colour;
105
+ // The focus state adds a box-shadow to the top and bottom of the
106
+ // button. We add a grey box-shadow on hover too, to make the height of
107
+ // the hover state match the height of the focus state.
108
+ box-shadow:
109
+ 0 -2px $govuk-accordion-hover-colour,
110
+ 0 4px $govuk-accordion-hover-colour;
111
+
112
+ .govuk-accordion__section-toggle-text {
113
+ color: $govuk-accordion-base-colour;
114
+ }
115
+
116
+ .govuk-accordion-nav__chevron {
117
+ color: $govuk-accordion-base-colour;
118
+ background: $govuk-accordion-base-colour;
119
+ }
120
+
121
+ .govuk-accordion-nav__chevron::after {
122
+ color: $govuk-accordion-hover-colour;
123
+ }
124
+ }
125
+
126
+ &:focus {
127
+ @include govuk-focused-text;
128
+
129
+ .govuk-accordion-nav__chevron {
130
+ background: $govuk-accordion-base-colour;
131
+ }
132
+
133
+ .govuk-accordion-nav__chevron::after {
134
+ color: $govuk-accordion-icon-focus-colour;
135
+ }
136
+ }
137
+ }
138
+
139
+ .govuk-accordion__section-heading {
140
+ padding: 0;
141
+ }
142
+
143
+ // Create Chevron icon aligned with text
144
+ .govuk-accordion-nav__chevron {
145
+ box-sizing: border-box;
146
+ display: inline-block;
147
+
148
+ position: relative;
149
+
150
+ // Set size using rems so icon scales with text
151
+ width: govuk-px-to-rem(20px);
152
+ height: govuk-px-to-rem(20px);
153
+
154
+ border: govuk-px-to-rem(1px) solid;
155
+ border-radius: 50%;
156
+
157
+ vertical-align: middle;
158
+
159
+ // Create inner chevron arrow
160
+ &::after {
161
+ content: "";
162
+ box-sizing: border-box;
163
+ display: block;
164
+
165
+ position: absolute;
166
+ bottom: govuk-px-to-rem(5px);
167
+ left: govuk-px-to-rem(6px);
168
+
169
+ width: govuk-px-to-rem(6px);
170
+ height: govuk-px-to-rem(6px);
171
+
172
+ transform: rotate(-45deg);
173
+
174
+ border-top: govuk-px-to-rem(2px) solid;
175
+ border-right: govuk-px-to-rem(2px) solid;
176
+ }
177
+ }
178
+
179
+ // Rotate icon to create "Down" version
180
+ .govuk-accordion-nav__chevron--down {
181
+ transform: rotate(180deg);
182
+ }
183
+
184
+ .govuk-accordion__section-button {
185
+ width: 100%;
186
+
187
+ padding: govuk-spacing(2) 0 0;
188
+
189
+ border: 0;
190
+
191
+ border-top: $govuk-accordion-bottom-border-width solid $govuk-border-colour;
192
+
193
+ // Visually separate the section from the one underneath when user changes
194
+ // colours in their browser. See
195
+ // https://github.com/alphagov/govuk-frontend/issues/2321#issuecomment-924201488
196
+ border-bottom: govuk-spacing(2) solid transparent;
197
+
198
+ color: $govuk-text-colour;
199
+ background: none;
200
+
201
+ text-align: left;
202
+ // Section headers have a pointer cursor as an additional affordance
203
+ cursor: pointer;
204
+ -webkit-appearance: none;
205
+
206
+ @include govuk-media-query($from: tablet) {
207
+ padding-bottom: govuk-spacing(2);
208
+ }
209
+
210
+ &:active {
211
+ color: $govuk-link-active-colour;
212
+ background: none;
213
+ }
214
+
215
+ &:hover {
216
+ color: $govuk-accordion-base-colour;
217
+ background: $govuk-accordion-hover-colour;
218
+
219
+ .govuk-accordion__section-toggle-text {
220
+ color: $govuk-accordion-base-colour;
221
+ }
222
+
223
+ .govuk-accordion-nav__chevron {
224
+ color: $govuk-accordion-base-colour;
225
+ background: $govuk-accordion-base-colour;
226
+ }
227
+
228
+ .govuk-accordion-nav__chevron::after {
229
+ color: $govuk-accordion-hover-colour;
230
+ }
231
+ }
232
+
233
+ &:focus {
234
+ // Remove default focus border around button as styling is being applied
235
+ // to inner text elements that receive focus
236
+ outline: 0;
237
+
238
+ .govuk-accordion__section-heading-text-focus,
239
+ .govuk-accordion__section-summary-focus,
240
+ .govuk-accordion__section-toggle-focus {
241
+ @include govuk-focused-text;
242
+ }
243
+
244
+ .govuk-accordion-nav__chevron {
245
+ color: $govuk-accordion-base-colour;
246
+ background: $govuk-accordion-base-colour;
247
+ }
248
+
249
+ .govuk-accordion-nav__chevron::after {
250
+ color: $govuk-accordion-icon-focus-colour;
251
+ }
252
+ }
253
+
254
+ // Remove default button focus outline in Firefox
255
+ &::-moz-focus-inner {
256
+ padding: 0;
257
+ border: 0;
258
+ }
259
+ }
260
+
261
+ // Remove the transparent border when the section is expanded to make it
262
+ // clear that the heading relates to the content below. Adjust padding to
263
+ // maintain the height of the element. See
264
+ // https://github.com/alphagov/govuk-frontend/pull/2257#issuecomment-951920798
265
+ .govuk-accordion__section--expanded .govuk-accordion__section-button {
266
+ padding-bottom: govuk-spacing(3);
267
+ border-bottom: 0;
268
+
269
+ @include govuk-media-query($from: tablet) {
270
+ padding-bottom: govuk-spacing(4);
271
+ }
272
+ }
273
+
274
+ // As Chevron icon is vertically aligned it overlaps with the focus state
275
+ // bottom border – this adds some spacing
276
+ .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus {
277
+ padding-bottom: 3px;
278
+
279
+ @include govuk-media-query($from: desktop) {
280
+ padding-bottom: 2px;
281
+ }
282
+ }
283
+
284
+ .govuk-accordion__section-toggle,
285
+ .govuk-accordion__section-heading-text,
286
+ .govuk-accordion__section-summary {
287
+ display: block;
288
+ margin-bottom: 13px;
289
+
290
+ .govuk-accordion__section-heading-text-focus,
291
+ .govuk-accordion__section-summary-focus,
292
+ .govuk-accordion__section-toggle-focus {
293
+ display: inline;
294
+ }
295
+ }
296
+
297
+ // Add toggle link with Chevron icon on left.
298
+ .govuk-accordion__section-toggle {
299
+ @include govuk-font-size($size: 19);
300
+ @include govuk-typography-weight-regular;
301
+ color: $govuk-link-colour;
302
+ }
303
+
304
+ // Add space between the icon and text. Avoid applying spacing directly to
305
+ // the icon as the use of `transform` will change the placement of any
306
+ // margins.
307
+ .govuk-accordion__show-all-text,
308
+ .govuk-accordion__section-toggle-text {
309
+ margin-left: govuk-spacing(1);
310
+ vertical-align: middle;
311
+ }
312
+
313
+ // Background colour adjustment when user changes colours in Firefox
314
+ //
315
+ // When user changes colours in Firefox, text colour inside <button> is
316
+ // always black (regardless of the custom colours the user has set). This is
317
+ // fine when the text in the button is not nested inside another element
318
+ // because when user changes colours in Firefox, the immediate background
319
+ // colour of buttons is always white (again, regardless of user's custom
320
+ // colours).
321
+ //
322
+ // However, when the text inside <button> is wrapped inside another element
323
+ // AND that element sets a background colour, the text colour is still black
324
+ // but the background of that nested element gets the user's custom
325
+ // background colour. When the custom background is a lighter hue, the
326
+ // contrast might be sufficient. But if the user's custom background colour
327
+ // is a darker colour, the contrast with the text might not be sufficient.
328
+ //
329
+ // To ensure sufficient contrast, override the background colour set by the
330
+ // focus state on the nested elements to be transparent.
331
+ //
332
+ // Also override the background colour of the Show/Hide chevrons which set a
333
+ // background colour on hover.
334
+ @media screen and (forced-colors: active) {
335
+ .govuk-accordion__show-all:hover,
336
+ .govuk-accordion__section-button:hover {
337
+ .govuk-accordion-nav__chevron {
338
+ background-color: transparent;
339
+ }
340
+ }
341
+
342
+ .govuk-accordion__show-all:focus,
343
+ .govuk-accordion__section-button:focus {
344
+ .govuk-accordion__section-heading-text-focus,
345
+ .govuk-accordion__section-summary-focus,
346
+ .govuk-accordion__section-toggle-focus,
347
+ .govuk-accordion-nav__chevron {
348
+ background: transparent;
349
+ background-color: transparent;
350
+ }
351
+ }
352
+ }
353
+
354
+ // For devices that can't hover such as touch devices,
355
+ // remove hover state as it can be stuck in that state (iOS).
356
+ @media (hover: none) {
357
+ .govuk-accordion__section-header:hover {
358
+ border-top-color: $govuk-border-colour;
359
+
360
+ box-shadow: inset 0 3px 0 0 $govuk-link-colour;
361
+
362
+ .govuk-accordion__section-button {
363
+ border-top-color: $govuk-border-colour;
364
+ }
365
+ }
366
+ }
367
+ }
368
+ }
@@ -0,0 +1,2 @@
1
+ @import "../../base";
2
+ @import "./index";
@@ -0,0 +1,81 @@
1
+ @include govuk-exports("govuk/component/back-link") {
2
+ // Component font-size on the Frontend (used for calculations)
3
+ $font-size: 16;
4
+
5
+ // Size of chevron (excluding border)
6
+ $chevron-size: govuk-em(7px, $font-size);
7
+
8
+ // Size of chevron border
9
+ $chevron-border-min-width: 1px;
10
+ $chevron-border-width: govuk-em($chevron-border-min-width, $font-size);
11
+
12
+ // Colour of chevron
13
+ $chevron-border-colour: $govuk-secondary-text-colour;
14
+
15
+ .govuk-back-link {
16
+ @include govuk-font-size($size: $font-size);
17
+ @include govuk-link-common;
18
+ @include govuk-link-style-text;
19
+
20
+ display: inline-block;
21
+ position: relative;
22
+
23
+ margin-top: govuk-spacing(3);
24
+ margin-bottom: govuk-spacing(3);
25
+
26
+ // Allow space for the arrow
27
+ padding-left: govuk-em(14px, $font-size);
28
+ }
29
+
30
+ // Prepend left pointing chevron
31
+ .govuk-back-link::before {
32
+ content: "";
33
+ display: block;
34
+
35
+ // Vertically align with the parent element
36
+ position: absolute;
37
+ top: 0;
38
+ bottom: 0;
39
+ left: govuk-em(3px, $font-size);
40
+
41
+ width: $chevron-size;
42
+ height: $chevron-size;
43
+
44
+ margin: auto 0;
45
+
46
+ transform: rotate(225deg);
47
+
48
+ border: solid;
49
+ border-width: $chevron-border-min-width $chevron-border-min-width 0 0;
50
+ border-color: $chevron-border-colour;
51
+
52
+ @supports (border-width: unquote("max(0px)")) {
53
+ $border-width-eval: "max(#{$chevron-border-min-width}, #{$chevron-border-width})";
54
+
55
+ // Ensure that the chevron never gets smaller than 16px
56
+ border-width: unquote($border-width-eval) unquote($border-width-eval) 0 0;
57
+ font-size: unquote("max(#{$font-size * 1px}, 1em)");
58
+ }
59
+ }
60
+
61
+ .govuk-back-link:focus::before {
62
+ border-color: $govuk-focus-text-colour;
63
+ }
64
+
65
+ .govuk-back-link::after {
66
+ content: "";
67
+ position: absolute;
68
+ top: -14px;
69
+ right: 0;
70
+ bottom: -14px;
71
+ left: 0;
72
+ }
73
+
74
+ .govuk-back-link--inverse {
75
+ @include govuk-link-style-inverse;
76
+
77
+ &::before {
78
+ border-color: currentcolor;
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,2 @@
1
+ @import "../../base";
2
+ @import "./index";