@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,10 +1,12 @@
1
+ import { BreadcrumbItemProps } from "./types";
2
+
1
3
  const BreadcrumbItem = ({
2
4
  children,
3
5
  isHidden,
4
6
  href,
5
7
  linkComponent,
6
8
  ...props
7
- }: SGDS.Component.Breadcrumbs.Item) => {
9
+ }: BreadcrumbItemProps) => {
8
10
  const BREADCRUMB_LINK_CLASSNAME = 'ds_breadcrumbs__link';
9
11
 
10
12
  function processChildren(children: React.ReactNode) {
@@ -32,7 +34,7 @@ const BreadcrumbItem = ({
32
34
  const Breadcrumbs = ({
33
35
  children,
34
36
  ...props
35
- }: SGDS.Component.Breadcrumbs) => {
37
+ }: React.AllHTMLAttributes<HTMLElement>) => {
36
38
  return (
37
39
  <nav
38
40
  aria-label="Breadcrumb"
@@ -0,0 +1 @@
1
+ export { default } from './Breadcrumbs';
@@ -0,0 +1,6 @@
1
+ import { LinkComponent } from "../../shared-types";
2
+
3
+ export interface BreadcrumbItemProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ isHidden?: boolean;
5
+ linkComponent?: LinkComponent;
6
+ }
@@ -1,6 +1,7 @@
1
1
  import Icon from '../../common/Icon';
2
2
  import ScreenReaderText from '../../common/ScreenReaderText';
3
3
  import WrapperTag from '../../common/WrapperTag';
4
+ import { ButtonProps } from './types';
4
5
 
5
6
  const Button = ({
6
7
  buttonStyle,
@@ -15,7 +16,7 @@ const Button = ({
15
16
  type = 'button',
16
17
  width,
17
18
  ...props
18
- }: SGDS.Component.Button) => {
19
+ }: ButtonProps) => {
19
20
  // determine which HTML tag to use
20
21
  let tagName = 'button';
21
22
  if (href) {
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import ButtonGroup from './ButtonGroup';
3
- import Button from '../Button/Button';
3
+ import Button from '../Button';
4
4
 
5
5
  const meta = {
6
6
  title: 'Components/Buttons/ButtonGroup',
@@ -1,9 +1,11 @@
1
+ import { ButtonGroupProps } from "./types";
2
+
1
3
  const ButtonGroup = ({
2
4
  children,
3
5
  className,
4
6
  isInline,
5
7
  ...props
6
- }: SGDS.Component.ButtonGroup) => {
8
+ }: ButtonGroupProps) => {
7
9
  return (
8
10
  <div className={[
9
11
  "ds_button-group",
@@ -0,0 +1,2 @@
1
+ export { default } from './Button';
2
+ export { default as ButtonGroup } from './ButtonGroup';
@@ -0,0 +1,21 @@
1
+ import { IconName } from '../../shared-types';
2
+
3
+ type ButtonStyle = 'primary' | 'secondary';
4
+ type ButtonType = 'submit' | 'reset' | 'button';
5
+ type ButtonWidth = 'fluid' | 'fixed' | 'max';
6
+
7
+ export interface ButtonProps extends React.AllHTMLAttributes<HTMLButtonElement> {
8
+ hasLinkStyle?: boolean;
9
+ href?: string;
10
+ icon?: IconName;
11
+ isIconLeft?: boolean;
12
+ isIconOnly?: boolean;
13
+ isSmall?: boolean;
14
+ buttonStyle?: ButtonStyle;
15
+ type?: ButtonType;
16
+ width?: ButtonWidth;
17
+ }
18
+
19
+ export interface ButtonGroupProps extends React.AllHTMLAttributes<HTMLElement> {
20
+ isInline?: boolean;
21
+ }
@@ -1,5 +1,6 @@
1
1
  import ConditionalWrapper from "../../common/ConditionalWrapper";
2
2
  import WrapperTag from "../../common/WrapperTag";
3
+ import { CategoryItemProps } from "./types";
3
4
 
4
5
  const CategoryItem = ({
5
6
  children,
@@ -10,15 +11,17 @@ const CategoryItem = ({
10
11
  tagName = 'div',
11
12
  title,
12
13
  ...props
13
- }: SGDS.Component.CategoryItem) => {
14
+ }: CategoryItemProps) => {
14
15
  const LINK_CLASS = 'ds_category-item__link';
15
16
 
16
17
  function getLinkElement(children: React.ReactNode) {
18
+ let linkElement;
17
19
  if (linkComponent) {
18
- return linkComponent({ className: LINK_CLASS, href, children });
19
- } else if (href) {
20
- return <a href={href} className={LINK_CLASS}>{children}</a>;
20
+ linkElement = linkComponent({ className: LINK_CLASS, href, children });
21
+ } else {
22
+ linkElement = <a href={href} className={LINK_CLASS}>{children}</a>;
21
23
  }
24
+ return linkElement as React.JSX.Element;
22
25
  }
23
26
 
24
27
  return (
@@ -0,0 +1 @@
1
+ export { default } from './CategoryItem';
@@ -0,0 +1,10 @@
1
+ import { HeadingLevel, LinkComponent } from '../../shared-types';
2
+
3
+ export interface CategoryItemProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ className?: string;
5
+ headingLevel?: HeadingLevel;
6
+ href?: string;
7
+ linkComponent?: LinkComponent;
8
+ tagName?: string;
9
+ title: string;
10
+ }
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import argTypes from '../../../.storybook/sgdsArgTypes';
3
3
 
4
4
  import CategoryList from './CategoryList';
5
- import CategoryItem from '../CategoryItem/CategoryItem';
5
+ import CategoryItem from '../CategoryItem';
6
6
 
7
7
  const meta = {
8
8
  title: 'Components/CategoryList',
@@ -1,7 +1,7 @@
1
1
  import { test, expect } from 'vitest';
2
2
  import { render, screen, within } from '@testing-library/react';
3
3
  import CategoryList from './CategoryList';
4
- import CategoryItem from '../CategoryItem/CategoryItem';
4
+ import CategoryItem from '../CategoryItem';
5
5
 
6
6
  test('category list renders correctly', () => {
7
7
  render(
@@ -1,5 +1,7 @@
1
1
  import React, { Children } from 'react';
2
2
  import WrapperTag from "../../common/WrapperTag";
3
+ import { CategoryListProps } from './types';
4
+ import { CategoryItemProps } from '../CategoryItem/types';
3
5
 
4
6
  const CategoryList = ({
5
7
  children,
@@ -7,9 +9,9 @@ const CategoryList = ({
7
9
  isGrid,
8
10
  isOrdered,
9
11
  ...props
10
- }: SGDS.Component.CategoryList) => {
12
+ }: CategoryListProps) => {
11
13
  function processChild(child: React.ReactNode) {
12
- const thisChild = child as React.ReactElement<SGDS.Component.CategoryItem>
14
+ const thisChild = child as React.ReactElement<CategoryItemProps>
13
15
  return React.cloneElement(thisChild, {tagName: 'li'})
14
16
  }
15
17
 
@@ -0,0 +1 @@
1
+ export { default } from './CategoryList';
@@ -0,0 +1,5 @@
1
+ export interface CategoryListProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ className?: string;
3
+ isGrid?: boolean;
4
+ isOrdered?: boolean;
5
+ }
@@ -12,18 +12,18 @@ const meta = {
12
12
  description: 'The checkbox is checked on load'
13
13
  },
14
14
  hintText: argTypes.hintText,
15
- exclusive: {
15
+ isExclusive: {
16
16
  control: 'boolean',
17
17
  description: 'Whether the checkbox is exclusive (e.g. a \'none\' option)'
18
18
  },
19
19
  id: argTypes.id(),
20
+ isSmall: argTypes.isSmall(),
20
21
  label: argTypes.label(),
21
22
  name: {
22
23
  type: 'string'
23
24
  },
24
25
  onBlur: argTypes.onBlur(),
25
- onChange: argTypes.onChange(),
26
- small: argTypes.isSmall()
26
+ onChange: argTypes.onChange()
27
27
  },
28
28
  args: {
29
29
  label: 'Benefits and grants',
@@ -2,6 +2,7 @@ import { useContext } from 'react';
2
2
  import { CheckboxRadioContext } from '../../utils/context';
3
3
 
4
4
  import HintText from '../../common/HintText';
5
+ import { CheckboxProps } from './types';
5
6
 
6
7
  const Checkbox = ({
7
8
  checked,
@@ -13,17 +14,17 @@ const Checkbox = ({
13
14
  name,
14
15
  onBlur,
15
16
  onChange
16
- }: SGDS.Component.Checkbox) => {
17
+ }: CheckboxProps) => {
17
18
  const hintTextId = `hint-text-${id}`;
18
19
  const behaviour = isExclusive && 'exclusive';
19
20
 
20
- function handleBlur(event: React.FocusEvent) {
21
+ function handleBlur(event: React.FocusEvent<HTMLInputElement>) {
21
22
  if (typeof onBlur === 'function') {
22
23
  onBlur(event);
23
24
  }
24
25
  }
25
26
 
26
- function handleChange(event: React.ChangeEvent) {
27
+ function handleChange(event: React.ChangeEvent<HTMLInputElement>) {
27
28
  if (typeof onChange === 'function') {
28
29
  onChange(event);
29
30
  }
@@ -54,7 +55,7 @@ const Checkbox = ({
54
55
  className="ds_checkbox__label"
55
56
  htmlFor={id}
56
57
  >{label}</label>
57
- {hintText && <HintText id={hintTextId} text={hintText} />}
58
+ {hintText && <HintText id={hintTextId}>{hintText}</HintText>}
58
59
  </div>
59
60
  </>
60
61
  );
@@ -1,15 +1,15 @@
1
1
  import React, { useEffect, useRef } from 'react';
2
2
  import { CheckboxRadioContext } from '../../utils/context';
3
-
4
- // @ts-ignore
3
+ // @ts-expect-error no types from core SGDS
5
4
  import DSCheckboxes from '@scottish-government/design-system/src/forms/checkbox/checkboxes'
5
+ import { CheckboxGroupProps } from './types';
6
6
 
7
7
  export const CheckboxGroup = ({
8
8
  children,
9
9
  className,
10
10
  isSmall,
11
11
  ...props
12
- }: SGDS.Component.Checkbox.Group) => {
12
+ }: CheckboxGroupProps) => {
13
13
  const ref = useRef(null);
14
14
 
15
15
  useEffect(() => {
@@ -0,0 +1,2 @@
1
+ export { default } from './Checkbox';
2
+ export { default as CheckboxGroup } from './CheckboxGroup';
@@ -0,0 +1,9 @@
1
+ import { CheckboxRadioBase } from '../../shared-types';
2
+
3
+ export interface CheckboxGroupProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ isSmall?: boolean;
5
+ }
6
+
7
+ export interface CheckboxProps extends CheckboxRadioBase<HTMLInputElement> {
8
+ isExclusive?: boolean;
9
+ }
@@ -1,5 +1,6 @@
1
1
  import Icon from '../../common/Icon';
2
2
  import WrapperTag from '../../common/WrapperTag';
3
+ import { ConfirmationMessageProps } from './types';
3
4
 
4
5
  const ConfirmationMessage = ({
5
6
  ariaLive = 'polite',
@@ -8,7 +9,7 @@ const ConfirmationMessage = ({
8
9
  headingLevel = 'h3',
9
10
  title,
10
11
  ...props
11
- }: SGDS.Component.ConfirmationMessage) => {
12
+ }: ConfirmationMessageProps) => {
12
13
  return (
13
14
  <div
14
15
  aria-live={ariaLive}
@@ -0,0 +1 @@
1
+ export { default } from './ConfirmationMessage';
@@ -0,0 +1,7 @@
1
+ import { HeadingLevel } from '../../shared-types';
2
+
3
+ export interface ConfirmationMessageProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ ariaLive: React.AriaAttributes['aria-live'];
5
+ headingLevel: HeadingLevel;
6
+ title: string;
7
+ }
@@ -16,7 +16,7 @@ const meta = {
16
16
  },
17
17
  args: {
18
18
  children: <>
19
- <ContentsNav.Item current>
19
+ <ContentsNav.Item isCurrent>
20
20
  Apply for Blue Badge
21
21
  </ContentsNav.Item>
22
22
  <ContentsNav.Item href="#2">
@@ -39,4 +39,8 @@ export default meta;
39
39
  type Story = StoryObj<typeof meta>;
40
40
 
41
41
  export const Default: Story = {
42
+ args: {
43
+ ariaLabel: 'Contents navigation',
44
+ title: 'Contents'
45
+ }
42
46
  };
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
+ import { ContentsNavItemProps, ContentsNavProps } from './types';
2
3
 
3
4
  const ContentsNavItem = ({
4
5
  children,
5
6
  isCurrent,
6
7
  href,
7
8
  linkComponent
8
- }: SGDS.Component.ContentsNav.ContentsNavItem) => {
9
+ }: ContentsNavItemProps) => {
9
10
  const classNames = ['ds_contents-nav__link'];
10
11
  let ariaCurrent: React.AriaAttributes["aria-current"];
11
12
 
@@ -39,7 +40,7 @@ const ContentsNav = ({
39
40
  className,
40
41
  title = 'Contents',
41
42
  ...props
42
- }: SGDS.Component.ContentsNav) => {
43
+ }: ContentsNavProps) => {
43
44
  return (
44
45
  <nav
45
46
  aria-label={ariaLabel}
@@ -0,0 +1 @@
1
+ export { default } from './ContentsNav';
@@ -0,0 +1,11 @@
1
+ import { LinkComponent } from "../../shared-types";
2
+
3
+ export interface ContentsNavItemProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ isCurrent?: boolean;
5
+ linkComponent?: LinkComponent;
6
+ }
7
+
8
+ export interface ContentsNavProps extends React.AllHTMLAttributes<HTMLElement> {
9
+ ariaLabel: React.AriaAttributes['aria-label'];
10
+ title: string;
11
+ }
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import argTypes from '../../../.storybook/sgdsArgTypes';
3
3
 
4
4
  import CookieBanner from './CookieBanner';
5
- import Button from '../Button/Button';
5
+ import Button from '../Button';
6
6
 
7
7
  const meta = {
8
8
  title: 'Components/CookieBanner/CookieBanner.Buttons',
@@ -12,9 +12,9 @@ const meta = {
12
12
  },
13
13
  args: {
14
14
  children: [
15
- <Button className="js-accept-all-cookies" small buttonStyle="secondary">Accept all cookies</Button>,
16
- <Button className="js-accept-essential-cookies" small buttonStyle="secondary">Use essential cookies only</Button>,
17
- <a href="/cookies/">Set cookie preferences</a>
15
+ <Button className="js-accept-all-cookies" isSmall buttonStyle="secondary" key="1">Accept all cookies</Button>,
16
+ <Button className="js-accept-essential-cookies" isSmall buttonStyle="secondary" key="2">Use essential cookies only</Button>,
17
+ <a href="/cookies/" key="3">Set cookie preferences</a>
18
18
  ]
19
19
  }
20
20
  } satisfies Meta<typeof CookieBanner.Buttons>;
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import argTypes from '../../../.storybook/sgdsArgTypes';
3
3
 
4
4
  import CookieBanner from './CookieBanner';
5
- import Button from '../Button/Button';
5
+ import Button from '../Button';
6
6
 
7
7
  const meta = {
8
8
  title: 'Components/CookieBanner',
@@ -12,13 +12,13 @@ const meta = {
12
12
  },
13
13
  args: {
14
14
  children: [
15
- <p key="foo">We use <a href="/cookies/">cookies</a> to collect anonymous data to help us improve your site browsing
15
+ <p key="1">We use <a href="/cookies/">cookies</a> to collect anonymous data to help us improve your site browsing
16
16
  experience.</p>,
17
- <p key="bar">Click 'Accept all cookies' to agree to all cookies that collect anonymous data.
18
- To only allow the cookies that make the site work, click 'Use essential cookies only.' Visit 'Set cookie preferences' to control specific cookies.</p>,
19
- <CookieBanner.Buttons>
20
- <Button className="js-accept-all-cookies" small buttonStyle="secondary">Accept all cookies</Button>
21
- <Button className="js-accept-essential-cookies" small buttonStyle="secondary">Use essential cookies only</Button>
17
+ <p key="2">Click &lsquo;Accept all cookies&rsquo; to agree to all cookies that collect anonymous data.
18
+ To only allow the cookies that make the site work, click &lsquo;Use essential cookies only.&rsquo; Visit &lsquo;Set cookie preferences&rsquo; to control specific cookies.</p>,
19
+ <CookieBanner.Buttons key="3">
20
+ <Button className="js-accept-all-cookies" isSmall buttonStyle="secondary">Accept all cookies</Button>
21
+ <Button className="js-accept-essential-cookies" isSmall buttonStyle="secondary">Use essential cookies only</Button>
22
22
  <a href="/cookies/">Set cookie preferences</a>
23
23
  </CookieBanner.Buttons>
24
24
  ]
@@ -6,6 +6,7 @@
6
6
  import { test, expect } from 'vitest';
7
7
  import { render } from '@testing-library/react';
8
8
  import CookieBanner from './CookieBanner';
9
+ import Button from '../Button/Button';
9
10
 
10
11
  const BANNER_TEXT = 'We need to tell you about something';
11
12
 
@@ -16,6 +17,11 @@ test('cookie banner renders correctly', () => {
16
17
  render(
17
18
  <CookieBanner>
18
19
  {BANNER_TEXT}
20
+ <CookieBanner.Buttons>
21
+ <Button className="js-accept-all-cookies" isSmall buttonStyle="secondary">Accept all cookies</Button>
22
+ <Button className="js-accept-essential-cookies" isSmall buttonStyle="secondary">Use essential cookies only</Button>
23
+ <a href="/cookies/">Set cookie preferences</a>
24
+ </CookieBanner.Buttons>
19
25
  </CookieBanner>
20
26
  );
21
27
 
@@ -1,14 +1,23 @@
1
1
 
2
+ import { useEffect, useRef } from 'react';
2
3
  import AbstractNotificationBanner from '../../common/AbstractNotificationBanner';
3
- // @ts-ignore
4
+ // @ts-expect-error no types from core SGDS
4
5
  import DSCookieBanner from '@scottish-government/design-system/src/components/cookie-notification/cookie-notification.js';
6
+ import { AbstractNotificationBannerProps } from '../../common/AbstractNotificationBanner/types';
5
7
 
6
8
  const CookieBanner = ({
7
9
  children,
8
10
  className,
9
- title,
11
+ title = 'Information',
10
12
  ...props
11
- }: SGDS.Common.AbstractNotificationBanner) => {
13
+ }: AbstractNotificationBannerProps) => {
14
+ const ref = useRef(null);
15
+
16
+ useEffect(() => {
17
+ if (ref.current) {
18
+ new DSCookieBanner(ref.current).init();
19
+ }
20
+ }, [ref]);
12
21
 
13
22
  return (
14
23
  <>
@@ -20,6 +29,7 @@ const CookieBanner = ({
20
29
  className
21
30
  ].join(' ')}
22
31
  data-module="ds-cookie-notification"
32
+ ref={ref}
23
33
  title={title}
24
34
  {...props}
25
35
  >
@@ -0,0 +1 @@
1
+ export { default } from './CookieBanner';
@@ -24,8 +24,6 @@ test('date picker renders correctly', () => {
24
24
  expect(label.tagName).toEqual('LABEL');
25
25
  expect(textInput).toHaveClass('ds_input', 'ds_input--fixed-10');
26
26
  expect(textInput.id).toEqual(DATE_PICKER_ID);
27
-
28
- // todo: check for DS script being fired
29
27
  });
30
28
 
31
29
  test('date picker with disabled dates', () => {
@@ -71,9 +69,6 @@ test('date picker with custom icon path', () => {
71
69
  iconPath={ICON_PATH}
72
70
  />
73
71
  );
74
- const datePicker = screen.getAllByRole('generic')[1];
75
- const label = within(datePicker).getByText(LABEL_TEXT);
76
- const textInput = within(datePicker).getByRole('textbox');
77
72
 
78
73
  // todo
79
74
  });
@@ -1,8 +1,9 @@
1
1
  import { useEffect, useRef } from 'react';
2
- // @ts-ignore
2
+ // @ts-expect-error no types from core SGDS
3
3
  import DSDatePicker from '@scottish-government/design-system/src/components/date-picker/date-picker';
4
- import ErrorMessage from '../ErrorMessage/ErrorMessage';
5
- import TextInput from '../TextInput/TextInput';
4
+ import ErrorMessage from '../ErrorMessage';
5
+ import TextInput from '../TextInput';
6
+ import { DatePickerProps } from './types';
6
7
 
7
8
  const DatePicker = ({
8
9
  className,
@@ -23,7 +24,7 @@ const DatePicker = ({
23
24
  value,
24
25
  width = 'fixed-10',
25
26
  ...props
26
- }: SGDS.Component.DatePicker) => {
27
+ }: DatePickerProps) => {
27
28
  const ref = useRef(null);
28
29
 
29
30
  useEffect(() => {
@@ -0,0 +1 @@
1
+ export { default } from './DatePicker';
@@ -0,0 +1,20 @@
1
+ import { InputWidth } from "../../shared-types";
2
+
3
+ export interface DatePickerProps extends React.AllHTMLAttributes<HTMLElement> {
4
+ dateSelectCallback?: (date: Date) => void;
5
+ disabledDates?: string;
6
+ hasError?: boolean;
7
+ errorMessage?: string;
8
+ id: string;
9
+ hintText?: string;
10
+ iconPath?: string;
11
+ label: string;
12
+ maxDate?: string;
13
+ minDate?: string;
14
+ isMultiple?: boolean;
15
+ name?: string;
16
+ onBlur?: React.EventHandler<React.FocusEvent>;
17
+ onChange?: React.EventHandler<React.FormEvent>;
18
+ value?: string;
19
+ width?: InputWidth;
20
+ }
@@ -9,7 +9,7 @@ const meta = {
9
9
  argTypes: {
10
10
  children: argTypes.children(),
11
11
  summary: {
12
- description: 'Text to use for the details component\'s summary element',
12
+ description: 'Text to use for the details component\'s \'summary\' element',
13
13
  type: {
14
14
  name: 'string',
15
15
  required: true
@@ -1,9 +1,11 @@
1
+ import { DetailsProps } from "./types";
2
+
1
3
  const Details = ({
2
4
  children,
3
5
  className,
4
6
  summary,
5
7
  ...props
6
- }: SGDS.Component.Details) => {
8
+ }: DetailsProps) => {
7
9
  return (
8
10
  <details
9
11
  className={[
@@ -0,0 +1 @@
1
+ export { default } from './Details';
@@ -0,0 +1,4 @@
1
+ export interface DetailsProps extends React.AllHTMLAttributes<HTMLDetailsElement> {
2
+ title?: string;
3
+ summary: string;
4
+ }
@@ -1,9 +1,11 @@
1
+ import { ErrorMessageProps } from "./types";
2
+
1
3
  const ErrorMessage = ({
2
4
  children,
3
5
  className,
4
6
  id,
5
7
  ...props
6
- }: SGDS.Component.ErrorMessage) => {
8
+ }: ErrorMessageProps) => {
7
9
  return (
8
10
  <p
9
11
  className={[
@@ -0,0 +1 @@
1
+ export { default } from './ErrorMessage';
@@ -0,0 +1,3 @@
1
+ export interface ErrorMessageProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ id?: string;
3
+ }
@@ -74,7 +74,7 @@ test('error summary item with no link', () => {
74
74
  test('error summary item with custom element', () => {
75
75
  render(
76
76
  <ErrorSummary.Item fragmentId={ERROR_FRAGMENT_ID} linkComponent={
77
- ({ className, ...props }) => (
77
+ ({ ...props }) => (
78
78
  <strong role="link" {...props}/>
79
79
  )}>
80
80
  {ERROR_TEXT}
@@ -1,10 +1,11 @@
1
1
  import { useId } from 'react';
2
+ import { ErrorSummaryItemProps, ErrorSummaryProps } from './types';
2
3
 
3
4
  const ErrorSummaryItem = ({
4
5
  children,
5
6
  fragmentId,
6
7
  linkComponent
7
- }: SGDS.Component.ErrorSummary.Item) => {
8
+ }: ErrorSummaryItemProps) => {
8
9
  const HREF = '#' + fragmentId;
9
10
 
10
11
  function processChildren(children: React.ReactNode) {
@@ -29,7 +30,7 @@ const ErrorSummary = ({
29
30
  className,
30
31
  title = 'There is a problem',
31
32
  ...props
32
- }: SGDS.Component.ErrorSummary) => {
33
+ }: ErrorSummaryProps) => {
33
34
  const summaryTitleId = useId();
34
35
 
35
36
  return (