@scottish-government/designsystem-react 0.12.0 → 0.13.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 (457) hide show
  1. package/.storybook/main.ts +6 -6
  2. package/.storybook/sgdsArgTypes.ts +84 -43
  3. package/CHANGELOG.md +27 -1
  4. package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.d.ts +9 -0
  5. package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.jsx +62 -0
  6. package/dist/common/AbstractNotificationBanner/index.d.ts +1 -0
  7. package/dist/common/AbstractNotificationBanner/index.js +8 -0
  8. package/dist/common/ActionLink/ActionLink.d.ts +5 -0
  9. package/dist/common/ActionLink/ActionLink.jsx +19 -0
  10. package/dist/common/ActionLink/index.d.ts +1 -0
  11. package/dist/common/ActionLink/index.js +8 -0
  12. package/dist/common/ConditionalWrapper/ConditionalWrapper.d.ts +8 -0
  13. package/dist/common/ConditionalWrapper/ConditionalWrapper.jsx +8 -0
  14. package/dist/common/ConditionalWrapper/index.d.ts +1 -0
  15. package/dist/common/ConditionalWrapper/index.js +8 -0
  16. package/dist/common/FileIcon/FileIcon.d.ts +6 -0
  17. package/dist/common/FileIcon/FileIcon.jsx +46 -0
  18. package/dist/common/FileIcon/index.d.ts +1 -0
  19. package/dist/common/FileIcon/index.js +8 -0
  20. package/dist/common/HintText/HintText.d.ts +5 -0
  21. package/dist/common/HintText/HintText.jsx +9 -0
  22. package/dist/common/HintText/index.d.ts +1 -0
  23. package/dist/common/HintText/index.js +8 -0
  24. package/dist/common/Icon/Icon.d.ts +6 -0
  25. package/dist/common/Icon/Icon.jsx +51 -0
  26. package/dist/common/Icon/index.d.ts +1 -0
  27. package/dist/common/Icon/index.js +8 -0
  28. package/dist/common/ScreenReaderText/ScreenReaderText.d.ts +5 -0
  29. package/dist/common/ScreenReaderText/ScreenReaderText.jsx +9 -0
  30. package/dist/common/ScreenReaderText/index.d.ts +1 -0
  31. package/dist/common/ScreenReaderText/index.js +8 -0
  32. package/dist/common/WrapperTag/WrapperTag.d.ts +8 -0
  33. package/dist/common/WrapperTag/WrapperTag.jsx +11 -0
  34. package/dist/common/WrapperTag/index.d.ts +1 -0
  35. package/dist/common/WrapperTag/index.js +8 -0
  36. package/dist/common/index.d.ts +8 -0
  37. package/dist/common/index.js +22 -0
  38. package/dist/components/Accordion/index.d.ts +1 -0
  39. package/dist/components/Accordion/index.js +8 -0
  40. package/dist/components/AspectBox/index.d.ts +1 -0
  41. package/dist/components/AspectBox/index.js +8 -0
  42. package/dist/components/BackToTop/index.d.ts +1 -0
  43. package/dist/components/BackToTop/index.js +8 -0
  44. package/dist/components/Breadcrumbs/index.d.ts +1 -0
  45. package/dist/components/Breadcrumbs/index.js +8 -0
  46. package/dist/components/Button/ButtonGroup.d.ts +5 -0
  47. package/dist/components/Button/ButtonGroup.jsx +13 -0
  48. package/dist/components/Button/index.d.ts +2 -0
  49. package/dist/components/Button/index.js +10 -0
  50. package/dist/components/CategoryItem/index.d.ts +1 -0
  51. package/dist/components/CategoryItem/index.js +8 -0
  52. package/dist/components/CategoryList/index.d.ts +1 -0
  53. package/dist/components/CategoryList/index.js +8 -0
  54. package/dist/components/Checkbox/index.d.ts +2 -0
  55. package/dist/components/Checkbox/index.js +10 -0
  56. package/dist/components/ConfirmationMessage/index.d.ts +1 -0
  57. package/dist/components/ConfirmationMessage/index.js +8 -0
  58. package/dist/components/ContentsNav/index.d.ts +1 -0
  59. package/dist/components/ContentsNav/index.js +8 -0
  60. package/dist/components/CookieBanner/index.d.ts +1 -0
  61. package/dist/components/CookieBanner/index.js +8 -0
  62. package/dist/components/DatePicker/DatePicker.jsx +2 -2
  63. package/dist/components/DatePicker/index.d.ts +1 -0
  64. package/dist/components/DatePicker/index.js +8 -0
  65. package/dist/components/Details/index.d.ts +1 -0
  66. package/dist/components/Details/index.js +8 -0
  67. package/dist/components/ErrorMessage/index.d.ts +1 -0
  68. package/dist/components/ErrorMessage/index.js +8 -0
  69. package/dist/components/ErrorSummary/index.d.ts +1 -0
  70. package/dist/components/ErrorSummary/index.js +8 -0
  71. package/dist/components/FeatureHeader/FeatureHeader.d.ts +13 -0
  72. package/dist/components/FeatureHeader/FeatureHeader.jsx +70 -0
  73. package/dist/components/FeatureHeader/index.d.ts +1 -0
  74. package/dist/components/FeatureHeader/index.js +8 -0
  75. package/dist/components/FileDownload/index.d.ts +1 -0
  76. package/dist/components/FileDownload/index.js +8 -0
  77. package/dist/components/HideThisPage/index.d.ts +1 -0
  78. package/dist/components/HideThisPage/index.js +8 -0
  79. package/dist/components/InsetText/index.d.ts +1 -0
  80. package/dist/components/InsetText/index.js +8 -0
  81. package/dist/components/NotificationBanner/index.d.ts +1 -0
  82. package/dist/components/NotificationBanner/index.js +8 -0
  83. package/dist/components/NotificationPanel/index.d.ts +1 -0
  84. package/dist/components/NotificationPanel/index.js +8 -0
  85. package/dist/components/PageHeader/index.d.ts +1 -0
  86. package/dist/components/PageHeader/index.js +8 -0
  87. package/dist/components/PageMetadata/index.d.ts +1 -0
  88. package/dist/components/PageMetadata/index.js +8 -0
  89. package/dist/components/Pagination/index.d.ts +1 -0
  90. package/dist/components/Pagination/index.js +8 -0
  91. package/dist/components/PhaseBanner/index.d.ts +1 -0
  92. package/dist/components/PhaseBanner/index.js +8 -0
  93. package/dist/components/Question/Question.jsx +1 -1
  94. package/dist/components/Question/index.d.ts +1 -0
  95. package/dist/components/Question/index.js +8 -0
  96. package/dist/components/RadioButton/index.d.ts +2 -0
  97. package/dist/components/RadioButton/index.js +10 -0
  98. package/dist/components/SearchFacets/index.d.ts +1 -0
  99. package/dist/components/SearchFacets/index.js +8 -0
  100. package/dist/components/SearchFilters/SearchFilters.jsx +6 -6
  101. package/dist/components/SearchFilters/index.d.ts +1 -0
  102. package/dist/components/SearchFilters/index.js +8 -0
  103. package/dist/components/SearchResult/SearchResult.jsx +2 -2
  104. package/dist/components/SearchResult/index.d.ts +1 -0
  105. package/dist/components/SearchResult/index.js +8 -0
  106. package/dist/components/SearchSort/SearchSort.jsx +2 -2
  107. package/dist/components/SearchSort/index.d.ts +1 -0
  108. package/dist/components/SearchSort/index.js +8 -0
  109. package/dist/components/Select/Select.jsx +1 -1
  110. package/dist/components/Select/index.d.ts +1 -0
  111. package/dist/components/Select/index.js +8 -0
  112. package/dist/components/SequentialNavigation/index.d.ts +1 -0
  113. package/dist/components/SequentialNavigation/index.js +8 -0
  114. package/dist/components/SideNavigation/index.d.ts +1 -0
  115. package/dist/components/SideNavigation/index.js +8 -0
  116. package/dist/components/SiteFooter/index.d.ts +1 -0
  117. package/dist/components/SiteFooter/index.js +8 -0
  118. package/dist/components/SiteHeader/SiteHeader.jsx +1 -1
  119. package/dist/components/SiteHeader/index.d.ts +1 -0
  120. package/dist/components/SiteHeader/index.js +8 -0
  121. package/dist/components/SiteNavigation/index.d.ts +1 -0
  122. package/dist/components/SiteNavigation/index.js +8 -0
  123. package/dist/components/SiteSearch/SiteSearch.jsx +1 -1
  124. package/dist/components/SiteSearch/index.d.ts +1 -0
  125. package/dist/components/SiteSearch/index.js +8 -0
  126. package/dist/components/SkipLinks/index.d.ts +1 -0
  127. package/dist/components/SkipLinks/index.js +8 -0
  128. package/dist/components/SummaryCard/index.d.ts +1 -0
  129. package/dist/components/SummaryCard/index.js +8 -0
  130. package/dist/components/SummaryList/index.d.ts +1 -0
  131. package/dist/components/SummaryList/index.js +8 -0
  132. package/dist/components/Table/index.d.ts +1 -0
  133. package/dist/components/Table/index.js +8 -0
  134. package/dist/components/Tabs/index.d.ts +1 -0
  135. package/dist/components/Tabs/index.js +8 -0
  136. package/dist/components/Tag/index.d.ts +1 -0
  137. package/dist/components/Tag/index.js +8 -0
  138. package/dist/components/TaskList/TaskList.jsx +1 -1
  139. package/dist/components/TaskList/index.d.ts +1 -0
  140. package/dist/components/TaskList/index.js +8 -0
  141. package/dist/components/TextInput/TextInput.jsx +2 -2
  142. package/dist/components/TextInput/index.d.ts +1 -0
  143. package/dist/components/TextInput/index.js +8 -0
  144. package/dist/components/Textarea/Textarea.jsx +1 -1
  145. package/dist/components/Textarea/index.d.ts +1 -0
  146. package/dist/components/Textarea/index.js +8 -0
  147. package/dist/components/WarningText/index.d.ts +1 -0
  148. package/dist/components/WarningText/index.js +8 -0
  149. package/dist/components/index.d.ts +46 -0
  150. package/dist/components/index.js +101 -0
  151. package/dist/hooks/index.d.ts +1 -0
  152. package/dist/hooks/index.js +8 -0
  153. package/dist/hooks/useTracking/index.d.ts +1 -0
  154. package/dist/hooks/useTracking/index.js +8 -0
  155. package/dist/hooks/useTracking/useTracking.d.ts +1 -0
  156. package/dist/hooks/useTracking/useTracking.js +21 -0
  157. package/dist/images/index.d.ts +2 -0
  158. package/dist/images/index.js +38 -0
  159. package/eslint.config.mjs +32 -0
  160. package/package.json +29 -22
  161. package/src/common/{AbstractNotificationBanner.test.tsx → AbstractNotificationBanner/AbstractNotificationBanner.test.tsx} +1 -1
  162. package/src/common/{AbstractNotificationBanner.tsx → AbstractNotificationBanner/AbstractNotificationBanner.tsx} +7 -6
  163. package/src/common/AbstractNotificationBanner/index.ts +1 -0
  164. package/src/common/AbstractNotificationBanner/types.ts +15 -0
  165. package/src/common/{ActionLink.tsx → ActionLink/ActionLink.tsx} +3 -1
  166. package/src/common/ActionLink/index.ts +1 -0
  167. package/src/common/ActionLink/types.ts +8 -0
  168. package/src/common/ConditionalWrapper/ConditionalWrapper.tsx +17 -0
  169. package/src/common/ConditionalWrapper/index.ts +1 -0
  170. package/src/common/ConditionalWrapper/types.ts +4 -0
  171. package/src/common/{FileIcon.tsx → FileIcon/FileIcon.tsx} +3 -2
  172. package/src/common/FileIcon/index.ts +1 -0
  173. package/src/common/FileIcon/types.ts +7 -0
  174. package/src/common/{HintText.test.tsx → HintText/HintText.test.tsx} +3 -15
  175. package/src/common/{HintText.tsx → HintText/HintText.tsx} +4 -4
  176. package/src/common/HintText/index.ts +1 -0
  177. package/src/common/HintText/types.ts +4 -0
  178. package/src/common/{Icon.tsx → Icon/Icon.tsx} +3 -2
  179. package/src/common/Icon/index.ts +1 -0
  180. package/src/common/Icon/types.ts +9 -0
  181. package/src/common/{ScreenReaderText.tsx → ScreenReaderText/ScreenReaderText.tsx} +1 -1
  182. package/src/common/ScreenReaderText/index.ts +1 -0
  183. package/src/common/{WrapperTag.tsx → WrapperTag/WrapperTag.tsx} +5 -3
  184. package/src/common/WrapperTag/index.ts +1 -0
  185. package/src/common/WrapperTag/types.ts +3 -0
  186. package/src/common/index.ts +8 -0
  187. package/src/components/Accordion/Accordion.Item.stories.tsx +1 -5
  188. package/src/components/Accordion/Accordion.stories.tsx +5 -5
  189. package/src/components/Accordion/Accordion.tsx +5 -4
  190. package/src/components/Accordion/index.ts +1 -0
  191. package/src/components/Accordion/types.ts +13 -0
  192. package/src/components/AspectBox/AspectBox.stories.tsx +1 -2
  193. package/src/components/AspectBox/AspectBox.tsx +5 -4
  194. package/src/components/AspectBox/index.ts +1 -0
  195. package/src/components/AspectBox/types.ts +3 -0
  196. package/src/components/BackToTop/BackToTop.tsx +3 -2
  197. package/src/components/BackToTop/index.ts +1 -0
  198. package/src/components/BackToTop/types.ts +3 -0
  199. package/src/components/Breadcrumbs/Breadcrumbs.tsx +4 -2
  200. package/src/components/Breadcrumbs/index.ts +1 -0
  201. package/src/components/Breadcrumbs/types.ts +6 -0
  202. package/src/components/Button/Button.tsx +2 -1
  203. package/src/components/{ButtonGroup → Button}/ButtonGroup.stories.tsx +1 -1
  204. package/src/components/{ButtonGroup → Button}/ButtonGroup.tsx +3 -1
  205. package/src/components/Button/index.ts +2 -0
  206. package/src/components/Button/types.ts +21 -0
  207. package/src/components/CategoryItem/CategoryItem.tsx +7 -4
  208. package/src/components/CategoryItem/index.ts +1 -0
  209. package/src/components/CategoryItem/types.ts +10 -0
  210. package/src/components/CategoryList/CategoryList.stories.tsx +1 -1
  211. package/src/components/CategoryList/CategoryList.test.tsx +1 -1
  212. package/src/components/CategoryList/CategoryList.tsx +4 -2
  213. package/src/components/CategoryList/index.ts +1 -0
  214. package/src/components/CategoryList/types.ts +5 -0
  215. package/src/components/Checkbox/Checkbox.stories.tsx +3 -3
  216. package/src/components/Checkbox/Checkbox.tsx +5 -4
  217. package/src/components/Checkbox/CheckboxGroup.tsx +3 -3
  218. package/src/components/Checkbox/index.ts +2 -0
  219. package/src/components/Checkbox/types.ts +9 -0
  220. package/src/components/ConfirmationMessage/ConfirmationMessage.tsx +2 -1
  221. package/src/components/ConfirmationMessage/index.ts +1 -0
  222. package/src/components/ConfirmationMessage/types.ts +7 -0
  223. package/src/components/ContentsNav/ContentsNav.stories.tsx +5 -1
  224. package/src/components/ContentsNav/ContentsNav.tsx +3 -2
  225. package/src/components/ContentsNav/index.ts +1 -0
  226. package/src/components/ContentsNav/types.ts +11 -0
  227. package/src/components/CookieBanner/CookieBanner.Buttons.stories.tsx +4 -4
  228. package/src/components/CookieBanner/CookieBanner.stories.tsx +7 -7
  229. package/src/components/CookieBanner/CookieBanner.test.tsx +6 -0
  230. package/src/components/CookieBanner/CookieBanner.tsx +13 -3
  231. package/src/components/CookieBanner/index.ts +1 -0
  232. package/src/components/DatePicker/DatePicker.test.tsx +0 -5
  233. package/src/components/DatePicker/DatePicker.tsx +5 -4
  234. package/src/components/DatePicker/index.ts +1 -0
  235. package/src/components/DatePicker/types.ts +20 -0
  236. package/src/components/Details/Details.stories.tsx +1 -1
  237. package/src/components/Details/Details.tsx +3 -1
  238. package/src/components/Details/index.ts +1 -0
  239. package/src/components/Details/types.ts +4 -0
  240. package/src/components/ErrorMessage/ErrorMessage.tsx +3 -1
  241. package/src/components/ErrorMessage/index.ts +1 -0
  242. package/src/components/ErrorMessage/types.ts +3 -0
  243. package/src/components/ErrorSummary/ErrorSummary.test.tsx +1 -1
  244. package/src/components/ErrorSummary/ErrorSummary.tsx +3 -2
  245. package/src/components/ErrorSummary/index.ts +1 -0
  246. package/src/components/ErrorSummary/types.ts +11 -0
  247. package/src/components/FileDownload/FileDownload.tsx +2 -1
  248. package/src/components/FileDownload/index.ts +1 -0
  249. package/src/components/FileDownload/types.ts +11 -0
  250. package/src/components/HideThisPage/HideThisPage.tsx +3 -2
  251. package/src/components/HideThisPage/index.ts +1 -0
  252. package/src/components/HideThisPage/types.ts +3 -0
  253. package/src/components/InsetText/InsetText.tsx +1 -1
  254. package/src/components/InsetText/index.ts +1 -0
  255. package/src/components/NotificationBanner/NotificationBanner.stories.tsx +2 -2
  256. package/src/components/NotificationBanner/NotificationBanner.tsx +5 -4
  257. package/src/components/NotificationBanner/index.ts +1 -0
  258. package/src/components/NotificationPanel/NotificationPanel.tsx +2 -1
  259. package/src/components/NotificationPanel/index.ts +1 -0
  260. package/src/components/NotificationPanel/types.ts +7 -0
  261. package/src/components/PageHeader/PageHeader.stories.tsx +1 -1
  262. package/src/components/PageHeader/PageHeader.tsx +3 -1
  263. package/src/components/PageHeader/index.ts +1 -0
  264. package/src/components/PageHeader/types.ts +5 -0
  265. package/src/components/PageMetadata/PageMetadata.stories.tsx +1 -1
  266. package/src/components/PageMetadata/PageMetadata.tsx +5 -3
  267. package/src/components/PageMetadata/index.ts +1 -0
  268. package/src/components/PageMetadata/types.ts +7 -0
  269. package/src/components/Pagination/Pagination.tsx +5 -3
  270. package/src/components/Pagination/index.ts +1 -0
  271. package/src/components/Pagination/types.ts +20 -0
  272. package/src/components/PhaseBanner/PhaseBanner.stories.tsx +1 -4
  273. package/src/components/PhaseBanner/PhaseBanner.tsx +2 -1
  274. package/src/components/PhaseBanner/index.ts +1 -0
  275. package/src/components/PhaseBanner/types.ts +3 -0
  276. package/src/components/Question/Question.stories.tsx +2 -3
  277. package/src/components/Question/Question.tsx +5 -4
  278. package/src/components/Question/index.ts +1 -0
  279. package/src/components/Question/types.ts +9 -0
  280. package/src/components/RadioButton/RadioButton.tsx +5 -4
  281. package/src/components/RadioButton/RadioGroup.stories.tsx +1 -2
  282. package/src/components/RadioButton/RadioGroup.test.tsx +1 -2
  283. package/src/components/RadioButton/RadioGroup.tsx +2 -1
  284. package/src/components/RadioButton/index.ts +2 -0
  285. package/src/components/RadioButton/types.ts +12 -0
  286. package/src/components/SearchFacets/SearchFacets.Group.stories.tsx +2 -3
  287. package/src/components/SearchFacets/SearchFacets.stories.tsx +1 -1
  288. package/src/components/SearchFacets/SearchFacets.tsx +7 -6
  289. package/src/components/SearchFacets/index.ts +1 -0
  290. package/src/components/SearchFacets/types.ts +14 -0
  291. package/src/components/SearchFilters/SearchFilters.Panel.stories.tsx +20 -9
  292. package/src/components/SearchFilters/SearchFilters.stories.tsx +3 -3
  293. package/src/components/SearchFilters/SearchFilters.test.tsx +1 -1
  294. package/src/components/SearchFilters/SearchFilters.tsx +8 -7
  295. package/src/components/SearchFilters/index.ts +1 -0
  296. package/src/components/SearchFilters/types.ts +14 -0
  297. package/src/components/SearchResult/SearchResult.stories.tsx +9 -10
  298. package/src/components/SearchResult/SearchResult.tsx +11 -10
  299. package/src/components/SearchResult/index.ts +1 -0
  300. package/src/components/SearchResult/types.ts +13 -0
  301. package/src/components/SearchSort/SearchSort.stories.tsx +2 -1
  302. package/src/components/SearchSort/SearchSort.tsx +4 -3
  303. package/src/components/SearchSort/index.ts +1 -0
  304. package/src/components/SearchSort/types.ts +7 -0
  305. package/src/components/Select/Select.tsx +6 -5
  306. package/src/components/Select/index.ts +1 -0
  307. package/src/components/Select/types.ts +7 -0
  308. package/src/components/SequentialNavigation/SequentialNavigation.tsx +6 -4
  309. package/src/components/SequentialNavigation/index.ts +1 -0
  310. package/src/components/SequentialNavigation/types.ts +12 -0
  311. package/src/components/SideNavigation/SideNavigation.tsx +5 -4
  312. package/src/components/SideNavigation/index.ts +1 -0
  313. package/src/components/SideNavigation/types.ts +16 -0
  314. package/src/components/SiteFooter/SiteFooter.tsx +7 -6
  315. package/src/components/SiteFooter/index.ts +1 -0
  316. package/src/components/SiteFooter/types.ts +20 -0
  317. package/src/components/SiteHeader/SiteHeader.stories.tsx +7 -6
  318. package/src/components/SiteHeader/SiteHeader.test.tsx +3 -3
  319. package/src/components/SiteHeader/SiteHeader.tsx +11 -10
  320. package/src/components/SiteHeader/index.ts +1 -0
  321. package/src/components/SiteHeader/types.ts +22 -0
  322. package/src/components/SiteNavigation/SiteNavigation.tsx +4 -2
  323. package/src/components/SiteNavigation/index.ts +1 -0
  324. package/src/components/SiteNavigation/types.ts +11 -0
  325. package/src/components/SiteSearch/SiteSearch.stories.tsx +4 -2
  326. package/src/components/SiteSearch/SiteSearch.tsx +7 -6
  327. package/src/components/SiteSearch/index.ts +1 -0
  328. package/src/components/SiteSearch/types.ts +13 -0
  329. package/src/components/SkipLinks/SkipLinks.stories.tsx +3 -3
  330. package/src/components/SkipLinks/SkipLinks.tsx +4 -4
  331. package/src/components/SkipLinks/index.ts +1 -0
  332. package/src/components/SkipLinks/types.ts +9 -0
  333. package/src/components/SummaryCard/SummaryCard.stories.tsx +1 -1
  334. package/src/components/SummaryCard/SummaryCard.test.tsx +2 -13
  335. package/src/components/SummaryCard/SummaryCard.tsx +6 -4
  336. package/src/components/SummaryCard/index.ts +1 -0
  337. package/src/components/SummaryCard/types.ts +6 -0
  338. package/src/components/SummaryList/SummaryList.Item.stories.tsx +5 -5
  339. package/src/components/SummaryList/SummaryList.stories.tsx +1 -1
  340. package/src/components/SummaryList/SummaryList.test.tsx +1 -6
  341. package/src/components/SummaryList/SummaryList.tsx +8 -6
  342. package/src/components/SummaryList/index.ts +1 -0
  343. package/src/components/SummaryList/types.ts +7 -0
  344. package/src/components/Table/Table.tsx +3 -2
  345. package/src/components/Table/index.ts +1 -0
  346. package/src/components/Table/types.ts +6 -0
  347. package/src/components/Tabs/Tabs.Item.stories.tsx +7 -7
  348. package/src/components/Tabs/Tabs.stories.tsx +3 -3
  349. package/src/components/Tabs/Tabs.tsx +7 -5
  350. package/src/components/Tabs/index.ts +1 -0
  351. package/src/components/Tabs/types.ts +19 -0
  352. package/src/components/Tag/Tag.tsx +3 -1
  353. package/src/components/Tag/index.ts +1 -0
  354. package/src/components/Tag/types.ts +5 -0
  355. package/src/components/TaskList/TaskList.Group.stories.tsx +0 -5
  356. package/src/components/TaskList/TaskList.stories.tsx +0 -1
  357. package/src/components/TaskList/TaskList.tsx +13 -10
  358. package/src/components/TaskList/index.ts +1 -0
  359. package/src/components/TaskList/types.ts +20 -0
  360. package/src/components/TextInput/TextInput.tsx +8 -8
  361. package/src/components/TextInput/index.ts +1 -0
  362. package/src/components/TextInput/types.ts +12 -0
  363. package/src/components/Textarea/Textarea.tsx +7 -6
  364. package/src/components/Textarea/index.ts +1 -0
  365. package/src/components/WarningText/WarningText.tsx +1 -1
  366. package/src/components/WarningText/index.ts +1 -0
  367. package/src/components/index.ts +46 -0
  368. package/src/hooks/index.ts +1 -0
  369. package/src/hooks/useTracking/index.ts +1 -0
  370. package/src/hooks/{useTracking.test.tsx → useTracking/useTracking.test.tsx} +5 -7
  371. package/src/hooks/{useTracking.ts → useTracking/useTracking.ts} +1 -1
  372. package/src/images/icons/arrow_upward.tsx +10 -10
  373. package/src/images/icons/calendar_today.tsx +10 -10
  374. package/src/images/icons/cancel.tsx +8 -8
  375. package/src/images/icons/check_circle.tsx +10 -10
  376. package/src/images/icons/chevron_left.tsx +10 -10
  377. package/src/images/icons/chevron_right.tsx +10 -10
  378. package/src/images/icons/close.tsx +10 -10
  379. package/src/images/icons/description.tsx +10 -10
  380. package/src/images/icons/double_chevron_left.tsx +8 -8
  381. package/src/images/icons/double_chevron_right.tsx +8 -8
  382. package/src/images/icons/error.tsx +10 -10
  383. package/src/images/icons/expand_less.tsx +10 -10
  384. package/src/images/icons/expand_more.tsx +10 -10
  385. package/src/images/icons/list.tsx +13 -13
  386. package/src/images/icons/menu.tsx +10 -10
  387. package/src/images/icons/priority_high.tsx +11 -11
  388. package/src/images/icons/search.tsx +10 -10
  389. package/src/images/index.ts +2 -0
  390. package/src/index.ts +4 -0
  391. package/src/shared-types.ts +40 -0
  392. package/vite.config.ts +4 -2
  393. package/@types/common/AbstractNotificationBanner.d.ts +0 -17
  394. package/@types/common/ActionLink.d.ts +0 -8
  395. package/@types/common/ConditionalWrapper.d.ts +0 -6
  396. package/@types/common/FileIcon.d.ts +0 -7
  397. package/@types/common/HintText.d.ts +0 -6
  398. package/@types/common/Icon.d.ts +0 -9
  399. package/@types/common/ScreenReaderText.d.ts +0 -4
  400. package/@types/common/WrapperTag.d.ts +0 -5
  401. package/@types/components/Accordion.d.ts +0 -15
  402. package/@types/components/AspectBox.d.ts +0 -5
  403. package/@types/components/BackToTop.d.ts +0 -5
  404. package/@types/components/Breadcrumbs.d.ts +0 -11
  405. package/@types/components/Button.d.ts +0 -17
  406. package/@types/components/ButtonGroup.d.ts +0 -5
  407. package/@types/components/CategoryItem.d.ts +0 -10
  408. package/@types/components/CategoryList.d.ts +0 -7
  409. package/@types/components/Checkbox.d.ts +0 -11
  410. package/@types/components/ConfirmationMessage.d.ts +0 -7
  411. package/@types/components/ContentsNav.d.ts +0 -13
  412. package/@types/components/DatePicker.d.ts +0 -20
  413. package/@types/components/Details.d.ts +0 -6
  414. package/@types/components/ErrorMessage.d.ts +0 -5
  415. package/@types/components/ErrorSummary.d.ts +0 -12
  416. package/@types/components/FileDownload.d.ts +0 -11
  417. package/@types/components/HideThisPage.d.ts +0 -5
  418. package/@types/components/InsetText.d.ts +0 -5
  419. package/@types/components/Metadata.d.ts +0 -11
  420. package/@types/components/NotificationPanel.d.ts +0 -7
  421. package/@types/components/PageHeader.d.ts +0 -7
  422. package/@types/components/Pagination.d.ts +0 -22
  423. package/@types/components/PhaseBanner.d.ts +0 -5
  424. package/@types/components/Question.d.ts +0 -11
  425. package/@types/components/RadioButton.d.ts +0 -14
  426. package/@types/components/SearchFacets.d.ts +0 -18
  427. package/@types/components/SearchFilters.d.ts +0 -14
  428. package/@types/components/SearchResult.d.ts +0 -30
  429. package/@types/components/SearchSort.d.ts +0 -9
  430. package/@types/components/Select.d.ts +0 -7
  431. package/@types/components/SequentialNavigation.d.ts +0 -14
  432. package/@types/components/SideNavigation.d.ts +0 -18
  433. package/@types/components/SiteFooter.d.ts +0 -25
  434. package/@types/components/SiteHeader.d.ts +0 -20
  435. package/@types/components/SiteNavigation.d.ts +0 -13
  436. package/@types/components/SiteSearch.d.ts +0 -14
  437. package/@types/components/SkipLinks.d.ts +0 -13
  438. package/@types/components/SummaryCard.d.ts +0 -6
  439. package/@types/components/SummaryList.d.ts +0 -14
  440. package/@types/components/Table.d.ts +0 -8
  441. package/@types/components/Tabs.d.ts +0 -21
  442. package/@types/components/Tag.d.ts +0 -5
  443. package/@types/components/TaskList.d.ts +0 -22
  444. package/@types/components/TextInput.d.ts +0 -12
  445. package/@types/components/Textarea.d.ts +0 -4
  446. package/@types/components/WarningText.d.ts +0 -5
  447. package/@types/global.d.ts +0 -1
  448. package/@types/sgds.d.ts +0 -49
  449. package/dist/tsconfig.tsbuildinfo +0 -1
  450. package/src/common/ConditionalWrapper.tsx +0 -9
  451. /package/src/common/{ActionLink.test.tsx → ActionLink/ActionLink.test.tsx} +0 -0
  452. /package/src/common/{ConditionalWrapper.test.tsx → ConditionalWrapper/ConditionalWrapper.test.tsx} +0 -0
  453. /package/src/common/{FileIcon.test.tsx → FileIcon/FileIcon.test.tsx} +0 -0
  454. /package/src/common/{Icon.test.tsx → Icon/Icon.test.tsx} +0 -0
  455. /package/src/common/{ScreenReaderText.test.tsx → ScreenReaderText/ScreenReaderText.test.tsx} +0 -0
  456. /package/src/common/{WrapperTag.test.tsx → WrapperTag/WrapperTag.test.tsx} +0 -0
  457. /package/src/components/{ButtonGroup → Button}/ButtonGroup.test.tsx +0 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.icons = exports.documents = void 0;
