@scottish-government/designsystem-react 0.13.0 → 1.0.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 (332) hide show
  1. package/.storybook/sgdsArgTypes.ts +23 -0
  2. package/CHANGELOG.md +23 -0
  3. package/LICENSE.txt +21 -0
  4. package/README.md +3 -0
  5. package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.d.ts +3 -2
  6. package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.jsx +8 -7
  7. package/dist/common/AbstractNotificationBanner/types.d.ts +13 -0
  8. package/dist/common/AbstractNotificationBanner/types.js +2 -0
  9. package/dist/common/ActionLink/ActionLink.d.ts +2 -1
  10. package/dist/common/ActionLink/types.d.ts +7 -0
  11. package/dist/common/ActionLink/types.js +2 -0
  12. package/dist/common/ConditionalWrapper/ConditionalWrapper.d.ts +2 -1
  13. package/dist/common/ConditionalWrapper/ConditionalWrapper.jsx +4 -2
  14. package/dist/common/ConditionalWrapper/types.d.ts +4 -0
  15. package/dist/common/ConditionalWrapper/types.js +2 -0
  16. package/dist/common/FileIcon/FileIcon.d.ts +2 -1
  17. package/dist/common/FileIcon/types.d.ts +6 -0
  18. package/dist/common/FileIcon/types.js +2 -0
  19. package/dist/common/HintText/HintText.d.ts +2 -1
  20. package/dist/common/HintText/HintText.jsx +3 -3
  21. package/dist/common/HintText/types.d.ts +4 -0
  22. package/dist/common/HintText/types.js +2 -0
  23. package/dist/common/Icon/Icon.d.ts +2 -1
  24. package/dist/common/Icon/Icon.jsx +3 -2
  25. package/dist/common/Icon/types.d.ts +8 -0
  26. package/dist/common/Icon/types.js +2 -0
  27. package/dist/common/ScreenReaderText/ScreenReaderText.d.ts +1 -1
  28. package/dist/common/WrapperTag/WrapperTag.d.ts +385 -1
  29. package/dist/common/WrapperTag/WrapperTag.jsx +5 -2
  30. package/dist/common/WrapperTag/types.d.ts +3 -0
  31. package/dist/common/WrapperTag/types.js +2 -0
  32. package/dist/components/Accordion/Accordion.d.ts +3 -2
  33. package/dist/components/Accordion/Accordion.jsx +12 -11
  34. package/dist/components/Accordion/types.d.ts +11 -0
  35. package/dist/components/Accordion/types.js +2 -0
  36. package/dist/components/AspectBox/AspectBox.d.ts +2 -1
  37. package/dist/components/AspectBox/AspectBox.jsx +3 -9
  38. package/dist/components/AspectBox/types.d.ts +3 -0
  39. package/dist/components/AspectBox/types.js +2 -0
  40. package/dist/components/BackToTop/BackToTop.d.ts +2 -1
  41. package/dist/components/BackToTop/BackToTop.jsx +4 -3
  42. package/dist/components/BackToTop/types.d.ts +3 -0
  43. package/dist/components/BackToTop/types.js +2 -0
  44. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +3 -2
  45. package/dist/components/Breadcrumbs/Breadcrumbs.jsx +6 -2
  46. package/dist/components/Breadcrumbs/types.d.ts +5 -0
  47. package/dist/components/Breadcrumbs/types.js +2 -0
  48. package/dist/components/Button/Button.d.ts +2 -1
  49. package/dist/components/Button/Button.jsx +4 -3
  50. package/dist/components/Button/ButtonGroup.d.ts +2 -1
  51. package/dist/components/Button/ButtonGroup.jsx +9 -4
  52. package/dist/components/Button/types.d.ts +20 -0
  53. package/dist/components/Button/types.js +2 -0
  54. package/dist/components/Card/Card.d.ts +34 -0
  55. package/dist/components/Card/Card.jsx +118 -0
  56. package/dist/components/Card/index.d.ts +1 -0
  57. package/dist/components/Card/index.js +8 -0
  58. package/dist/components/Card/types.d.ts +26 -0
  59. package/dist/components/Card/types.js +2 -0
  60. package/dist/components/CategoryItem/CategoryItem.d.ts +2 -1
  61. package/dist/components/CategoryItem/CategoryItem.jsx +8 -5
  62. package/dist/components/CategoryItem/types.d.ts +9 -0
  63. package/dist/components/CategoryItem/types.js +2 -0
  64. package/dist/components/CategoryList/CategoryList.d.ts +2 -1
  65. package/dist/components/CategoryList/CategoryList.jsx +3 -2
  66. package/dist/components/CategoryList/types.d.ts +5 -0
  67. package/dist/components/CategoryList/types.js +2 -0
  68. package/dist/components/Checkbox/Checkbox.d.ts +2 -1
  69. package/dist/components/Checkbox/Checkbox.jsx +4 -3
  70. package/dist/components/Checkbox/CheckboxGroup.d.ts +2 -1
  71. package/dist/components/Checkbox/CheckboxGroup.jsx +5 -4
  72. package/dist/components/Checkbox/types.d.ts +7 -0
  73. package/dist/components/Checkbox/types.js +2 -0
  74. package/dist/components/ConfirmationMessage/ConfirmationMessage.d.ts +2 -1
  75. package/dist/components/ConfirmationMessage/ConfirmationMessage.jsx +3 -2
  76. package/dist/components/ConfirmationMessage/types.d.ts +6 -0
  77. package/dist/components/ConfirmationMessage/types.js +2 -0
  78. package/dist/components/ContentsNav/ContentsNav.d.ts +3 -2
  79. package/dist/components/ContentsNav/ContentsNav.jsx +7 -5
  80. package/dist/components/ContentsNav/types.d.ts +9 -0
  81. package/dist/components/ContentsNav/types.js +2 -0
  82. package/dist/components/CookieBanner/CookieBanner.d.ts +3 -2
  83. package/dist/components/CookieBanner/CookieBanner.jsx +13 -3
  84. package/dist/components/DatePicker/DatePicker.d.ts +2 -1
  85. package/dist/components/DatePicker/DatePicker.jsx +7 -7
  86. package/dist/components/DatePicker/types.d.ts +18 -0
  87. package/dist/components/DatePicker/types.js +2 -0
  88. package/dist/components/Details/Details.d.ts +2 -1
  89. package/dist/components/Details/Details.jsx +6 -2
  90. package/dist/components/Details/types.d.ts +4 -0
  91. package/dist/components/Details/types.js +2 -0
  92. package/dist/components/ErrorMessage/ErrorMessage.d.ts +2 -1
  93. package/dist/components/ErrorMessage/ErrorMessage.jsx +6 -2
  94. package/dist/components/ErrorMessage/types.d.ts +3 -0
  95. package/dist/components/ErrorMessage/types.js +2 -0
  96. package/dist/components/ErrorSummary/ErrorSummary.d.ts +3 -2
  97. package/dist/components/ErrorSummary/ErrorSummary.jsx +6 -2
  98. package/dist/components/ErrorSummary/types.d.ts +8 -0
  99. package/dist/components/ErrorSummary/types.js +2 -0
  100. package/dist/components/FeatureHeader/FeatureHeader.d.ts +7 -5
  101. package/dist/components/FeatureHeader/FeatureHeader.jsx +87 -50
  102. package/dist/components/FeatureHeader/types.d.ts +12 -0
  103. package/dist/components/FeatureHeader/types.js +2 -0
  104. package/dist/components/FileDownload/FileDownload.d.ts +2 -1
  105. package/dist/components/FileDownload/FileDownload.jsx +4 -3
  106. package/dist/components/FileDownload/types.d.ts +10 -0
  107. package/dist/components/FileDownload/types.js +2 -0
  108. package/dist/components/HideThisPage/HideThisPage.d.ts +2 -1
  109. package/dist/components/HideThisPage/HideThisPage.jsx +5 -4
  110. package/dist/components/HideThisPage/types.d.ts +3 -0
  111. package/dist/components/HideThisPage/types.js +2 -0
  112. package/dist/components/InsetText/InsetText.d.ts +1 -1
  113. package/dist/components/InsetText/InsetText.jsx +6 -2
  114. package/dist/components/NotificationBanner/NotificationBanner.d.ts +3 -2
  115. package/dist/components/NotificationBanner/NotificationBanner.jsx +5 -4
  116. package/dist/components/NotificationPanel/NotificationPanel.d.ts +2 -1
  117. package/dist/components/NotificationPanel/NotificationPanel.jsx +3 -2
  118. package/dist/components/NotificationPanel/types.d.ts +6 -0
  119. package/dist/components/NotificationPanel/types.js +2 -0
  120. package/dist/components/NotificationTag/NotificationTag.d.ts +6 -0
  121. package/dist/components/NotificationTag/NotificationTag.jsx +20 -0
  122. package/dist/components/NotificationTag/index.d.ts +1 -0
  123. package/dist/components/NotificationTag/index.js +8 -0
  124. package/dist/components/NotificationTag/types.d.ts +5 -0
  125. package/dist/components/NotificationTag/types.js +2 -0
  126. package/dist/components/PageHeader/PageHeader.d.ts +2 -1
  127. package/dist/components/PageHeader/PageHeader.jsx +6 -2
  128. package/dist/components/PageHeader/types.d.ts +5 -0
  129. package/dist/components/PageHeader/types.js +2 -0
  130. package/dist/components/PageMetadata/PageMetadata.d.ts +3 -2
  131. package/dist/components/PageMetadata/PageMetadata.jsx +8 -4
  132. package/dist/components/PageMetadata/types.d.ts +6 -0
  133. package/dist/components/PageMetadata/types.js +2 -0
  134. package/dist/components/Pagination/Pagination.d.ts +3 -2
  135. package/dist/components/Pagination/Pagination.jsx +7 -5
  136. package/dist/components/Pagination/types.d.ts +18 -0
  137. package/dist/components/Pagination/types.js +2 -0
  138. package/dist/components/PhaseBanner/PhaseBanner.d.ts +2 -1
  139. package/dist/components/PhaseBanner/PhaseBanner.jsx +3 -2
  140. package/dist/components/PhaseBanner/types.d.ts +3 -0
  141. package/dist/components/PhaseBanner/types.js +2 -0
  142. package/dist/components/Question/Question.d.ts +2 -1
  143. package/dist/components/Question/Question.jsx +4 -3
  144. package/dist/components/Question/types.d.ts +9 -0
  145. package/dist/components/Question/types.js +2 -0
  146. package/dist/components/RadioButton/RadioButton.d.ts +2 -1
  147. package/dist/components/RadioButton/RadioButton.jsx +4 -3
  148. package/dist/components/RadioButton/RadioGroup.d.ts +2 -1
  149. package/dist/components/RadioButton/RadioGroup.jsx +3 -2
  150. package/dist/components/RadioButton/types.d.ts +10 -0
  151. package/dist/components/RadioButton/types.js +2 -0
  152. package/dist/components/SearchFacets/SearchFacets.d.ts +4 -3
  153. package/dist/components/SearchFacets/SearchFacets.jsx +3 -2
  154. package/dist/components/SearchFacets/types.d.ts +12 -0
  155. package/dist/components/SearchFacets/types.js +2 -0
  156. package/dist/components/SearchFilters/SearchFilters.d.ts +5 -4
  157. package/dist/components/SearchFilters/types.d.ts +12 -0
  158. package/dist/components/SearchFilters/types.js +2 -0
  159. package/dist/components/SearchResult/SearchResult.d.ts +8 -11
  160. package/dist/components/SearchResult/SearchResult.jsx +6 -7
  161. package/dist/components/SearchResult/types.d.ts +11 -0
  162. package/dist/components/SearchResult/types.js +2 -0
  163. package/dist/components/SearchSort/SearchSort.d.ts +2 -1
  164. package/dist/components/SearchSort/SearchSort.jsx +3 -2
  165. package/dist/components/SearchSort/types.d.ts +7 -0
  166. package/dist/components/SearchSort/types.js +2 -0
  167. package/dist/components/Select/Select.d.ts +2 -1
  168. package/dist/components/Select/Select.jsx +4 -3
  169. package/dist/components/Select/types.d.ts +6 -0
  170. package/dist/components/Select/types.js +2 -0
  171. package/dist/components/SequentialNavigation/SequentialNavigation.d.ts +4 -3
  172. package/dist/components/SequentialNavigation/SequentialNavigation.jsx +10 -6
  173. package/dist/components/SequentialNavigation/types.d.ts +10 -0
  174. package/dist/components/SequentialNavigation/types.js +2 -0
  175. package/dist/components/SideNavigation/SideNavigation.d.ts +4 -3
  176. package/dist/components/SideNavigation/SideNavigation.jsx +10 -7
  177. package/dist/components/SideNavigation/types.d.ts +13 -0
  178. package/dist/components/SideNavigation/types.js +2 -0
  179. package/dist/components/SiteFooter/SiteFooter.d.ts +6 -5
  180. package/dist/components/SiteFooter/SiteFooter.jsx +4 -3
  181. package/dist/components/SiteFooter/types.d.ts +16 -0
  182. package/dist/components/SiteFooter/types.js +2 -0
  183. package/dist/components/SiteHeader/SiteHeader.d.ts +6 -5
  184. package/dist/components/SiteHeader/SiteHeader.jsx +1 -1
  185. package/dist/components/SiteHeader/types.d.ts +20 -0
  186. package/dist/components/SiteHeader/types.js +2 -0
  187. package/dist/components/SiteNavigation/SiteNavigation.d.ts +3 -2
  188. package/dist/components/SiteNavigation/SiteNavigation.jsx +12 -4
  189. package/dist/components/SiteNavigation/types.d.ts +9 -0
  190. package/dist/components/SiteNavigation/types.js +2 -0
  191. package/dist/components/SiteSearch/SiteSearch.d.ts +2 -1
  192. package/dist/components/SiteSearch/SiteSearch.jsx +12 -11
  193. package/dist/components/SiteSearch/types.d.ts +17 -0
  194. package/dist/components/SiteSearch/types.js +2 -0
  195. package/dist/components/SkipLinks/SkipLinks.d.ts +3 -2
  196. package/dist/components/SkipLinks/SkipLinks.jsx +4 -4
  197. package/dist/components/SkipLinks/types.d.ts +8 -0
  198. package/dist/components/SkipLinks/types.js +2 -0
  199. package/dist/components/SummaryCard/SummaryCard.d.ts +4 -2
  200. package/dist/components/SummaryCard/SummaryCard.jsx +5 -4
  201. package/dist/components/SummaryCard/types.d.ts +5 -0
  202. package/dist/components/SummaryCard/types.js +2 -0
  203. package/dist/components/SummaryList/SummaryList.d.ts +6 -4
  204. package/dist/components/SummaryList/SummaryList.jsx +5 -4
  205. package/dist/components/SummaryList/types.d.ts +6 -0
  206. package/dist/components/SummaryList/types.js +2 -0
  207. package/dist/components/Table/Table.d.ts +2 -1
  208. package/dist/components/Table/Table.jsx +5 -4
  209. package/dist/components/Table/types.d.ts +6 -0
  210. package/dist/components/Table/types.js +2 -0
  211. package/dist/components/Tabs/Tabs.d.ts +3 -2
  212. package/dist/components/Tabs/Tabs.jsx +6 -5
  213. package/dist/components/Tabs/types.d.ts +16 -0
  214. package/dist/components/Tabs/types.js +2 -0
  215. package/dist/components/Tag/Tag.d.ts +2 -1
  216. package/dist/components/Tag/Tag.jsx +7 -3
  217. package/dist/components/Tag/types.d.ts +4 -0
  218. package/dist/components/Tag/types.js +2 -0
  219. package/dist/components/TaskList/TaskList.d.ts +4 -3
  220. package/dist/components/TaskList/TaskList.jsx +11 -8
  221. package/dist/components/TaskList/types.d.ts +17 -0
  222. package/dist/components/TaskList/types.js +2 -0
  223. package/dist/components/TextInput/TextInput.d.ts +2 -1
  224. package/dist/components/TextInput/TextInput.jsx +10 -9
  225. package/dist/components/TextInput/types.d.ts +11 -0
  226. package/dist/components/TextInput/types.js +2 -0
  227. package/dist/components/Textarea/Textarea.d.ts +2 -1
  228. package/dist/components/Textarea/Textarea.jsx +6 -5
  229. package/dist/components/WarningText/WarningText.d.ts +1 -1
  230. package/dist/components/WarningText/WarningText.jsx +6 -2
  231. package/dist/hooks/useTracking/useTracking.js +0 -1
  232. package/package.json +5 -3
  233. package/src/common/AbstractNotificationBanner/AbstractNotificationBanner.tsx +8 -6
  234. package/src/common/Icon/Icon.tsx +3 -2
  235. package/src/components/Accordion/Accordion.test.tsx +11 -0
  236. package/src/components/Accordion/Accordion.tsx +11 -10
  237. package/src/components/AspectBox/AspectBox.tsx +4 -11
  238. package/src/components/BackToTop/BackToTop.test.tsx +21 -1
  239. package/src/components/BackToTop/BackToTop.tsx +4 -3
  240. package/src/components/Breadcrumbs/Breadcrumbs.tsx +3 -2
  241. package/src/components/Button/Button.tsx +4 -3
  242. package/src/components/Button/ButtonGroup.stories.tsx +22 -0
  243. package/src/components/Button/ButtonGroup.test.tsx +21 -0
  244. package/src/components/Button/ButtonGroup.tsx +6 -3
  245. package/src/components/Button/types.ts +1 -0
  246. package/src/components/Card/Card.stories.tsx +446 -0
  247. package/src/components/Card/Card.test.tsx +282 -0
  248. package/src/components/Card/Card.tsx +208 -0
  249. package/src/components/Card/index.ts +1 -0
  250. package/src/components/Card/types.ts +30 -0
  251. package/src/components/CategoryItem/CategoryItem.tsx +3 -2
  252. package/src/components/CategoryList/CategoryList.tsx +3 -2
  253. package/src/components/Checkbox/Checkbox.test.tsx +30 -0
  254. package/src/components/Checkbox/Checkbox.tsx +3 -3
  255. package/src/components/Checkbox/CheckboxGroup.test.tsx +10 -0
  256. package/src/components/Checkbox/CheckboxGroup.tsx +5 -4
  257. package/src/components/ConfirmationMessage/ConfirmationMessage.tsx +3 -2
  258. package/src/components/ContentsNav/ContentsNav.tsx +8 -5
  259. package/src/components/CookieBanner/CookieBanner.test.tsx +18 -1
  260. package/src/components/CookieBanner/CookieBanner.tsx +4 -3
  261. package/src/components/DatePicker/DatePicker.test.tsx +52 -14
  262. package/src/components/DatePicker/DatePicker.tsx +6 -7
  263. package/src/components/DatePicker/types.ts +2 -3
  264. package/src/components/Details/Details.tsx +3 -2
  265. package/src/components/ErrorMessage/ErrorMessage.tsx +3 -2
  266. package/src/components/ErrorSummary/ErrorSummary.tsx +3 -2
  267. package/src/components/FeatureHeader/FeatureHeader.stories.tsx +223 -0
  268. package/src/components/FeatureHeader/FeatureHeader.test.tsx +298 -0
  269. package/src/components/FeatureHeader/FeatureHeader.tsx +119 -0
  270. package/src/components/FeatureHeader/index.ts +1 -0
  271. package/src/components/FeatureHeader/types.ts +13 -0
  272. package/src/components/FileDownload/FileDownload.test.tsx +1 -5
  273. package/src/components/FileDownload/FileDownload.tsx +4 -3
  274. package/src/components/HideThisPage/HideThisPage.test.tsx +12 -1
  275. package/src/components/HideThisPage/HideThisPage.tsx +5 -4
  276. package/src/components/InsetText/InsetText.tsx +4 -2
  277. package/src/components/NotificationBanner/NotificationBanner.test.tsx +10 -0
  278. package/src/components/NotificationBanner/NotificationBanner.tsx +4 -3
  279. package/src/components/NotificationPanel/NotificationPanel.tsx +3 -2
  280. package/src/components/NotificationTag/NotificationTag.stories.tsx +68 -0
  281. package/src/components/NotificationTag/NotificationTag.test.tsx +70 -0
  282. package/src/components/NotificationTag/NotificationTag.tsx +32 -0
  283. package/src/components/NotificationTag/index.ts +1 -0
  284. package/src/components/NotificationTag/types.ts +5 -0
  285. package/src/components/PageHeader/PageHeader.tsx +3 -2
  286. package/src/components/PageMetadata/PageMetadata.tsx +5 -4
  287. package/src/components/Pagination/Pagination.test.tsx +20 -0
  288. package/src/components/Pagination/Pagination.tsx +7 -5
  289. package/src/components/PhaseBanner/PhaseBanner.tsx +3 -2
  290. package/src/components/Question/Question.tsx +3 -2
  291. package/src/components/Question/types.ts +2 -2
  292. package/src/components/RadioButton/RadioButton.test.tsx +30 -0
  293. package/src/components/RadioButton/RadioButton.tsx +3 -3
  294. package/src/components/RadioButton/RadioGroup.tsx +3 -2
  295. package/src/components/SearchFacets/SearchFacets.stories.tsx +1 -1
  296. package/src/components/SearchFacets/SearchFacets.tsx +3 -2
  297. package/src/components/SearchResult/SearchResult.stories.tsx +14 -13
  298. package/src/components/SearchResult/SearchResult.test.tsx +5 -4
  299. package/src/components/SearchResult/SearchResult.tsx +6 -7
  300. package/src/components/SearchSort/SearchSort.tsx +3 -2
  301. package/src/components/Select/Select.test.tsx +42 -0
  302. package/src/components/Select/Select.tsx +3 -2
  303. package/src/components/SequentialNavigation/SequentialNavigation.tsx +7 -6
  304. package/src/components/SideNavigation/SideNavigation.test.tsx +24 -0
  305. package/src/components/SideNavigation/SideNavigation.tsx +10 -7
  306. package/src/components/SiteFooter/SiteFooter.tsx +3 -2
  307. package/src/components/SiteHeader/SiteHeader.test.tsx +29 -16
  308. package/src/components/SiteHeader/SiteHeader.tsx +1 -1
  309. package/src/components/SiteNavigation/SiteNavigation.test.tsx +16 -1
  310. package/src/components/SiteNavigation/SiteNavigation.tsx +9 -4
  311. package/src/components/SiteSearch/SiteSearch.test.tsx +22 -0
  312. package/src/components/SiteSearch/SiteSearch.tsx +10 -9
  313. package/src/components/SiteSearch/types.ts +7 -1
  314. package/src/components/SkipLinks/SkipLinks.tsx +4 -4
  315. package/src/components/SummaryCard/SummaryCard.tsx +3 -2
  316. package/src/components/SummaryList/SummaryList.tsx +3 -3
  317. package/src/components/Table/Table.test.tsx +36 -0
  318. package/src/components/Table/Table.tsx +5 -4
  319. package/src/components/Tabs/Tabs.test.tsx +14 -0
  320. package/src/components/Tabs/Tabs.tsx +6 -5
  321. package/src/components/Tag/Tag.tsx +4 -3
  322. package/src/components/TaskList/TaskList.tsx +5 -4
  323. package/src/components/TextInput/TextInput.test.tsx +53 -1
  324. package/src/components/TextInput/TextInput.tsx +12 -7
  325. package/src/components/Textarea/Textarea.test.tsx +53 -1
  326. package/src/components/Textarea/Textarea.tsx +5 -4
  327. package/src/components/WarningText/WarningText.tsx +4 -2
  328. package/src/hooks/useTracking/useTracking.ts +0 -1
  329. package/src/shared-types.ts +3 -3
  330. package/static/images/illustration.svg +502 -0
  331. package/tsconfig.json +0 -3
  332. package/vite.config.ts +4 -0
