@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
@@ -1,9 +1,9 @@
1
1
  import { test, expect } from 'vitest';
2
2
  import { render, screen, within } from '@testing-library/react';
3
3
  import SiteHeader from './SiteHeader';
4
- import SiteNavigation from '../SiteNavigation/SiteNavigation';
5
- import SiteSearch from '../SiteSearch/SiteSearch';
6
- import PhaseBanner from '../PhaseBanner/PhaseBanner';
4
+ import SiteNavigation from '../SiteNavigation';
5
+ import SiteSearch from '../SiteSearch';
6
+ import PhaseBanner from '../PhaseBanner';
7
7
 
8
8
  test('site header renders correctly (maximal, testing markup structure)', () => {
9
9
  render(
@@ -1,16 +1,17 @@
1
1
  import React, { Children, useEffect, useRef } from 'react';
2
2
  import Icon from '../../common/Icon';
3
- import SiteNavigation from '../SiteNavigation/SiteNavigation';
4
-
5
- // @ts-ignore
3
+ import SiteNavigation from '../SiteNavigation';
4
+ // @ts-expect-error no types from core SGDS
6
5
  import DSMobileMenu from '@scottish-government/design-system/src/components/site-navigation/site-navigation';
6
+ import { SiteHeaderBrandProps, SiteHeaderProps } from './types';
7
+ import { SiteNavigationProps } from '../SiteNavigation/types';
7
8
 
8
9
  const Brand = ({
9
10
  children,
10
11
  homeUrl = '/',
11
12
  linkComponent,
12
13
  siteTitle
13
- }: SGDS.Component.SiteHeader.Brand) => {
14
+ }: SiteHeaderBrandProps) => {
14
15
  function processChildren(children: React.ReactNode) {
15
16
  const image = React.cloneElement(children as React.ReactElement<HTMLImageElement>, { className: 'ds_site-branding__logo-image' });
16
17
 
@@ -36,26 +37,26 @@ const Brand = ({
36
37
 
37
38
  const Navigation = ({
38
39
  children
39
- }: any) => {
40
+ }: React.AllHTMLAttributes<HTMLElement>) => {
40
41
  return children;
41
42
  }
42
43
 
43
44
  const Phase = ({
44
45
  children
45
- }: any) => {
46
+ }: React.AllHTMLAttributes<HTMLElement>) => {
46
47
  return children;
47
48
  }
48
49
 
49
50
  const Search = ({
50
51
  children
51
- }: any) => {
52
+ }: React.AllHTMLAttributes<HTMLElement>) => {
52
53
  return children;
53
54
  }
54
55
 
55
56
  const SiteHeader = ({
56
57
  children,
57
58
  ...props
58
- }: SGDS.Component.SiteHeader) => {
59
+ }: SiteHeaderProps) => {
59
60
  const mobileMenuRef = useRef(null);
60
61
 
61
62
  let branding: React.ReactNode;
@@ -66,14 +67,14 @@ const SiteHeader = ({
66
67
 
67
68
  // assign to slots
68
69
  Children.forEach(children, (child: React.ReactNode) => {
69
- const thisChild = child as React.ReactElement<any>;
70
+ const thisChild = child as React.JSX.Element;
70
71
  if (thisChild && thisChild.type === Brand) {
71
72
  branding = thisChild;
72
73
  } else if (thisChild && thisChild.type === Navigation) {
73
74
  navigation = thisChild;
74
75
 
75
76
  if (thisChild.props.children.type === SiteNavigation) {
76
- mobileNavigation = React.cloneElement(thisChild.props.children as React.ReactElement<SGDS.Component.SiteNavigation>, { className: 'ds_site-navigation--mobile', id: 'mobile-navigation', ref: mobileMenuRef});
77
+ mobileNavigation = React.cloneElement(thisChild.props.children as React.ReactElement<SiteNavigationProps>, { className: 'ds_site-navigation--mobile', id: 'mobile-navigation', ref: mobileMenuRef});
77
78
  }
78
79
  } else if (thisChild && thisChild.type === Phase) {
79
80
  phase = thisChild;
@@ -0,0 +1 @@
1
+ export { default } from './SiteHeader';
@@ -0,0 +1,22 @@
1
+ import { LinkComponent } from "../../shared-types";
2
+ import { PhaseBannerProps } from "../PhaseBanner/types";
3
+ import { SiteNavigationItemProps } from "../SiteNavigation/types";
4
+ import { SiteSearchProps } from "../SiteSearch/types";
5
+
6
+ export interface SiteHeaderBrandProps extends React.AllHTMLAttributes<HTMLElement> {
7
+ homeUrl: string;
8
+ linkComponent?: LinkComponent;
9
+ siteTitle?: string;
10
+ }
11
+
12
+ export interface SiteHeaderProps extends React.AllHTMLAttributes<HTMLHeadingElement> {
13
+ logo?: {
14
+ alt?: string;
15
+ href?: string;
16
+ src?: string;
17
+ };
18
+ navigationItems?: SiteNavigationItemProps[];
19
+ phaseBanner?: PhaseBannerProps;
20
+ siteSearch?: SiteSearchProps;
21
+ siteTitle?: string;
22
+ }
@@ -1,9 +1,11 @@
1
+ import { SiteNavigationItemProps, SiteNavigationProps } from "./types";
2
+
1
3
  const Item = ({
2
4
  children,
3
5
  isCurrent = false,
4
6
  href,
5
7
  linkComponent
6
- }: SGDS.Component.SiteNavigation.Item) => {
8
+ }: SiteNavigationItemProps) => {
7
9
  const classNames = ['ds_site-navigation__link'];
8
10
  let ariaCurrent: React.AriaAttributes["aria-current"];
9
11
 
@@ -33,7 +35,7 @@ const SiteNavigation = ({
33
35
  children,
34
36
  className,
35
37
  ...props
36
- }: SGDS.Component.SiteNavigation) => {
38
+ }: SiteNavigationProps) => {
37
39
  return (
38
40
  <nav
39
41
  className={[
@@ -0,0 +1 @@
1
+ export { default } from './SiteNavigation';
@@ -0,0 +1,11 @@
1
+ import { LinkComponent } from '../../shared-types';
2
+
3
+ export interface SiteNavigationItemProps extends React.AllHTMLAttributes<HTMLLIElement> {
4
+ isCurrent?: boolean;
5
+ href: string;
6
+ linkComponent?: LinkComponent;
7
+ }
8
+
9
+ export interface SiteNavigationProps extends React.AllHTMLAttributes<HTMLElement> {
10
+ ref?: React.RefObject<null>;
11
+ }
@@ -11,8 +11,10 @@ type AutocompleteResponseObject = {
11
11
  category: string
12
12
  }
13
13
 
14
- const suggestionMappingFunction = function (request: XMLHttpRequest) {
15
- const responseObj = JSON.parse(request.response).map((item: string) => ({
14
+ type SuggestionObject = { response: string };
15
+
16
+ const suggestionMappingFunction = function (suggestionObj: SuggestionObject) {
17
+ const responseObj = JSON.parse(suggestionObj.response).map((item: string) => ({
16
18
  key: '',
17
19
  displayText: item,
18
20
  weight: '',
@@ -1,7 +1,8 @@
1
1
  import { useEffect, useRef } from 'react';
2
- // @ts-ignore
2
+ // @ts-expect-error no types from core SGDS
3
3
  import DSAutocomplete from '@scottish-government/design-system/src/components/autocomplete/autocomplete';
4
- import Button from '../Button/Button';
4
+ import Button from '../Button';
5
+ import { SiteSearchProps, SuggestionMappingFunctionProps } from './types';
5
6
 
6
7
  const SiteSearch = function ({
7
8
  action = '/search',
@@ -14,14 +15,14 @@ const SiteSearch = function ({
14
15
  name = 'q',
15
16
  placeholder = 'Search',
16
17
  ...props
17
- }: SGDS.Component.SiteSearch) {
18
+ }: SiteSearchProps) {
18
19
  const ref = useRef(null);
19
20
  const hasAutocomplete = !!autocompleteEndpoint;
20
- let autocompleteId = hasAutocomplete ? id + '-autocomplete' : '';
21
+ const autocompleteId = hasAutocomplete ? id + '-autocomplete' : '';
21
22
 
22
23
  type AutoCompleteOptions = {
23
24
  minLength?: number,
24
- suggestionMappingFunction?: Function,
25
+ suggestionMappingFunction?: SuggestionMappingFunctionProps,
25
26
  throttleDelay?: number
26
27
  }
27
28
 
@@ -48,7 +49,7 @@ const SiteSearch = function ({
48
49
  return (
49
50
  <div
50
51
  className={[
51
- 'ds_site-search', ,
52
+ 'ds_site-search',
52
53
  className,
53
54
  hasAutocomplete ? 'ds_autocomplete' : undefined
54
55
  ].join(' ')}
@@ -0,0 +1 @@
1
+ export { default } from './SiteSearch';
@@ -0,0 +1,13 @@
1
+ type FormMethods = 'GET' | 'POST';
2
+ export type SuggestionMappingFunctionProps = (suggestionObj: {response: string}) => [];
3
+
4
+ export interface SiteSearchProps extends React.AllHTMLAttributes<HTMLInputElement> {
5
+ action?: string;
6
+ autocompleteEndpoint?: string;
7
+ autocompleteSuggestionMappingFunction?: SuggestionMappingFunctionProps;
8
+ id: string;
9
+ method?: FormMethods;
10
+ minLength?: number;
11
+ name?: string;
12
+ placeholder?: string;
13
+ }
@@ -8,16 +8,16 @@ const meta = {
8
8
  component: SkipLinks,
9
9
  argTypes: {
10
10
  mainContentId: {
11
- description: 'The id attribute of the main content element to link to',
11
+ description: 'The id attribute of the \'main content\' element to link to',
12
12
  type: 'string'
13
13
  },
14
14
  mainLinkText: {
15
- description: 'The text to use for the main content link',
15
+ description: 'The text to use for the \'main content\' link',
16
16
  type: 'string'
17
17
  },
18
18
  isStatic: {
19
19
  control: 'boolean',
20
- description: 'Use the static display variant'
20
+ description: 'Use the \'static\' display variant'
21
21
  },
22
22
  children: argTypes.children()
23
23
  },
@@ -1,12 +1,12 @@
1
1
  import React, { useEffect } from 'react';
2
-
3
- // @ts-ignore
2
+ // @ts-expect-error no types from core SGDS
4
3
  import dsSkipLinks from '@scottish-government/design-system/src/components/skip-links/skip-links';
4
+ import { SkipLinksLinkProps, SkipLinksProps } from './types';
5
5
 
6
6
  const Link = ({
7
7
  children,
8
8
  fragmentId
9
- }: SGDS.Component.SkipLinks.Link) => {
9
+ }: SkipLinksLinkProps) => {
10
10
  return (
11
11
  <li
12
12
  className="ds_skip-links__item"
@@ -22,7 +22,7 @@ const SkipLinks = ({
22
22
  mainLinkText = 'Skip to main content',
23
23
  isStatic,
24
24
  ...props
25
- }: SGDS.Component.SkipLinks) => {
25
+ }: SkipLinksProps) => {
26
26
 
27
27
  useEffect(() => {
28
28
  dsSkipLinks.init();
@@ -0,0 +1 @@
1
+ export { default } from './SkipLinks';
@@ -0,0 +1,9 @@
1
+ export interface SkipLinksLinkProps extends React.AllHTMLAttributes<HTMLLIElement> {
2
+ fragmentId: string;
3
+ }
4
+
5
+ export interface SkipLinksProps extends React.AllHTMLAttributes<HTMLDivElement> {
6
+ mainContentId?: string;
7
+ mainLinkText?: string;
8
+ isStatic?: boolean;
9
+ }
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import argTypes from '../../../.storybook/sgdsArgTypes';
3
3
 
4
4
  import SummaryCard from './SummaryCard';
5
- import SummaryList from '../SummaryList/SummaryList';
5
+ import SummaryList from '../SummaryList';
6
6
 
7
7
  const meta = {
8
8
  title: 'Components/SummaryCard',
@@ -1,7 +1,7 @@
1
1
  import { test, expect, vi } from 'vitest';
2
- import { render, screen, within, fireEvent } from '@testing-library/react';
2
+ import { render, screen, within } from '@testing-library/react';
3
3
  import SummaryCard from './SummaryCard';
4
- import SummaryList from '../SummaryList/SummaryList';
4
+ import SummaryList from '../SummaryList';
5
5
 
6
6
  const ONCLICK_FUNCTION = vi.fn();
7
7
 
@@ -16,17 +16,6 @@ const ACTIONS = [
16
16
  }
17
17
  ];
18
18
 
19
- const ITEMS = [
20
- {
21
- title: 'Phone number',
22
- value: '0123 456 7890'
23
- },
24
- {
25
- title: 'Address',
26
- value: `Victoria Quay\nEdinburgh\nEH6 6QQ`
27
- }
28
- ];
29
-
30
19
  const TITLE_TEXT = 'Joe Bloggs';
31
20
 
32
21
  test('summary card renders correctly', () => {
@@ -3,6 +3,8 @@ import React, { Children, useId } from 'react';
3
3
  import ActionLink from '../../common/ActionLink';
4
4
  import ConditionalWrapper from '../../common/ConditionalWrapper';
5
5
  import WrapperTag from "../../common/WrapperTag";
6
+ import { SummaryCardProps } from './types';
7
+ import { ActionLinkProps } from '../../common/ActionLink/types';
6
8
 
7
9
  const SummaryCard = ({
8
10
  children,
@@ -10,14 +12,14 @@ const SummaryCard = ({
10
12
  headingLevel = 'h3',
11
13
  title,
12
14
  ...props
13
- }: SGDS.Component.SummaryCard) => {
14
- let actions: any[] = [];
15
- let remainingChildren: any[] = [];
15
+ }: SummaryCardProps) => {
16
+ const actions: React.ReactElement[] = [];
17
+ const remainingChildren: React.ReactElement[] = [];
16
18
 
17
19
  const describedById = useId();
18
20
 
19
21
  Children.forEach(children, (child: React.ReactNode) => {
20
- const thisChild = child as React.ReactElement<SGDS.Common.ActionLink>;
22
+ const thisChild = child as React.ReactElement<ActionLinkProps>;
21
23
  if (thisChild && thisChild.type === ActionLink) {
22
24
  actions.push(React.cloneElement(thisChild, { describedby: describedById }));
23
25
  } else {
@@ -0,0 +1 @@
1
+ export { default } from './SummaryCard';
@@ -0,0 +1,6 @@
1
+ import { HeadingLevel } from '../../shared-types';
2
+
3
+ export interface SummaryCardProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ headingLevel?: HeadingLevel;
5
+ title: string;
6
+ }
@@ -14,7 +14,7 @@ const meta = {
14
14
  )
15
15
  ],
16
16
  argTypes: {
17
- Title: {
17
+ title: {
18
18
  description: 'Title of the summary list item.',
19
19
  type: {
20
20
  name: 'string',
@@ -26,16 +26,16 @@ const meta = {
26
26
  args: {
27
27
  title: 'Contact details',
28
28
  children: [
29
- <SummaryList.Value name="Email">
29
+ <SummaryList.Value name="Email" key="1">
30
30
  email@gov.scot
31
31
  </SummaryList.Value>,
32
- <SummaryList.Value name="Telephone">
32
+ <SummaryList.Value name="Telephone" key="2">
33
33
  0123 456 7890
34
34
  </SummaryList.Value>,
35
- <SummaryList.Action href="foo">
35
+ <SummaryList.Action href="foo" key="3">
36
36
  Change
37
37
  </SummaryList.Action>,
38
- <SummaryList.Action onclick={function w(){}}>
38
+ <SummaryList.Action onclick={function w(){}} key="4">
39
39
  Delete
40
40
  </SummaryList.Action>
41
41
  ]
@@ -34,7 +34,7 @@ const meta = {
34
34
  <SummaryList.Item title="Address">
35
35
  <SummaryList.Value>
36
36
  Scottish Government<br />
37
- St Andrew's House<br />
37
+ St Andrew&apos;s House<br />
38
38
  Regent Road<br />
39
39
  Edinburgh<br />
40
40
  EH1 3DG
@@ -1,5 +1,5 @@
1
1
  import { test, expect, vi } from 'vitest';
2
- import { within, render, screen, fireEvent } from '@testing-library/react';
2
+ import { within, render, screen } from '@testing-library/react';
3
3
  import SummaryList from './SummaryList';
4
4
 
5
5
  const ONCLICK_FUNCTION = vi.fn();
@@ -7,11 +7,6 @@ const TITLE = 'Name';
7
7
  const VALUE_1 = 'Jane Smith';
8
8
  const VALUE_2 = 'Tony Brown';
9
9
 
10
- const ACTION_HREF = "#foo"
11
- const ACTION_ONCLICK = ONCLICK_FUNCTION;
12
- const ACTION_TEXT = 'Name';
13
- const DESCRIBEDBY_ID = 'q1-name';
14
-
15
10
  test('summary list renders correctly', () => {
16
11
  render(
17
12
  <SummaryList data-testid="summarylist">
@@ -2,18 +2,20 @@ import React, { Children, useId } from 'react';
2
2
 
3
3
  import ActionLink from '../../common/ActionLink';
4
4
  import ConditionalWrapper from '../../common/ConditionalWrapper';
5
+ import { SummaryListItemProps, SummaryListProps } from './types';
6
+ import { ActionLinkProps } from '@/src/common/ActionLink/types';
5
7
 
6
8
  const Item = ({
7
9
  children,
8
10
  title
9
- }: SGDS.Component.SummaryList.Item) => {
10
- let values: any[] = [];
11
- let actions: any[] = [];
11
+ }: SummaryListItemProps) => {
12
+ const values: React.ReactElement[] = [];
13
+ const actions: React.ReactElement[] = [];
12
14
 
13
15
  const describedById = useId();
14
16
 
15
17
  Children.forEach(children, (child: React.ReactNode) => {
16
- const thisChild = child as React.ReactElement<SGDS.Common.ActionLink>;
18
+ const thisChild = child as React.ReactElement<ActionLinkProps>;
17
19
  if (thisChild && thisChild.type === Value) {
18
20
  values.push(thisChild);
19
21
  } else if (thisChild && thisChild.type === ActionLink) {
@@ -64,7 +66,7 @@ const Item = ({
64
66
 
65
67
  const Value = ({
66
68
  children
67
- }: SGDS.Component.SummaryList.Answer) => {
69
+ }: React.AllHTMLAttributes<HTMLElement>) => {
68
70
  return (
69
71
  <q className="ds_summary-list__answer">{children}</q>
70
72
  );
@@ -75,7 +77,7 @@ const SummaryList = ({
75
77
  className,
76
78
  isBorderless,
77
79
  ...props
78
- }: SGDS.Component.SummaryList) => {
80
+ }: SummaryListProps) => {
79
81
  return (
80
82
  <ol
81
83
  className={[
@@ -0,0 +1 @@
1
+ export { default } from './SummaryList';
@@ -0,0 +1,7 @@
1
+ export interface SummaryListItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
2
+ title: string;
3
+ }
4
+
5
+ export interface SummaryListProps extends React.OlHTMLAttributes<HTMLOListElement> {
6
+ isBorderless?: boolean;
7
+ }
@@ -1,13 +1,14 @@
1
1
  import { useEffect, useRef } from 'react';
2
- // @ts-ignore
2
+ // @ts-expect-error no types from core SGDS
3
3
  import DSTable from '@scottish-government/design-system/src/components/table/table';
4
+ import { TableProps } from './types';
4
5
 
5
6
  const Table = ({
6
7
  children,
7
8
  className,
8
9
  smallscreen,
9
10
  ...props
10
- }: SGDS.Component.Table) => {
11
+ }: TableProps) => {
11
12
  const ref = useRef(null);
12
13
 
13
14
  useEffect(() => {
@@ -0,0 +1 @@
1
+ export { default } from './Table';
@@ -0,0 +1,6 @@
1
+ type SmallScreen = 'scrolling' | 'boxes';
2
+
3
+ export interface TableProps extends React.AllHTMLAttributes<HTMLTableElement> {
4
+ className?: string;
5
+ smallscreen?: SmallScreen;
6
+ }
@@ -17,15 +17,15 @@ const meta = {
17
17
  children: argTypes.children()
18
18
  },
19
19
  args: {
20
- baseId: 'my-tabs',
21
20
  children: [
22
- <h3>Search for training courses and funding</h3>,
23
- <p>A wide range of training courses for your employees are available.</p>,
24
- <p>Opportunities include distance learning, short courses and vocational training.</p>,
25
- <p><a href="#">Visit My World of Work to search for training courses</a>.</p>,
26
- <p>You can also <a href="#">search for training courses, and funding towards training</a>.</p>
21
+ <h3 key="1">Search for training courses and funding</h3>,
22
+ <p key="2">A wide range of training courses for your employees are available.</p>,
23
+ <p key="3">Opportunities include distance learning, short courses and vocational training.</p>,
24
+ <p key="4"><a href="#">Visit My World of Work to search for training courses</a>.</p>,
25
+ <p key="5">You can also <a href="#">search for training courses, and funding towards training</a>.</p>
27
26
  ],
28
- tabLabel: 'Courses and funding'
27
+ tabLabel: 'Courses and funding',
28
+ id: 'my-tab'
29
29
  }
30
30
  } satisfies Meta<typeof Tabs.Item>;
31
31
 
@@ -35,14 +35,14 @@ const meta = {
35
35
  args: {
36
36
  baseId: 'my-tabs',
37
37
  children: [
38
- <Tabs.Item key="foo" tabLabel="Courses and funding">
38
+ <Tabs.Item id="foo" key="foo" tabLabel="Courses and funding">
39
39
  <h3>Search for training courses and funding</h3>
40
40
  <p>A wide range of training courses for your employees are available.</p>
41
41
  <p>Opportunities include distance learning, short courses and vocational training.</p>
42
42
  <p><a href="#">Visit My World of Work to search for training courses</a>.</p>
43
43
  <p>You can also <a href="#">search for training courses, and funding towards training</a>.</p>
44
44
  </Tabs.Item>,
45
- <Tabs.Item key="bar" tabLabel="Choosing apprenticeships">
45
+ <Tabs.Item id="bar" key="bar" tabLabel="Choosing apprenticeships">
46
46
  <h3>Choosing an apprenticeship for your business</h3>
47
47
  <p>Apprenticeships can help you address skills gaps in your business. The government provides help with the cost of training an apprentice.</p>
48
48
  <p>There are 3 different types of apprenticeship:</p>
@@ -53,7 +53,7 @@ const meta = {
53
53
  </ul>
54
54
  <p>You can find more information on the <a href="#">apprenticeships.scot</a> website.</p>
55
55
  </Tabs.Item>,
56
- <Tabs.Item key="baz" tabLabel="Extra skills support">
56
+ <Tabs.Item id="baz" key="baz" tabLabel="Extra skills support">
57
57
  <h3>Extra skills support</h3>
58
58
  <p>The <a href="#">Skills for Growth</a> service can offer skills advice to businesses with fewer than 250 employees.</p>
59
59
  <p>Businesses of any size can get skills advice by completing a <a href="#">skills support request form</a>.</p>
@@ -1,7 +1,8 @@
1
1
  import React, { Children, 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 DSTabs from '@scottish-government/design-system/src/components/tabs/tabs';
5
+ import { TabListItemProps, TabsItemProps, TabsProps } from './types';
5
6
 
6
7
  const TabItem = ({
7
8
  isBorderless,
@@ -10,7 +11,7 @@ const TabItem = ({
10
11
  id,
11
12
  tabLabel,
12
13
  ...props
13
- }: SGDS.Component.Tabs.Item) => {
14
+ }: TabsItemProps) => {
14
15
  return (
15
16
  <div
16
17
  className={[
@@ -18,6 +19,7 @@ const TabItem = ({
18
19
  !isBorderless && 'ds_tabs__content--bordered',
19
20
  className
20
21
  ].join(' ')}
22
+ data-label={tabLabel}
21
23
  id={id}
22
24
  {...props}
23
25
  >
@@ -29,7 +31,7 @@ const TabItem = ({
29
31
  const TabListItem = ({
30
32
  children,
31
33
  href
32
- }: SGDS.Component.Tabs.TabListItem) => {
34
+ }: TabListItemProps) => {
33
35
  return (
34
36
  <li className="ds_tabs__tab">
35
37
  <a className="ds_tabs__tab-link" href={href}>{children}</a>
@@ -46,7 +48,7 @@ const Tabs = ({
46
48
  isManual = false,
47
49
  title = 'Contents',
48
50
  ...props
49
- }: SGDS.Component.Tabs) => {
51
+ }: TabsProps) => {
50
52
  const ref = useRef(null);
51
53
 
52
54
  const headingId = `${baseId}-heading`;
@@ -58,7 +60,7 @@ const Tabs = ({
58
60
  }, [ref]);
59
61
 
60
62
  const processedItems = Children.map(children, child => {
61
- const thisChild = child as React.ReactElement<SGDS.Component.Tabs.Item>;
63
+ const thisChild = child as React.ReactElement<TabsItemProps>;
62
64
 
63
65
  if (thisChild && thisChild.type === TabItem) {
64
66
  return React.cloneElement(thisChild, {
@@ -0,0 +1 @@
1
+ export { default } from './Tabs';
@@ -0,0 +1,19 @@
1
+ import { HeadingLevel } from '../../shared-types';
2
+
3
+ export interface TabsItemProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ isBorderless?: boolean;
5
+ id: string;
6
+ tabLabel: string;
7
+ }
8
+
9
+ export interface TabListItemProps extends React.AllHTMLAttributes<HTMLLIElement> {
10
+ href: string;
11
+ }
12
+
13
+ export interface TabsProps extends React.AllHTMLAttributes<HTMLElement> {
14
+ baseId: string;
15
+ isBorderless?: boolean;
16
+ headingLevel?: HeadingLevel;
17
+ isManual?: boolean;
18
+ title: string;
19
+ }
@@ -1,9 +1,11 @@
1
+ import { TagProps } from "./types";
2
+
1
3
  const Tag = ({
2
4
  children,
3
5
  className,
4
6
  colour,
5
7
  ...props
6
- }: SGDS.Component.Tag) => {
8
+ }: TagProps) => {
7
9
  return (
8
10
  <span
9
11
  className={[
@@ -0,0 +1 @@
1
+ export { default } from './Tag';