37
+ exports.documents = __importStar(require("./documents"));
38
+ exports.icons = __importStar(require("./icons"));
@@ -0,0 +1,32 @@
1
+ // import eslint from "@eslint";
2
+ import globals from "globals";
3
+ import tseslint from "typescript-eslint";
4
+ import react from "eslint-plugin-react";
5
+ import { defineConfig } from "eslint/config";
6
+
7
+ export default defineConfig([
8
+ {
9
+ files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
10
+ plugins: { react },
11
+ languageOptions: { globals: globals.browser },
12
+ settings: {
13
+ react: {
14
+ version: "detect"
15
+ }
16
+ }
17
+ },
18
+ tseslint.configs.recommended,
19
+ react.configs.flat.recommended,
20
+ {
21
+ rules: {
22
+ "react/react-in-jsx-scope": "off"
23
+ }
24
+ },
25
+ {
26
+ ignores: [
27
+ "coverage/**",
28
+ "dist/**",
29
+ "node_modules/**"
30
+ ]
31
+ }
32
+ ]);
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@scottish-government/designsystem-react",
3
3
  "description": "A React/JSX implementation of the Scottish Government Design System",
4
- "version": "0.12.0",
4
+ "version": "0.13.0",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "Scottish Government Digital Design System team",
8
8
  "email": "designsystem@gov.scot",