@@ -52,6 +52,16 @@ const SGDSArgTypes = {
52
52
  type: 'string'
53
53
  }, options) as InputType;
54
54
  },
55
+ boolean: (options?: ArgType) => {
56
+ return Object.assign({
57
+ control: 'boolean',
58
+ table: {
59
+ type: {
60
+ summary: 'boolean'
61
+ }
62
+ }
63
+ }, options) as InputType;
64
+ },
55
65
  children: (options?: ArgType) => {
56
66
  return Object.assign({
57
67
  control: false
@@ -170,6 +180,19 @@ const SGDSArgTypes = {
170
180
  type: 'function'
171
181
  }, options) as InputType;
172
182
  },
183
+ select: (params: {
184
+ default?: string,
185
+ description?: string,
186
+ options: string[] | number[]
187
+ }) => {
188
+ return {
189
+ defaultValue: { summary: params.default },
190
+ control: { type: 'select' },
191
+ options: params.options,
192
+ description: params.description,
193
+ type: typeof params.options[0]
194
+ } as InputType;
195
+ },
173
196
  tagColour: (options?: ArgType) => {
174
197
  return Object.assign({
175
198
  control: { type: 'select' },
package/CHANGELOG.md CHANGED
@@ -6,6 +6,29 @@ Changes are grouped under the labels: `Added`, `Changed`, `Deprecated`, `Fixed`,
6
6
  `Removed` and `Security`.
7
7
 
8
8
  ---
9
+
10
+ ## [1.0.0] - 2026-04-21
11
+
12
+ ### Added
13
+ - Card component
14
+ - FeatureHeader component
15
+ - NotificationTag component
16
+ - New 'isWrap' prop added to ButtonGroup
17
+ ### Changed
18
+ - SearchResult.Meta altered to be a clearer implementation of the Metadata component, with Metadata.Item children
19
+ - Use the clsx package to handle className concatenation in components
20
+ - Component updates required by SG Design System v4
21
+ - AspectBox: remove useEffect (an IE11 fallback)
22
+ - DatePicker: remove 'iconPath' prop
23
+ - FileDownload: add outline modifier class to cover images
24
+ ### Fixed
25
+ - HideThisPage: pass ref.current to the function call in useEffect
26
+ - SiteSearch: check for presence of an autocomplete element before firing the DS script
27
+ ### Security
28
+ - Update dependencies
29
+
30
+ ---
31
+
9
32
  ## [0.13.0] - 2025-12-19
10
33
 
11
34
  ### Added
package/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) Crown Copyright 2019
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
+ of the Software, and to permit persons to whom the Software is furnished to do
10
+ so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # @scottish-government/designsystem-react
2
+ [![NPM version](https://img.shields.io/npm/v/%40scottish-government%2Fdesignsystem-react)](https://www.npmjs.com/package/@scottish-government/designsystem-react)
3
+ [![Tests](https://github.com/scottish-government-design-system/designsystem-react/actions/workflows/tests.yml/badge.svg)](https://github.com/scottish-government-design-system/designsystem-react/actions/workflows/tests.yml)
4
+ [![Build](https://github.com/scottish-government-design-system/designsystem-react/actions/workflows/build.yml/badge.svg)](https://github.com/scottish-government-design-system/designsystem-react/actions/workflows/build.yml)
2
5
 
3
6
  This repository contains a React implementation of the [Scottish Government Design System](https://designsystem.gov.scot/).
4
7
 
@@ -1,8 +1,9 @@
1
+ import { AbstractNotificationBannerProps, AbstractNotificationBannerButtonsProps } from './types';
1
2
  declare const AbstractNotificationBanner: {
2
- ({ children, className, hasColourIcon, hasInverseIcon, icon, isDismissable, title, ...props }: SGDS.Common.AbstractNotificationBanner): import("react").JSX.Element;
3
+ ({ children, className, hasColourIcon, hasInverseIcon, icon, isDismissable, title, ...props }: AbstractNotificationBannerProps): import("react").JSX.Element;
3
4
  displayName: string;
4
5
  Buttons: {
5
- ({ children }: SGDS.Common.AbstractNotificationBanner.Buttons): import("react").JSX.Element;
6
+ ({ children }: AbstractNotificationBannerButtonsProps): import("react").JSX.Element;
6
7
  displayName: string;
7
8
  };
8
9
  };
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = require("react");
7
7
  const Icon_1 = __importDefault(require("../Icon"));
8
8
  const ScreenReaderText_1 = __importDefault(require("../ScreenReaderText"));
9
+ const clsx_1 = __importDefault(require("clsx"));
9
10
  const Buttons = ({ children }) => {
10
11
  return (<div className="ds_button-group">{children}</div>);
11
12
  };
12
13
  const AbstractNotificationBanner = ({ children, className, hasColourIcon, hasInverseIcon, icon, isDismissable, title = 'Information', ...props }) => {
13
- let content = [];
14
+ const content = [];
14
15
  let buttons;
15
16
  react_1.Children.forEach(children, (child) => {
16
17
  const thisChild = child;
@@ -21,23 +22,23 @@ const AbstractNotificationBanner = ({ children, className, hasColourIcon, hasInv
21
22
  content.push(thisChild);
22
23
  }
23
24
  });
24
- return (<div className={[
25
+ return (<div className={(0, clsx_1.default)([
25
26
  'ds_notification',
26
27
  className
27
- ].join(' ')} data-module="ds-notification" {...props}>
28
+ ])} data-module="ds-notification" {...props}>
28
29
  <div className="ds_wrapper">
29
- <div className={[
30
+ <div className={(0, clsx_1.default)([
30
31
  'ds_notification__content',
31
32
  isDismissable && 'ds_notification__content--has-close'
32
- ].join(' ')}>
33
+ ])}>
33
34
  <h2 className="visually-hidden">{title}</h2>
34
35
 
35
36
  {icon &&
36
- <span className={[
37
+ <span className={(0, clsx_1.default)([
37
38
  'ds_notification__icon',
38
39
  hasInverseIcon && 'ds_notification__icon--inverse',
39
40
  hasColourIcon && 'ds_notification__icon--colour'
40
- ].join(' ')} aria-hidden="true">
41
+ ])} aria-hidden="true">
41
42
  <Icon_1.default icon={icon}/>
42
43
  </span>}
43
44
 
@@ -0,0 +1,13 @@
1
+ import { IconName } from '../../shared-types';
2
+ export interface AbstractNotificationBannerProps extends React.AllHTMLAttributes<HTMLDivElement> {
3
+ hasIcon?: boolean;
4
+ hasColourIcon?: boolean;
5
+ hasInverseIcon?: boolean;
6
+ icon?: IconName;
7
+ isDismissable?: boolean;
8
+ title?: string;
9
+ ref?: React.Ref<HTMLDivElement>;
10
+ }
11
+ export interface AbstractNotificationBannerButtonsProps extends React.AllHTMLAttributes<HTMLDivElement> {
12
+ children: React.ReactNode;
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,6 @@
1
+ import { ActionLinkProps } from './types';
1
2
  declare const ActionLink: {
2
- ({ children, describedby, href, linkComponent, onclick }: SGDS.Common.ActionLink): string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
3
+ ({ children, describedby, href, linkComponent, onclick }: ActionLinkProps): string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
3
4
  displayName: string;
4
5
  };
5
6
  export default ActionLink;
@@ -0,0 +1,7 @@
1
+ import { LinkComponent } from '../../shared-types';
2
+ export interface ActionLinkProps extends React.AllHTMLAttributes<HTMLElement> {
3
+ describedby?: string;
4
+ href?: string;
5
+ linkComponent?: LinkComponent;
6
+ onclick?: React.EventHandler<React.MouseEvent>;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Wraps all children in a specified HTML tag if a condition is met.
3
3
  */
4
+ import { ConditionalWrapperProps } from "./types";
4
5
  declare const ConditionalWrapper: {
5
- ({ condition, wrapper, children }: SGDS.Common.ConditionalWrapper): any;
6
+ ({ condition, wrapper, children }: ConditionalWrapperProps): string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
6
7
  displayName: string;
7
8
  };
8
9
  export default ConditionalWrapper;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
2
  /**
4
3
  * Wraps all children in a specified HTML tag if a condition is met.
5
4
  */
6
- const ConditionalWrapper = ({ condition, wrapper, children }) => condition ? wrapper(children) : children;
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ConditionalWrapper = ({ condition, wrapper, children }) => {
7
+ return condition ? wrapper(children) : children;
8
+ };
7
9
  ConditionalWrapper.displayName = 'ConditionalWrapper';
8
10
  exports.default = ConditionalWrapper;
@@ -0,0 +1,4 @@
1
+ export interface ConditionalWrapperProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ condition: boolean;
3
+ wrapper: (children: React.JSX.Element) => React.JSX.Element;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { FileIconProps } from './types';
2
3
  declare const FileIcon: {
3
- ({ ariaLabel, className, icon }: SGDS.Common.FileIcon): React.JSX.Element;
4
+ ({ ariaLabel, className, icon }: FileIconProps): React.JSX.Element;
4
5
  displayName: string;
5
6
  };
6
7
  export default FileIcon;
@@ -0,0 +1,6 @@
1
+ import { DocumentIconName } from '../../shared-types';
2
+ export interface FileIconProps extends React.AllHTMLAttributes<SVGSVGElement> {
3
+ ariaLabel?: React.AriaAttributes['aria-label'];
4
+ className?: string;
5
+ icon: DocumentIconName;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,6 @@
1
+ import { HintTextProps } from "./types";
1
2
  declare const HintText: {
2
- ({ children, id, text, ...props }: SGDS.Common.HintText): import("react").JSX.Element;
3
+ ({ children, id, ...props }: HintTextProps): import("react").JSX.Element;
3
4
  displayName: string;
4
5
  };
5
6
  export default HintText;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const HintText = ({ children, id, text, ...props }) => {
4
- return (<p className="ds_hint-text" dangerouslySetInnerHTML={text ? { __html: text } : undefined} id={id} {...props}>
5
- {!text ? children : null}
3
+ const HintText = ({ children, id, ...props }) => {
4
+ return (<p className="ds_hint-text" id={id} {...props}>
5
+ {children}
6
6
  </p>);
7
7
  };
8
8
  HintText.displayName = 'HintText';
@@ -0,0 +1,4 @@
1
+ export interface HintTextProps extends React.AllHTMLAttributes<HTMLElement> {
2
+ id?: string;
3
+ text?: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { IconProps } from './types';
2
3
  declare const Icon: {
3
- ({ ariaLabel, className, isFilled, icon, iconSize }: SGDS.Common.Icon): React.JSX.Element;
4
+ ({ ariaLabel, className, isFilled, icon, iconSize }: IconProps): React.JSX.Element;
4
5
  displayName: string;
5
6
  };
6
7
  export default Icon;
@@ -38,14 +38,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  const react_1 = __importDefault(require("react"));
40
40
  const Icons = __importStar(require("../../images/icons"));
41
+ const clsx_1 = __importDefault(require("clsx"));
41
42
  const Icon = ({ ariaLabel, className, isFilled, icon, iconSize }) => {
42
43
  const IconComponent = Icons[icon];
43
- return (<IconComponent aria-hidden={ariaLabel ? undefined : true} aria-label={ariaLabel} className={[
44
+ return (<IconComponent aria-hidden={ariaLabel ? undefined : true} aria-label={ariaLabel} className={(0, clsx_1.default)([
44
45
  'ds_icon',
45
46
  className,
46
47
  isFilled && 'ds_icon--fill',
47
48
  iconSize && `ds_icon--${iconSize}`
48
- ].join(' ')}/>);
49
+ ])}/>);
49
50
  };
50
51
  Icon.displayName = 'Icon';
51
52
  exports.default = Icon;
@@ -0,0 +1,8 @@
1
+ import { IconName } from '../../shared-types';
2
+ export interface IconProps extends React.AllHTMLAttributes<SVGSVGElement> {
3
+ ariaLabel?: React.AriaAttributes['aria-label'];
4
+ className?: string;
5
+ isFilled?: boolean;
6
+ icon: IconName;
7
+ iconSize?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,5 @@
1
1
  declare const ScreenReaderText: {
2
- ({ children, ...props }: SGDS.Common.ScreenReaderText): import("react").JSX.Element;
2
+ ({ children, ...props }: React.AllHTMLAttributes<HTMLElement>): import("react").JSX.Element;
3
3
  displayName: string;
4
4
  };
5
5
  export default ScreenReaderText;