9
9
  "url": "https://designsystem.gov.scot"
10
10
  },
11
+ "typings": "dist/index.d.ts",
12
+ "main": "dist/index.js",
11
13
  "scripts": {
12
- "build": "npm run svgr && npm run tsc",
14
+ "build": "npx eslint && npm run svgr && npm run tsc",
13
15
  "coverage": "vitest test.tsx run --coverage",
14
16
  "svgr": "npx @svgr/cli node_modules/@scottish-government/design-system/src/images/icons/svg --config-file .svgrrc",
15
17
  "svgr_documents": "npx @svgr/cli node_modules/@scottish-government/design-system/src/images/documents/svg --config-file .svgrrc_documents",
@@ -22,29 +24,34 @@
22
24
  "@scottish-government/design-system": "^3.2.1"
23
25
  },
24
26
  "devDependencies": {
25
- "@chromatic-com/storybook": "^4.0.1",
26
- "@storybook/addon-a11y": "^9.0.15",
27
- "@storybook/addon-docs": "^9.0.15",
28
- "@storybook/addon-onboarding": "^9.0.15",
29
- "@storybook/addon-vitest": "^9.0.15",
30
- "@storybook/react-vite": "^9.0.15",
27
+ "@chromatic-com/storybook": "^4.1.3",
28
+ "@eslint/js": "^9.39.1",
29
+ "@storybook/addon-a11y": "^10.0.8",
30
+ "@storybook/addon-docs": "^10.0.8",
31
+ "@storybook/addon-onboarding": "^10.0.8",
32
+ "@storybook/addon-vitest": "^10.0.8",
33
+ "@storybook/react-vite": "^10.0.8",
31
34
  "@svgr/cli": "^8.1.0",
32
- "@testing-library/dom": "^10.4.0",
33
- "@testing-library/jest-dom": "^6.6.3",
35
+ "@testing-library/dom": "^10.4.1",
36
+ "@testing-library/jest-dom": "^6.9.1",
34
37
  "@testing-library/react": "^16.3.0",
35
38
  "@testing-library/user-event": "^14.6.1",
36
39
  "@types/node": "22.15.19",
37
- "@types/react": "^19.1.6",
38
- "@types/react-dom": "^19.1.5",
39
- "@vitejs/plugin-react-swc": "^3.10.0",
40
- "@vitest/browser": "3.2.4",
41
- "@vitest/coverage-v8": "^3.2.0",
42
- "jsdom": "^26.1.0",
43
- "playwright": "^1.56.1",
44
- "react": "^19.1.0",
45
- "react-dom": "^19.1.0",
46
- "storybook": "^9.0.15",
47
- "typescript": "^5.8.3",
48
- "vitest": "^3.2.0"
40
+ "@types/react": "^19.2.6",
41
+ "@types/react-dom": "^19.2.3",
42
+ "@vitejs/plugin-react-swc": "^4.2.2",
43
+ "@vitest/browser": "4.0.10",
44
+ "@vitest/browser-playwright": "^4.0.10",
45
+ "@vitest/coverage-v8": "^4.0.10",
46
+ "eslint": "^9.39.1",
47
+ "eslint-plugin-react": "^7.37.5",
48
+ "globals": "^16.5.0",
49
+ "jsdom": "^27.2.0",
50
+ "react": "^19.2.0",
51
+ "react-dom": "^19.2.0",
52
+ "storybook": "^10.1.10",
53
+ "typescript": "^5.9.3",
54
+ "typescript-eslint": "^8.47.0",
55
+ "vitest": "^4.0.10"
49
56
  }
50
57
  }
@@ -1,7 +1,7 @@
1
1
  import { test, expect } from 'vitest';
2
2
  import { render, screen, within } from '@testing-library/react';
3
3
  import AbstractNotificationBanner from './AbstractNotificationBanner';
4
- import Button from '../components/Button/Button';
4
+ import Button from '../../components/Button';
5
5
 
6
6
  const NOTIFICATION_TEXT = 'We need to tell you about something';
7
7
 
@@ -1,12 +1,13 @@
1
1
  import { Children } from 'react';
2
- import Icon from './Icon';
3
- import ScreenReaderText from './ScreenReaderText';
2
+ import Icon from '../Icon';
3
+ import ScreenReaderText from '../ScreenReaderText';
4
+ import { AbstractNotificationBannerProps, AbstractNotificationBannerButtonsProps } from './types';
4
5
 
5
6
  const Buttons = ({
6
7
  children
7
- }: SGDS.Common.AbstractNotificationBanner.Buttons) => {
8
+ }: AbstractNotificationBannerButtonsProps) => {
8
9
  return (<div className="ds_button-group">{children}</div>);
9
- }
10
+ };
10
11
 
11
12
  const AbstractNotificationBanner = ({
12
13
  children,
@@ -17,8 +18,8 @@ const AbstractNotificationBanner = ({
17
18
  isDismissable,
18
19
  title = 'Information',
19
20
  ...props
20
- }: SGDS.Common.AbstractNotificationBanner) => {
21
- let content: any[] = [];
21
+ }: AbstractNotificationBannerProps) => {
22
+ const content: React.ReactElement[] = [];
22
23
  let buttons;
23
24
 
24
25
  Children.forEach(children, (child) => {
@@ -0,0 +1 @@
1
+ export { default } from './AbstractNotificationBanner';
@@ -0,0 +1,15 @@
1
+ import { IconName } from '../../shared-types';
2
+
3
+ export interface AbstractNotificationBannerProps extends React.AllHTMLAttributes<HTMLDivElement> {
4
+ hasIcon?: boolean;
5
+ hasColourIcon?: boolean;
6
+ hasInverseIcon?: boolean;
7
+ icon?: IconName;
8
+ isDismissable?: boolean;
9
+ title?: string;
10
+ ref?: React.Ref<HTMLDivElement>;
11
+ }
12
+
13
+ export interface AbstractNotificationBannerButtonsProps extends React.AllHTMLAttributes<HTMLDivElement> {
14
+ children: React.ReactNode;
15
+ }
@@ -1,10 +1,12 @@
1
+ import { ActionLinkProps } from './types';
2
+
1
3
  const ActionLink = ({
2
4
  children,
3
5
  describedby,
4
6
  href,
5
7
  linkComponent,
6
8
  onclick
7
- }: SGDS.Common.ActionLink) => {
9
+ }: ActionLinkProps) => {
8
10
  const CLASSNAME = 'ds_link';
9
11
 
10
12
  function processChildren(children: React.ReactNode) {
@@ -0,0 +1 @@
1
+ export { default } from './ActionLink';
@@ -0,0 +1,8 @@
1
+ import { LinkComponent } from '../../shared-types';
2
+
3
+ export interface ActionLinkProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ describedby?: string;
5
+ href?: string;
6
+ linkComponent?: LinkComponent;
7
+ onclick?: React.EventHandler<React.MouseEvent>;
8
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Wraps all children in a specified HTML tag if a condition is met.
3
+ */
4
+
5
+ import { ConditionalWrapperProps } from "./types";
6
+
7
+ const ConditionalWrapper = ({
8
+ condition,
9
+ wrapper,
10
+ children
11
+ }: ConditionalWrapperProps) => {
12
+ return condition ? wrapper(children as React.JSX.Element) : children;
13
+ };
14
+
15
+ ConditionalWrapper.displayName = 'ConditionalWrapper';
16
+
17
+ export default ConditionalWrapper;
@@ -0,0 +1 @@
1
+ export { default } from './ConditionalWrapper';
@@ -0,0 +1,4 @@
1
+ export interface ConditionalWrapperProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ condition: boolean;
3
+ wrapper: (children: React.JSX.Element) => React.JSX.Element;
4
+ }
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
- import * as FileIcons from '../images/documents';
2
+ import * as FileIcons from '../../images/documents';
3
+ import { FileIconProps } from './types';
3
4
 
4
5
  const FileIcon = ({
5
6
  ariaLabel = '',
6
7
  className,
7
8
  icon
8
- }: SGDS.Common.FileIcon) => {
9
+ }: FileIconProps) => {
9
10
  const FileIconComponent = FileIcons[icon];
10
11
 
11
12
  return (
@@ -0,0 +1 @@
1
+ export { default } from './FileIcon';
@@ -0,0 +1,7 @@
1
+ import { DocumentIconName } from '../../shared-types';
2
+
3
+ export interface FileIconProps extends React.AllHTMLAttributes<SVGSVGElement> {
4
+ ariaLabel?: React.AriaAttributes['aria-label'];
5
+ className?: string;
6
+ icon: DocumentIconName;
7
+ }
@@ -9,8 +9,9 @@ test('hint test renders correctly', () => {
9
9
  render(
10
10
  <HintText data-testid="hint-text"
11
11
  id={HINT_TEXT_ID}
12
- text={HINT_TEXT_CONTENT}
13
- />
12
+ >
13
+ {HINT_TEXT_CONTENT}
14
+ </HintText>
14
15
  );
15
16
 
16
17
  const hintText = screen.getByTestId('hint-text');
@@ -20,19 +21,6 @@ test('hint test renders correctly', () => {
20
21
  expect(hintText.textContent).toEqual(HINT_TEXT_CONTENT);
21
22
  });
22
23
 
23
- test('hint test with children instead of text', () => {
24
- render(
25
- <HintText data-testid="hint-text"
26
- id={HINT_TEXT_ID}
27
- >
28
- <span>{HINT_TEXT_CONTENT}</span>
29
- </HintText>
30
- );
31
-
32
- const hintText = screen.getByTestId('hint-text');
33
- expect(hintText.innerHTML).toEqual(`<span>${HINT_TEXT_CONTENT}</span>`);
34
- });
35
-
36
24
  test('passing additional props', () => {
37
25
  render(
38
26
  <HintText data-testid="hint-text"
@@ -1,17 +1,17 @@
1
+ import { HintTextProps } from "./types";
2
+
1
3
  const HintText = ({
2
4
  children,
3
5
  id,
4
- text,
5
6
  ...props
6
- }: SGDS.Common.HintText) => {
7
+ }: HintTextProps) => {
7
8
  return (
8
9
  <p
9
10
  className="ds_hint-text"
10
- dangerouslySetInnerHTML={text ? { __html: text } : undefined}
11
11
  id={id}
12
12
  {...props}
13
13
  >
14
- {!text ? children : null}
14
+ {children}
15
15
  </p>
16
16
  );
17
17
  };
@@ -0,0 +1 @@
1
+ export { default } from './HintText';
@@ -0,0 +1,4 @@
1
+ export interface HintTextProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ id?: string;
3
+ text?: string;
4
+ }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import * as Icons from '../images/icons';
2
+ import * as Icons from '../../images/icons';
3
+ import { IconProps } from './types';
3
4
 
4
5
  const Icon = ({
5
6
  ariaLabel,
@@ -7,7 +8,7 @@ const Icon = ({
7
8
  isFilled,
8
9
  icon,
9
10
  iconSize
10
- }: SGDS.Common.Icon) => {
11
+ }: IconProps) => {
11
12
  const IconComponent = Icons[icon];
12
13
 
13
14
  return (
@@ -0,0 +1 @@
1
+ export { default } from './Icon';
@@ -0,0 +1,9 @@
1
+ import { IconName } from '../../shared-types';
2
+
3
+ export interface IconProps extends React.AllHTMLAttributes<SVGSVGElement> {
4
+ ariaLabel?: React.AriaAttributes['aria-label'];
5
+ className?: string;
6
+ isFilled?: boolean;
7
+ icon: IconName;
8
+ iconSize?: string;
9
+ }
@@ -1,7 +1,7 @@
1
1
  const ScreenReaderText = ({
2
2
  children,
3
3
  ...props
4
- }: SGDS.Common.ScreenReaderText) => {
4
+ }: React.AllHTMLAttributes<HTMLElement>) => {
5
5
  return (
6
6
  <span
7
7
  className="visually-hidden"
@@ -0,0 +1 @@
1
+ export { default } from './ScreenReaderText';
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Wraps all children in a specified HTML tag.
3
3
  */
4
+ import React from 'react';
5
+ import { WrapperTagProps } from './types';
6
+
4
7
  const WrapperTag = ({
5
8
  children,
6
9
  tagName = 'div',
7
10
  ...props
8
- }: SGDS.Common.WrapperTag) => {
9
- const TagName = tagName;
10
- return <TagName {...props}>{children}</TagName>;
11
+ }: WrapperTagProps) => {
12
+ return React.createElement(tagName, props, children);
11
13
  };
12
14
 
13
15
  WrapperTag.displayName = 'WrapperTag';
@@ -0,0 +1 @@
1
+ export { default } from './WrapperTag';
@@ -0,0 +1,3 @@
1
+ export interface WrapperTagProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ tagName?: string;
3
+ }
@@ -0,0 +1,8 @@
1
+ export { default as AbstractNotificationBanner } from "./AbstractNotificationBanner/AbstractNotificationBanner";
2
+ export { default as ActionLink } from "./ActionLink/ActionLink";
3
+ export { default as ConditionalWrapper } from "./ConditionalWrapper/ConditionalWrapper";
4
+ export { default as FileIcon } from "./FileIcon/FileIcon";
5
+ export { default as HintText } from "./HintText/HintText";
6
+ export { default as Icon } from "./Icon/Icon";
7
+ export { default as ScreenReaderText } from "./ScreenReaderText/ScreenReaderText";
8
+ export { default as WrapperTag } from "./WrapperTag/WrapperTag";
@@ -1,5 +1,4 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import argTypes from '../../../.storybook/sgdsArgTypes';
3
2
 
4
3
  import Accordion from './Accordion';
5
4
 
@@ -15,9 +14,6 @@ const meta = {
15
14
  required: true
16
15
  }
17
16
  },
18
- headingLevel: argTypes.headingLevel({
19
- description: 'Heading level for the component\'s heading. It is best to set this on the parent Accordion.'
20
- }),
21
17
  id: {
22
18
  description: 'ID to use for the accordion item if you want to override the automatically generated default',
23
19
  type: 'string'
@@ -37,7 +33,7 @@ const meta = {
37
33
  Veterans are entitled to the same healthcare as any citizen. And there are health care options and support available specifically for veterans.
38
34
  </p>
39
35
  <p>
40
- If you have a health condition that's related to your service, you're entitled to priority treatment based on clinical need.
36
+ If you have a health condition that&apos;s related to your service, you&apos;re entitled to priority treatment based on clinical need.
41
37
  </p>
42
38
  </>
43
39
  }
@@ -12,7 +12,7 @@ const meta = {
12
12
  }),
13
13
  hideOpenAll: {
14
14
  control: 'boolean',
15
- description: 'Do not show the open all button',
15
+ description: 'Do not show the \'open all\' button',
16
16
  type: 'boolean'
17
17
  },
18
18
  children: {
@@ -26,17 +26,17 @@ const meta = {
26
26
  Veterans are entitled to the same healthcare as any citizen. And there are health care options and support available specifically for veterans.
27
27
  </p>
28
28
  <p>
29
- If you have a health condition that's related to your service, you're entitled to priority treatment based on clinical need.
29
+ If you have a health condition that&apos;s related to your service, you&apos;re entitled to priority treatment based on clinical need.
30
30
  </p>
31
31
  </Accordion.Item>
32
32
  <Accordion.Item id='accordion-2' heading='Employability for veterans'>
33
33
  <p>
34
- If you're looking for a job, there are several organisations that can help you <a href="#accordion-link">find a job or develop new skills</a>.
34
+ If you&apos;re looking for a job, there are several organisations that can help you <a href="#accordion-link">find a job or develop new skills</a>.
35
35
  </p>
36
36
  </Accordion.Item>
37
37
  <Accordion.Item id='accordion-3' heading='Housing for veterans'>
38
38
  <p>
39
- If you need <a href="#accordion-link"> help finding a place to live</a> there's support specifically for veterans.
39
+ If you need <a href="#accordion-link"> help finding a place to live</a> there&apos;s support specifically for veterans.
40
40
  </p>
41
41
  </Accordion.Item>
42
42
  </>
@@ -53,7 +53,7 @@ export const Default: Story = {
53
53
  export const HideOpenAll: Story = {
54
54
  args: {
55
55
  hideOpenAll: true
56
- },
56
+ }
57
57
  }
58
58
 
59
59
  export const InvalidNoChildren: Story = {
@@ -1,7 +1,8 @@
1
1
  import React, { createContext, useContext, useEffect, useRef, useId } from 'react';
2
2
  import WrapperTag from '../../common/WrapperTag';
3
- // @ts-ignore
3
+ // @ts-expect-error no types from core SGDS
4
4
  import DSAccordion from '@scottish-government/design-system/src/components/accordion/accordion';
5
+ import { AccordionItemProps, AccordionProps } from './types';
5
6
 
6
7
  let accordionItemCounter = 0;
7
8
  const AccordionHeadingLevelContext = createContext('h3');
@@ -14,11 +15,11 @@ const AccordionItem = ({
14
15
  heading,
15
16
  title,
16
17
  ...props
17
- }: SGDS.Component.Accordion.Item) => {
18
+ }: AccordionItemProps) => {
18
19
  accordionItemCounter = accordionItemCounter + 1;
19
20
  const processedId = rawId || `accordion-item-${useId()}`;
20
21
 
21
- let headingLevel = useContext(AccordionHeadingLevelContext);
22
+ const headingLevel = useContext(AccordionHeadingLevelContext);
22
23
 
23
24
  if (title) {
24
25
  console.warn(
@@ -77,7 +78,7 @@ const Accordion = ({
77
78
  hideOpenAll,
78
79
  isSmall,
79
80
  ...props
80
- }: SGDS.Component.Accordion) => {
81
+ }: AccordionProps) => {
81
82
  const ref = useRef(null);
82
83
 
83
84
  useEffect(() => {
@@ -0,0 +1 @@
1
+ export { default } from './Accordion';
@@ -0,0 +1,13 @@
1
+ import { HeadingLevel } from "../../shared-types";
2
+
3
+ export interface AccordionItemProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ id?: string;
5
+ heading: string | React.ReactNode;
6
+ isOpen?: boolean;
7
+ }
8
+
9
+ export interface AccordionProps extends React.AllHTMLAttributes<HTMLElement> {
10
+ headingLevel?: HeadingLevel;
11
+ hideOpenAll?: boolean;
12
+ isSmall?: boolean;
13
+ }
@@ -1,7 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import argTypes from '../../../.storybook/sgdsArgTypes';
3
-
4
- // @ts-ignore
3
+ // @ts-expect-error no types
5
4
  import coo from '../../../static/images/highland-cow.jpg';
6
5
  import AspectBox from './AspectBox';
7
6
 
@@ -1,13 +1,14 @@
1
1
  import React, { Children, useEffect, useRef } from 'react';
2
- // @ts-ignore
2
+ // @ts-expect-error no types from core SGDS
3
3
  import DSAspectBox from '@scottish-government/design-system/src/components/aspect-box/aspect-box-fallback';
4
+ import { AspectBoxProps } from './types';
4
5
 
5
6
  const AspectBox = ({
6
7
  children,
7
8
  className,
8
9
  ratio,
9
10
  ...props
10
- }: SGDS.Component.AspectBox) => {
11
+ }: AspectBoxProps) => {
11
12
  const ref = useRef(null);
12
13
 
13
14
  useEffect(() => {
@@ -16,7 +17,7 @@ const AspectBox = ({
16
17
  }
17
18
  }, [ref]);
18
19
 
19
- function processChild(child: any) {
20
+ function processChild(child: React.JSX.Element) {
20
21
  if (['img', 'svg', 'picture'].includes(child.type)) {
21
22
  return React.cloneElement(child, { className: 'ds_aspect-box__inner' });
22
23
  }
@@ -49,7 +50,7 @@ const AspectBox = ({
49
50
  ref={ref}
50
51
  {...props}
51
52
  >
52
- {Children.map(children, child => processChild(child))}
53
+ {Children.map(children, child => processChild(child as React.JSX.Element))}
53
54
  </div>
54
55
  );
55
56
  };
@@ -0,0 +1 @@
1
+ export { default } from './AspectBox';
@@ -0,0 +1,3 @@
1
+ export interface AspectBoxProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ ratio?: 'square' | '1:1' | '4:3' | '16:9' | '21:9';
3
+ }
@@ -1,13 +1,14 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  import Icon from '../../common/Icon';
3
- // @ts-ignore
3
+ // @ts-expect-error no types from core SGDS
4
4
  import DSBackToTop from '@scottish-government/design-system/src/components/back-to-top/back-to-top';
5
+ import { BackToTopProps } from './types';
5
6
 
6
7
  const BackToTop = ({
7
8
  className,
8
9
  href = '#page-top',
9
10
  ...props
10
- }: SGDS.Component.BackToTop) => {
11
+ }: BackToTopProps) => {
11
12
  const ref = useRef(null);
12
13
 
13
14
  useEffect(() => {
@@ -0,0 +1 @@
1
+ export { default } from './BackToTop';
@@ -0,0 +1,3 @@
1
+ export interface BackToTopProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ href?: string;
3
+ }