uikit-react-public 0.14.21 → 0.21.8

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 (392) hide show
  1. package/README.md +2 -2
  2. package/dist/components/Accordion/Accordion.Heading.d.ts +5 -4
  3. package/dist/components/Accordion/Accordion.Panel.d.ts +2 -2
  4. package/dist/components/Accordion/Accordion.d.ts +1 -1
  5. package/dist/components/Accordion/Accordion.stories.d.ts +57 -0
  6. package/dist/components/Accordion/index.d.ts +2 -0
  7. package/dist/components/AppHeader/AppHeader.d.ts +1 -1
  8. package/dist/components/AppHeader/AppHeaderBottom.d.ts +1 -1
  9. package/dist/components/AppHeader/AppHeaderNav.d.ts +1 -1
  10. package/dist/components/AppHeader/AppHeaderTop.d.ts +1 -1
  11. package/dist/components/Avatar/Avatar.stories.d.ts +107 -1
  12. package/dist/components/Breadcrumbs/Breadcrumb.d.ts +3 -4
  13. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  14. package/dist/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  15. package/dist/components/Button/Button.d.ts +8 -3
  16. package/dist/components/Button/Button.stories.d.ts +17 -7
  17. package/dist/components/Button/style/buttonAccentStyle.d.ts +4 -0
  18. package/dist/components/Button/style/buttonPrimaryDestructiveStyle.d.ts +4 -0
  19. package/dist/components/Button/style/buttonPrimaryStyle.d.ts +4 -0
  20. package/dist/components/Button/style/buttonPrimarySubtleStyle.d.ts +4 -0
  21. package/dist/components/Button/style/buttonPrimaryWarningStyle.d.ts +4 -0
  22. package/dist/components/Button/style/buttonSecondaryDestructiveStyle.d.ts +4 -0
  23. package/dist/components/Button/style/buttonSecondaryStyle.d.ts +4 -0
  24. package/dist/components/Button/style/buttonSecondarySubtleStyle.d.ts +4 -0
  25. package/dist/components/Button/style/buttonTertiaryDestructiveStyle.d.ts +4 -0
  26. package/dist/components/Button/style/buttonTertiaryNoPaddingStyle.d.ts +4 -0
  27. package/dist/components/Button/style/buttonTertiaryStyle.d.ts +4 -0
  28. package/dist/components/Calendar/index.d.ts +1 -1
  29. package/dist/components/Checkbox/Checkbox.d.ts +1 -0
  30. package/dist/components/Datepicker/Datepicker.d.ts +1 -1
  31. package/dist/components/Datepicker/Datepicker.stories.d.ts +4 -3
  32. package/dist/components/Datepicker/Datepicker.types.d.ts +4 -5
  33. package/dist/components/Datepicker/subcomponents/CustomDatepicker.d.ts +4 -1
  34. package/dist/components/Datepicker/subcomponents/DatepickerInput.d.ts +15 -2
  35. package/dist/components/Datepicker/subcomponents/Panel.d.ts +1 -1
  36. package/dist/components/Datepicker/subcomponents/VisibleField.d.ts +6 -1
  37. package/dist/components/Datepicker/subcomponents/index.d.ts +0 -1
  38. package/dist/components/Datepicker/utils/index.d.ts +0 -1
  39. package/dist/components/Dialog/BaseDialog.d.ts +2 -1
  40. package/dist/components/Dialog/Dialog.d.ts +2 -0
  41. package/dist/components/FooterNew/BackToTop.d.ts +8 -0
  42. package/dist/components/FooterNew/Footer.d.ts +23 -0
  43. package/dist/components/FooterNew/FooterColumn.d.ts +8 -0
  44. package/dist/components/FooterNew/FooterLinks.d.ts +7 -0
  45. package/dist/components/FooterNew/FooterNavLink.d.ts +8 -0
  46. package/dist/components/FooterNew/LegalAndCopyright.d.ts +14 -0
  47. package/dist/components/FooterNew/LogoAddressAndSocial.d.ts +10 -0
  48. package/dist/components/FooterNew/SocialLink.d.ts +8 -0
  49. package/dist/components/FooterNew/index.d.ts +2 -0
  50. package/dist/components/Header/Header.d.ts +4 -1
  51. package/dist/components/Header/Header.stories.d.ts +40 -0
  52. package/dist/components/HeaderNew/Header.d.ts +18 -0
  53. package/dist/components/HeaderNew/HeaderBorder.d.ts +7 -0
  54. package/dist/components/HeaderNew/HeaderLogo.d.ts +9 -0
  55. package/dist/components/HeaderNew/HeaderMenuContainer.d.ts +7 -0
  56. package/dist/components/HeaderNew/HeaderTitle.d.ts +9 -0
  57. package/dist/components/HeaderNew/__tests__/Header.test.d.ts +1 -0
  58. package/dist/components/HeaderNew/constants.d.ts +3 -0
  59. package/dist/components/HeaderNew/index.d.ts +3 -0
  60. package/dist/components/HeadingNew/Heading.d.ts +13 -0
  61. package/dist/components/HeadingNew/index.d.ts +2 -0
  62. package/dist/components/Icon/svgImports.d.ts +7 -881
  63. package/dist/components/Link/BaseLink.d.ts +14 -5
  64. package/dist/components/Link/Link.d.ts +8 -3
  65. package/dist/components/Link/Link.stories.d.ts +3 -1
  66. package/dist/components/Main/Main.d.ts +21 -0
  67. package/dist/components/Main/Main.stories.d.ts +15 -0
  68. package/dist/components/Main/__tests__/Main.test.d.ts +1 -0
  69. package/dist/components/Main/index.d.ts +2 -0
  70. package/dist/components/MenuNew/Menu.context.d.ts +14 -0
  71. package/dist/components/MenuNew/Menu.d.ts +20 -0
  72. package/dist/components/MenuNew/MenuContent.d.ts +9 -0
  73. package/dist/components/MenuNew/MenuItem.d.ts +10 -0
  74. package/dist/components/MenuNew/MenuSection.d.ts +7 -0
  75. package/dist/components/MenuNew/index.d.ts +6 -0
  76. package/dist/components/MenuNew/trigger/ButtonMenuTrigger.d.ts +8 -0
  77. package/dist/components/MenuNew/trigger/IconMenuTrigger.d.ts +8 -0
  78. package/dist/components/NativeDatepicker/NativeDatepicker.d.ts +3 -0
  79. package/dist/components/NativeDatepicker/NativeDatepicker.stories.d.ts +36 -0
  80. package/dist/components/NativeDatepicker/NativeDatepicker.types.d.ts +10 -0
  81. package/dist/components/NativeDatepicker/index.d.ts +2 -0
  82. package/dist/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.d.ts +1 -1
  83. package/dist/components/NativeDatepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.d.ts +1 -0
  84. package/dist/components/NativeDatepicker/utils/index.d.ts +1 -0
  85. package/dist/components/Overlay/Overlay.stories.d.ts +12 -12
  86. package/dist/components/ParagraphNew/Paragraph.d.ts +13 -0
  87. package/dist/components/ParagraphNew/index.d.ts +4 -0
  88. package/dist/components/Select/Select.d.ts +2 -1
  89. package/dist/components/Select/Select.stories.d.ts +167 -3
  90. package/dist/components/Select/Select.types.d.ts +75 -19
  91. package/dist/components/Select/subcomponents/CustomOption.d.ts +1 -1
  92. package/dist/components/Select/subcomponents/CustomSelect.d.ts +3 -2
  93. package/dist/components/Select/subcomponents/FilterInput.d.ts +16 -0
  94. package/dist/components/Select/subcomponents/NativeSelect.d.ts +5 -1
  95. package/dist/components/Select/subcomponents/VisibleField.d.ts +6 -1
  96. package/dist/components/Select/subcomponents/index.d.ts +1 -0
  97. package/dist/components/Spinner/Spinner.d.ts +2 -0
  98. package/dist/components/StandaloneLink/StandaloneLink.d.ts +8 -5
  99. package/dist/components/StandaloneLink/StandaloneLink.stories.d.ts +3 -1
  100. package/dist/components/Table/Table.d.ts +3 -3
  101. package/dist/components/Table/Table.stories.d.ts +3 -3
  102. package/dist/components/Table/Table.types.d.ts +1 -0
  103. package/dist/components/Table/subcomponents/Cell/Cell.d.ts +5 -1
  104. package/dist/components/Table/subcomponents/Cell/Cell.stories.d.ts +15 -13
  105. package/dist/components/Table/subcomponents/Cell/CellContent.d.ts +5 -1
  106. package/dist/components/Table/subcomponents/HeadCell/HeadCell.d.ts +2 -1
  107. package/dist/components/Table/subcomponents/HeadCell/HeadCell.stories.d.ts +14 -13
  108. package/dist/components/Table/subcomponents/HeadCell/HeadCellContent.d.ts +2 -1
  109. package/dist/components/Table/subcomponents/__tests__/Row.test.d.ts +1 -0
  110. package/dist/components/UclLogoNew/UclLogo.d.ts +8 -0
  111. package/dist/components/UclLogoNew/index.d.ts +2 -0
  112. package/dist/components/WeekPicker/WeekPicker.d.ts +2 -2
  113. package/dist/components/WeekPicker/WeekPicker.stories.d.ts +41 -0
  114. package/dist/components/WeekPicker/WeekPicker.types.d.ts +16 -0
  115. package/dist/components/WeekPicker/index.d.ts +1 -0
  116. package/dist/components/WeekPicker/subcomponents/CustomDatepicker.d.ts +1 -1
  117. package/dist/components/index.d.ts +20 -0
  118. package/dist/hooks/useFocusTrap.d.ts +2 -1
  119. package/dist/index.d.ts +1 -0
  120. package/dist/index.js +22204 -16719
  121. package/dist/theme/__tests__/fonts.test.d.ts +1 -0
  122. package/dist/theme/common/themeCommon.d.ts +904 -0
  123. package/dist/theme/fonts.d.ts +18 -0
  124. package/dist/theme/index.d.ts +6 -3
  125. package/dist/theme/light/lightColour.d.ts +126 -0
  126. package/dist/theme/light/lightTheme.d.ts +3 -0
  127. package/dist/theme/original/color.d.ts +166 -0
  128. package/dist/theme/original/defaultTheme.d.ts +1340 -0
  129. package/dist/theme/original/originalColourNewStructure.d.ts +126 -0
  130. package/dist/theme/useTheme.d.ts +2174 -0
  131. package/dist/utils/__tests__/announce.test.d.ts +1 -0
  132. package/dist/utils/addAlphaToHex.d.ts +5 -0
  133. package/dist/utils/announce.d.ts +6 -0
  134. package/dist/utils/index.d.ts +1 -0
  135. package/dist/utils/scrollToTop.d.ts +2 -0
  136. package/lib/components/Accordion/Accordion.Heading.tsx +65 -34
  137. package/lib/components/Accordion/Accordion.Panel.tsx +11 -7
  138. package/lib/components/Accordion/Accordion.stories.tsx +139 -0
  139. package/lib/components/Accordion/Accordion.tsx +39 -31
  140. package/lib/components/Accordion/__tests__/__snapshots__/Accordion.test.tsx.snap +15 -13
  141. package/lib/components/Accordion/index.ts +2 -0
  142. package/lib/components/Alert/Alert.stories.tsx +1 -1
  143. package/lib/components/Alert/Alert.tsx +12 -12
  144. package/lib/components/Alert/__tests__/__snapshots__/Alert.test.tsx.snap +13 -39
  145. package/lib/components/AppHeader/AppHeader.tsx +6 -11
  146. package/lib/components/AppHeader/AppHeaderBottom.tsx +2 -3
  147. package/lib/components/AppHeader/AppHeaderNav.tsx +2 -3
  148. package/lib/components/AppHeader/AppHeaderTop.tsx +1 -1
  149. package/lib/components/AppHeader/__tests__/__snapshots__/AppHeader.test.tsx.snap +2 -2
  150. package/lib/components/AppMenu/__tests__/__snapshots__/AppMenu.test.tsx.snap +6 -19
  151. package/lib/components/Avatar/Avatar.mdx +117 -0
  152. package/lib/components/Avatar/Avatar.stories.tsx +110 -2
  153. package/lib/components/Badge/Badge.stories.tsx +1 -1
  154. package/lib/components/Blanket/Blanket.stories.tsx +1 -1
  155. package/lib/components/Breadcrumbs/Breadcrumb.tsx +26 -12
  156. package/lib/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  157. package/lib/components/Breadcrumbs/__tests__/Breadcrumbs.test.tsx +9 -27
  158. package/lib/components/Breadcrumbs/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +24 -20
  159. package/lib/components/Button/Button.mdx +32 -279
  160. package/lib/components/Button/Button.stories.tsx +44 -51
  161. package/lib/components/Button/Button.tsx +166 -25
  162. package/lib/components/Button/__tests__/Button.test.tsx +49 -15
  163. package/lib/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +80 -73
  164. package/lib/components/Button/style/buttonAccentStyle.ts +53 -0
  165. package/lib/components/Button/style/buttonPrimaryDestructiveStyle.ts +55 -0
  166. package/lib/components/Button/style/buttonPrimaryStyle.ts +53 -0
  167. package/lib/components/Button/style/buttonPrimarySubtleStyle.ts +64 -0
  168. package/lib/components/Button/style/buttonPrimaryWarningStyle.ts +56 -0
  169. package/lib/components/Button/style/buttonSecondaryDestructiveStyle.ts +63 -0
  170. package/lib/components/Button/style/buttonSecondaryStyle.ts +62 -0
  171. package/lib/components/Button/style/buttonSecondarySubtleStyle.ts +72 -0
  172. package/lib/components/Button/style/buttonTertiaryDestructiveStyle.ts +65 -0
  173. package/lib/components/Button/style/buttonTertiaryNoPaddingStyle.ts +52 -0
  174. package/lib/components/Button/style/buttonTertiaryStyle.ts +62 -0
  175. package/lib/components/Calendar/Calendar.stories.tsx +1 -1
  176. package/lib/components/Calendar/Calendar.tsx +2 -2
  177. package/lib/components/Calendar/__tests__/Calendar.test.tsx +23 -15
  178. package/lib/components/Calendar/__tests__/__snapshots__/Calendar.test.tsx.snap +99 -95
  179. package/lib/components/Calendar/index.ts +1 -5
  180. package/lib/components/Calendar/subcomponents/AcademicWeek.tsx +2 -1
  181. package/lib/components/Calendar/subcomponents/AcademicWeeks.tsx +1 -1
  182. package/lib/components/Calendar/subcomponents/ColumnHeading.tsx +2 -2
  183. package/lib/components/Calendar/subcomponents/Controls.tsx +1 -1
  184. package/lib/components/Calendar/subcomponents/Day.stories.tsx +1 -1
  185. package/lib/components/Calendar/subcomponents/Day.tsx +7 -9
  186. package/lib/components/Calendar/subcomponents/EventDot.tsx +3 -6
  187. package/lib/components/Calendar/subcomponents/index.ts +1 -1
  188. package/lib/components/Calendar/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.ts +43 -11
  189. package/lib/components/Calendar/utils/normaliseMonth/normaliseMonth.test.ts +5 -5
  190. package/lib/components/Checkbox/Checkbox.stories.tsx +1 -1
  191. package/lib/components/Checkbox/Checkbox.tsx +12 -10
  192. package/lib/components/Checkbox/__tests__/Checkbox.test.tsx +29 -0
  193. package/lib/components/Checkbox/__tests__/__snapshots__/Checkbox.test.tsx.snap +4 -4
  194. package/lib/components/Datepicker/Datepicker.lld.md +108 -0
  195. package/lib/components/Datepicker/Datepicker.stories.tsx +44 -5
  196. package/lib/components/Datepicker/Datepicker.tsx +14 -36
  197. package/lib/components/Datepicker/Datepicker.types.ts +5 -14
  198. package/lib/components/Datepicker/__tests__/Datepicker.test.tsx +267 -8
  199. package/lib/components/Datepicker/__tests__/__snapshots__/Datepicker.test.tsx.snap +20 -42
  200. package/lib/components/Datepicker/subcomponents/CustomDatepicker.tsx +48 -5
  201. package/lib/components/Datepicker/subcomponents/DatepickerInput.tsx +30 -17
  202. package/lib/components/Datepicker/subcomponents/Panel.tsx +6 -2
  203. package/lib/components/Datepicker/subcomponents/VisibleField.tsx +46 -8
  204. package/lib/components/Datepicker/subcomponents/index.ts +0 -1
  205. package/lib/components/Datepicker/utils/index.ts +0 -1
  206. package/lib/components/Dialog/BaseDialog.tsx +13 -2
  207. package/lib/components/Dialog/Dialog.stories.tsx +1 -1
  208. package/lib/components/Dialog/Dialog.tsx +8 -1
  209. package/lib/components/Dialog/DialogBody.tsx +5 -1
  210. package/lib/components/Dialog/DialogHeader.tsx +2 -1
  211. package/lib/components/Divider/Divider.stories.tsx +1 -1
  212. package/lib/components/Divider/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +12 -12
  213. package/lib/components/FeedbackDialog/FeedbackDialog.stories.tsx +1 -1
  214. package/lib/components/FeedbackDialog/FeedbackDialog.tsx +4 -6
  215. package/lib/components/Field/CharacterCount.tsx +2 -2
  216. package/lib/components/Field/ErrorText.tsx +2 -1
  217. package/lib/components/Field/Field.stories.tsx +1 -1
  218. package/lib/components/Field/Field.tsx +1 -1
  219. package/lib/components/Field/HelperText.tsx +3 -1
  220. package/lib/components/Field/__tests__/Field.test.tsx +13 -0
  221. package/lib/components/FileInput/FileInput.stories.tsx +1 -1
  222. package/lib/components/FileInput/__tests__/__snapshots__/FileInput.test.tsx.snap +4 -20
  223. package/lib/components/Footer/Footer.stories.tsx +1 -1
  224. package/lib/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap +73 -82
  225. package/lib/components/FooterNew/BackToTop.tsx +83 -0
  226. package/lib/components/FooterNew/Footer.tsx +110 -0
  227. package/lib/components/FooterNew/FooterColumn.tsx +79 -0
  228. package/lib/components/FooterNew/FooterLinks.tsx +44 -0
  229. package/lib/components/FooterNew/FooterNavLink.tsx +63 -0
  230. package/lib/components/FooterNew/LegalAndCopyright.tsx +150 -0
  231. package/lib/components/FooterNew/LogoAddressAndSocial.tsx +154 -0
  232. package/lib/components/FooterNew/SocialLink.tsx +108 -0
  233. package/lib/components/FooterNew/__tests__/Footer.test.tsx +51 -0
  234. package/lib/components/FooterNew/__tests__/__snapshots__/Footer.test.tsx.snap +1107 -0
  235. package/lib/components/FooterNew/index.ts +2 -0
  236. package/lib/components/Header/Header.mdx +52 -0
  237. package/lib/components/Header/Header.stories.tsx +98 -0
  238. package/lib/components/Header/Header.tsx +51 -6
  239. package/lib/components/Header/__tests__/Header.test.tsx +17 -1
  240. package/lib/components/HeaderDraft/__tests__/__snapshots__/Header.test.tsx.snap +3 -2
  241. package/lib/components/HeaderNew/Header.tsx +93 -0
  242. package/lib/components/HeaderNew/HeaderBorder.tsx +55 -0
  243. package/lib/components/HeaderNew/HeaderLogo.tsx +70 -0
  244. package/lib/components/HeaderNew/HeaderMenuContainer.tsx +35 -0
  245. package/lib/components/HeaderNew/HeaderTitle.tsx +53 -0
  246. package/lib/components/HeaderNew/__tests__/Header.test.tsx +42 -0
  247. package/lib/components/HeaderNew/__tests__/__snapshots__/Header.test.tsx.snap +79 -0
  248. package/lib/components/HeaderNew/constants.ts +3 -0
  249. package/lib/components/HeaderNew/index.ts +7 -0
  250. package/lib/components/Heading/Heading.stories.tsx +1 -1
  251. package/lib/components/HeadingNew/Heading.tsx +208 -0
  252. package/lib/components/HeadingNew/index.ts +2 -0
  253. package/lib/components/Icon/Icon.stories.tsx +1 -1
  254. package/lib/components/Icon/__tests__/__snapshots__/Icon.test.tsx.snap +16 -12
  255. package/lib/components/Icon/svgImports.ts +318 -296
  256. package/lib/components/IconButton/IconButton.stories.tsx +1 -1
  257. package/lib/components/IconButton/IconButton.tsx +3 -4
  258. package/lib/components/IconButton/__tests__/__snapshots__/IconButton.test.tsx.snap +12 -9
  259. package/lib/components/Input/Input.stories.tsx +1 -1
  260. package/lib/components/Label/Label.stories.tsx +1 -1
  261. package/lib/components/Link/BaseLink.tsx +114 -71
  262. package/lib/components/Link/Link.stories.tsx +1 -1
  263. package/lib/components/Link/Link.tsx +120 -109
  264. package/lib/components/Link/__tests__/__snapshots__/link.test.tsx.snap +2 -2
  265. package/lib/components/Main/Main.stories.tsx +36 -0
  266. package/lib/components/Main/Main.tsx +46 -0
  267. package/lib/components/Main/__tests__/Main.test.tsx +80 -0
  268. package/lib/components/Main/__tests__/__snapshots__/Main.test.tsx.snap +33 -0
  269. package/lib/components/Main/index.ts +2 -0
  270. package/lib/components/MenuNew/Menu.context.tsx +149 -0
  271. package/lib/components/MenuNew/Menu.tsx +75 -0
  272. package/lib/components/MenuNew/MenuContent.tsx +140 -0
  273. package/lib/components/MenuNew/MenuItem.tsx +101 -0
  274. package/lib/components/MenuNew/MenuSection.tsx +47 -0
  275. package/lib/components/MenuNew/index.ts +8 -0
  276. package/lib/components/MenuNew/trigger/ButtonMenuTrigger.tsx +42 -0
  277. package/lib/components/MenuNew/trigger/IconMenuTrigger.tsx +40 -0
  278. package/lib/components/NativeDatepicker/NativeDatepicker.stories.tsx +100 -0
  279. package/lib/components/{Datepicker/subcomponents → NativeDatepicker}/NativeDatepicker.tsx +14 -15
  280. package/lib/components/NativeDatepicker/NativeDatepicker.types.ts +19 -0
  281. package/lib/components/NativeDatepicker/index.ts +2 -0
  282. package/lib/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.ts +1 -1
  283. package/lib/components/NativeDatepicker/utils/index.ts +1 -0
  284. package/lib/components/Pagination/Pagination.stories.tsx +1 -1
  285. package/lib/components/Pagination/PaginationControls.tsx +59 -17
  286. package/lib/components/Pagination/PaginationInfo.tsx +7 -4
  287. package/lib/components/Paragraph/Paragraph.stories.tsx +1 -1
  288. package/lib/components/ParagraphNew/Paragraph.tsx +200 -0
  289. package/lib/components/ParagraphNew/index.ts +6 -0
  290. package/lib/components/Radio/Radio.stories.tsx +1 -1
  291. package/lib/components/Radio/Radio.tsx +8 -8
  292. package/lib/components/Radio/__tests__/__snapshots__/Radio.test.tsx.snap +4 -4
  293. package/lib/components/Search/Search.stories.tsx +1 -1
  294. package/lib/components/Search/Search.tsx +4 -1
  295. package/lib/components/Search/__tests__/Search.test.tsx +19 -1
  296. package/lib/components/Search/__tests__/__snapshots__/Search.test.tsx.snap +12 -32
  297. package/lib/components/Select/Select.mdx +192 -0
  298. package/lib/components/Select/Select.stories.tsx +229 -48
  299. package/lib/components/Select/Select.tsx +50 -15
  300. package/lib/components/Select/Select.types.ts +99 -44
  301. package/lib/components/Select/__tests__/Select.test.tsx +698 -8
  302. package/lib/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +5 -4
  303. package/lib/components/Select/subcomponents/CustomOption.tsx +12 -4
  304. package/lib/components/Select/subcomponents/CustomSelect.tsx +411 -41
  305. package/lib/components/Select/subcomponents/FilterInput.tsx +90 -0
  306. package/lib/components/Select/subcomponents/NativeSelect.tsx +21 -17
  307. package/lib/components/Select/subcomponents/Panel.tsx +2 -2
  308. package/lib/components/Select/subcomponents/VisibleField.tsx +59 -6
  309. package/lib/components/Select/subcomponents/index.tsx +1 -0
  310. package/lib/components/Snackbar/Snackbar.stories.tsx +1 -1
  311. package/lib/components/Snackbar/__tests__/__snapshots__/Snackbar.test.tsx.snap +9 -15
  312. package/lib/components/Spinner/Spinner.stories.tsx +1 -1
  313. package/lib/components/Spinner/Spinner.tsx +24 -5
  314. package/lib/components/Spinner/__tests__/Spinner.test.tsx +35 -5
  315. package/lib/components/Spinner/__tests__/__snapshots__/Spinner.test.tsx.snap +40 -16
  316. package/lib/components/StandaloneLink/StandaloneLink.stories.tsx +1 -1
  317. package/lib/components/StandaloneLink/StandaloneLink.tsx +180 -163
  318. package/lib/components/StandaloneLink/__tests__/__snapshots__/StandaloneLink.test.tsx.snap +2 -2
  319. package/lib/components/Table/Table.stories.tsx +1 -1
  320. package/lib/components/Table/Table.tsx +2 -0
  321. package/lib/components/Table/Table.types.ts +1 -0
  322. package/lib/components/Table/__tests__/Table.test.tsx +19 -0
  323. package/lib/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +7 -3
  324. package/lib/components/Table/subcomponents/Cell/Cell.stories.tsx +1 -1
  325. package/lib/components/Table/subcomponents/Cell/Cell.tsx +23 -2
  326. package/lib/components/Table/subcomponents/Cell/CellContent.tsx +12 -1
  327. package/lib/components/Table/subcomponents/Cell/__tests__/Cell.test.tsx +106 -0
  328. package/lib/components/Table/subcomponents/Cell/__tests__/__snapshots__/Cell.test.tsx.snap +4 -3
  329. package/lib/components/Table/subcomponents/HeadCell/HeadCell.stories.tsx +1 -1
  330. package/lib/components/Table/subcomponents/HeadCell/HeadCell.tsx +28 -6
  331. package/lib/components/Table/subcomponents/HeadCell/HeadCellContent.tsx +3 -0
  332. package/lib/components/Table/subcomponents/HeadCell/__tests__/HeadCell.test.tsx +221 -2
  333. package/lib/components/Table/subcomponents/HeadCell/__tests__/__snapshots__/HeadCell.test.tsx.snap +6 -4
  334. package/lib/components/Table/subcomponents/Row.tsx +2 -2
  335. package/lib/components/Table/subcomponents/SortIcon.tsx +1 -0
  336. package/lib/components/Table/subcomponents/__tests__/Row.test.tsx +59 -0
  337. package/lib/components/Tabs/Tab.tsx +3 -3
  338. package/lib/components/Tabs/Tabs.stories.tsx +1 -1
  339. package/lib/components/Tabs/Tabs.tsx +5 -3
  340. package/lib/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +4 -4
  341. package/lib/components/Textarea/Textarea.stories.tsx +1 -1
  342. package/lib/components/Timepicker/Timepicker.stories.tsx +1 -1
  343. package/lib/components/Timepicker/Timepicker.tsx +4 -0
  344. package/lib/components/Timepicker/__tests__/__snapshots__/Timepicker.test.tsx.snap +2 -2
  345. package/lib/components/Toggle/Toggle.stories.tsx +1 -1
  346. package/lib/components/Toggle/Toggle.tsx +5 -5
  347. package/lib/components/Toggle/ToggleHandle.tsx +2 -3
  348. package/lib/components/Tooltip/Tooltip.stories.tsx +1 -1
  349. package/lib/components/Tooltip/Tooltip.tsx +2 -2
  350. package/lib/components/Tooltip/__tests__/__snapshots__/tooltip.test.tsx.snap +2 -2
  351. package/lib/components/UclLogoNew/UclLogo.tsx +42 -0
  352. package/lib/components/UclLogoNew/index.ts +2 -0
  353. package/lib/components/WeekPicker/WeekPicker.stories.tsx +145 -0
  354. package/lib/components/WeekPicker/WeekPicker.tsx +2 -2
  355. package/lib/components/WeekPicker/WeekPicker.types.ts +21 -0
  356. package/lib/components/WeekPicker/index.ts +1 -0
  357. package/lib/components/WeekPicker/subcomponents/CustomDatepicker.tsx +1 -1
  358. package/lib/components/common/Common.mdx +1 -2
  359. package/lib/components/index.ts +30 -3
  360. package/lib/hooks/useFocusTrap.ts +40 -4
  361. package/lib/index.ts +1 -0
  362. package/lib/theme/Colours.mdx +1 -1
  363. package/lib/theme/Theme.mdx +1 -1
  364. package/lib/theme/Typography.mdx +1 -1
  365. package/lib/theme/__tests__/fonts.test.ts +37 -0
  366. package/lib/theme/common/themeCommon.ts +515 -0
  367. package/lib/theme/fonts.ts +110 -0
  368. package/lib/theme/index.ts +6 -6
  369. package/lib/theme/light/lightColour.ts +232 -0
  370. package/lib/theme/light/lightTheme.ts +37 -0
  371. package/lib/theme/{defaultTheme.ts → original/color.ts} +17 -199
  372. package/lib/theme/original/defaultTheme.ts +207 -0
  373. package/lib/theme/original/originalColourNewStructure.ts +185 -0
  374. package/lib/theme/useTheme.tsx +72 -15
  375. package/lib/types/assets.d.ts +10 -0
  376. package/lib/utils/__tests__/announce.test.ts +121 -0
  377. package/lib/utils/addAlphaToHex.ts +29 -0
  378. package/lib/utils/announce.ts +134 -0
  379. package/lib/utils/index.ts +1 -0
  380. package/lib/utils/scrollToTop.ts +5 -0
  381. package/package.json +11 -9
  382. package/dist/components/Button/buttonPrimaryStyle.d.ts +0 -4
  383. package/dist/components/Button/buttonSecondaryStyle.d.ts +0 -4
  384. package/dist/components/Button/buttonTertiaryStyle.d.ts +0 -4
  385. package/dist/components/Datepicker/subcomponents/NativeDatepicker.d.ts +0 -6
  386. package/dist/theme/defaultTheme.d.ts +0 -274
  387. package/lib/components/Accordion/Accordion.stories.tsx.NOT_READY +0 -93
  388. package/lib/components/Button/buttonPrimaryStyle.ts +0 -62
  389. package/lib/components/Button/buttonSecondaryStyle.ts +0 -65
  390. package/lib/components/Button/buttonTertiaryStyle.ts +0 -54
  391. /package/dist/components/{Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.d.ts → FooterNew/__tests__/Footer.test.d.ts} +0 -0
  392. /package/lib/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.test.ts +0 -0
@@ -0,0 +1,1107 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`Footer > snapshot: footer links provided 1`] = `
4
+ <footer
5
+ class="ucl-uikit-footer css-11dx1gg"
6
+ data-testid="ucl-uikit-footer"
7
+ >
8
+ <div
9
+ class="css-1wn072a"
10
+ >
11
+ <div
12
+ class="ucl-uikit-footer__logo-address-social css-39g6dw"
13
+ data-testid="ucl-uikit-footer__logo-address-social"
14
+ >
15
+ <svg
16
+ class="css-8qpjjf"
17
+ fill="none"
18
+ focusable="false"
19
+ height="34"
20
+ viewBox="0 0 1394 391"
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ >
23
+ <path
24
+ d="M866.86 257.16V10.54H734.29v125.09h-.03C714.7 63.47 648.56 0 553.74 0S381.7 64.9 361.67 146.92h-.03V10.54H229.91v195.87c0 19.3-2.52 31.04-12.59 41.95s-23.49 15.1-36.08 15.1-26.01-4.2-36.08-15.1c-10.07-10.91-12.59-22.65-12.59-41.95V10.54H0v196.71c0 52.86 10.91 95.65 46.15 130.89C73.84 365.83 118.31 391 178.72 391c52.86 0 99.01-18.46 132.57-54.54 28.44-30.11 43.48-67.53 48.36-100.98h.03C377.14 322.25 454.72 391 553.73 391c87.28 0 158.17-56.74 180.55-135.7v124.49h246.68V257.15H866.85zm-254.59-31.44c-8.39 22.65-31.67 37.76-58.52 37.76-37.76 0-65.66-29.37-65.66-67.96s27.9-67.96 65.66-67.96c26.85 0 50.13 15.1 58.52 37.76h122.02v60.41H612.27zm780.98 31.39h-42.93v122.64h42.93zm-68.7 0h-39.49v122.64h39.49zm-68.7 0h-36.06v122.64h36.06zm-68.7 0h-32.62v122.64h32.62zm-68.7 0h-29.19v122.64h29.19zm-68.69 0H1024v122.64h25.76zm145.35-179.29c-22.41 5.81-39.12 25.73-40.12 49.72h-.06v14.45h-9.92v23.27L1024 204.58V10.5h369.25v194.08l-121.01-39.32v-23.27h-9.92v-14.45h-.06c-1-23.98-17.71-43.9-40.12-49.72l-9.3-34.7h-8.45l-9.3 34.7z"
25
+ fill="#fff"
26
+ />
27
+ </svg>
28
+ <div
29
+ class="css-x7g5ai"
30
+ >
31
+ <div
32
+ class="css-hv3fjn"
33
+ >
34
+ University College London
35
+ <br />
36
+ Gower Street, London, WC1E 6BT
37
+ </div>
38
+ <div
39
+ class="css-ems5xl"
40
+ >
41
+ <a
42
+ class="css-1elkdu3"
43
+ href="tel:+4402076792000"
44
+ >
45
+ Tel: +44 (0) 20 7679 2000
46
+ </a>
47
+ </div>
48
+ </div>
49
+ <div
50
+ class="css-1a6jmps"
51
+ >
52
+ <a
53
+ aria-label="Instagram"
54
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
55
+ data-testid="ucl-uikit-footer__social-link"
56
+ href="https://www.instagram.com/ucl/"
57
+ target="_blank"
58
+ >
59
+ <svg
60
+ aria-hidden="true"
61
+ class="ucl-uikit-icon css-148hpxb"
62
+ data-testid="ucl-uikit-icon"
63
+ fill="currentColor"
64
+ focusable="false"
65
+ height="24"
66
+ viewBox="0 0 24 24"
67
+ width="24"
68
+ xmlns="http://www.w3.org/2000/svg"
69
+ >
70
+ <title>
71
+ Instagram
72
+ </title>
73
+ <path
74
+ d="M11.999 7.97A4.036 4.036 0 0 0 7.97 12c0 2.219 1.81 4.028 4.029 4.028s4.028-1.809 4.028-4.028c0-2.22-1.81-4.029-4.028-4.029"
75
+ />
76
+ <path
77
+ d="M22.915 7.46c-.08-1.76-.49-3.319-1.78-4.608-1.279-1.28-2.838-1.68-4.598-1.77-1.82-.11-7.257-.11-9.077 0-1.76.08-3.319.49-4.608 1.77-1.29 1.28-1.68 2.849-1.77 4.608-.11 1.82-.11 7.258 0 9.077.08 1.76.49 3.32 1.78 4.609s2.849 1.69 4.608 1.779c1.82.1 7.258.1 9.067 0 1.76-.08 3.32-.49 4.609-1.78 1.29-1.289 1.69-2.848 1.779-4.608.1-1.82.1-7.257 0-9.067zM11.999 18.197A6.19 6.19 0 0 1 5.8 11.999 6.19 6.19 0 0 1 11.999 5.8a6.19 6.19 0 0 1 6.198 6.198 6.19 6.19 0 0 1-6.198 6.198M18.456 6.99a1.45 1.45 0 0 1 0-2.899 1.45 1.45 0 0 1 0 2.9"
78
+ />
79
+ </svg>
80
+ </a>
81
+ <a
82
+ aria-label="LinkedIn"
83
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
84
+ data-testid="ucl-uikit-footer__social-link"
85
+ href="https://www.linkedin.com/school/university-college-london/"
86
+ target="_blank"
87
+ >
88
+ <svg
89
+ aria-hidden="true"
90
+ class="ucl-uikit-icon css-148hpxb"
91
+ data-testid="ucl-uikit-icon"
92
+ fill="currentColor"
93
+ focusable="false"
94
+ height="24"
95
+ viewBox="0 0 24 24"
96
+ width="24"
97
+ xmlns="http://www.w3.org/2000/svg"
98
+ >
99
+ <title>
100
+ LinkedIn
101
+ </title>
102
+ <path
103
+ clip-rule="evenodd"
104
+ d="M21.41 1H2.66C1.76 1 1 1.71 1 2.58v18.84c0 .87.5 1.58 1.4 1.58h18.74c.9 0 1.86-.71 1.86-1.58V2.58C23 1.71 22.3 1 21.41 1M9.38 9.38h2.96v1.51h.03c.45-.81 1.79-1.64 3.43-1.64 3.16 0 4.05 1.68 4.05 4.79v5.81h-3.14v-5.24c0-1.39-.56-2.62-1.86-2.62-1.58 0-2.33 1.07-2.33 2.83v5.03H9.38zM4.14 19.86h3.14V9.38H4.14zM7.68 5.71c0 1.09-.88 1.96-1.96 1.96s-1.96-.88-1.96-1.96.88-1.96 1.96-1.96 1.96.88 1.96 1.96"
105
+ fill-rule="evenodd"
106
+ />
107
+ </svg>
108
+ </a>
109
+ <a
110
+ aria-label="YouTube"
111
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
112
+ data-testid="ucl-uikit-footer__social-link"
113
+ href="https://www.youtube.com/ucltv"
114
+ target="_blank"
115
+ >
116
+ <svg
117
+ aria-hidden="true"
118
+ class="ucl-uikit-icon css-148hpxb"
119
+ data-testid="ucl-uikit-icon"
120
+ fill="currentColor"
121
+ focusable="false"
122
+ height="24"
123
+ viewBox="0 0 24 24"
124
+ width="24"
125
+ xmlns="http://www.w3.org/2000/svg"
126
+ >
127
+ <title>
128
+ YouTube
129
+ </title>
130
+ <path
131
+ d="M22.54 6.408c-.25-.949-1-1.688-1.949-1.948C18.871 4 11.995 4 11.995 4s-6.877 0-8.586.46c-.95.25-1.69 1-1.95 1.948C1 8.128 1 12.005 1 12.005s0 3.878.46 5.586c.25.95 1 1.69 1.949 1.95 1.71.459 8.586.459 8.586.459s6.877 0 8.596-.46c.95-.25 1.69-1 1.95-1.948.459-1.71.459-5.587.459-5.587s0-3.878-.46-5.597m-12.534 9.095V8.507l5.997 3.498z"
132
+ />
133
+ </svg>
134
+ </a>
135
+ <a
136
+ aria-label="TikTok"
137
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
138
+ data-testid="ucl-uikit-footer__social-link"
139
+ href="https://www.tiktok.com/@uclofficial"
140
+ target="_blank"
141
+ >
142
+ <svg
143
+ aria-hidden="true"
144
+ class="ucl-uikit-icon css-148hpxb"
145
+ data-testid="ucl-uikit-icon"
146
+ fill="currentColor"
147
+ focusable="false"
148
+ height="24"
149
+ viewBox="0 0 24 24"
150
+ width="24"
151
+ xmlns="http://www.w3.org/2000/svg"
152
+ >
153
+ <title>
154
+ TikTok
155
+ </title>
156
+ <path
157
+ d="M18.426 6.21a5.02 5.02 0 0 1-2.177-3.294A5 5 0 0 1 16.163 2h-3.58v14.47c-.066 1.624-1.383 2.922-3.006 2.922a2.9 2.9 0 0 1-1.394-.353 3.04 3.04 0 0 1-1.613-2.683c0-1.67 1.346-3.035 3.007-3.035q.458 0 .887.143V9.78a7 7 0 0 0-.887-.067C5.95 9.713 3 12.69 3 16.356a6.67 6.67 0 0 0 2.806 5.441A6.5 6.5 0 0 0 9.576 23c3.628 0 6.578-2.978 6.578-6.644v-7.34a8.5 8.5 0 0 0 4.973 1.613V7.021a4.9 4.9 0 0 1-2.711-.811z"
158
+ />
159
+ </svg>
160
+ </a>
161
+ <a
162
+ aria-label="Facebook"
163
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
164
+ data-testid="ucl-uikit-footer__social-link"
165
+ href="https://www.facebook.com/uclofficial/"
166
+ target="_blank"
167
+ >
168
+ <svg
169
+ aria-hidden="true"
170
+ class="ucl-uikit-icon css-148hpxb"
171
+ data-testid="ucl-uikit-icon"
172
+ fill="currentColor"
173
+ focusable="false"
174
+ height="24"
175
+ viewBox="0 0 24 24"
176
+ width="24"
177
+ xmlns="http://www.w3.org/2000/svg"
178
+ >
179
+ <title>
180
+ Facebook
181
+ </title>
182
+ <path
183
+ d="M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.313 0 2.686.236 2.686.236v2.971H15.83c-1.491 0-1.956.93-1.956 1.886v2.264h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073"
184
+ />
185
+ </svg>
186
+ </a>
187
+ <a
188
+ aria-label="Bluesky"
189
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
190
+ data-testid="ucl-uikit-footer__social-link"
191
+ href="https://bsky.app/profile/ucl.ac.uk"
192
+ target="_blank"
193
+ >
194
+ <svg
195
+ aria-hidden="true"
196
+ class="ucl-uikit-icon css-148hpxb"
197
+ data-testid="ucl-uikit-icon"
198
+ fill="currentColor"
199
+ focusable="false"
200
+ height="24"
201
+ viewBox="0 0 24 24"
202
+ width="24"
203
+ xmlns="http://www.w3.org/2000/svg"
204
+ >
205
+ <title>
206
+ Bluesky
207
+ </title>
208
+ <path
209
+ d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"
210
+ />
211
+ </svg>
212
+ </a>
213
+ <a
214
+ aria-label="Threads"
215
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
216
+ data-testid="ucl-uikit-footer__social-link"
217
+ href="https://www.threads.com/@ucl"
218
+ target="_blank"
219
+ >
220
+ <svg
221
+ aria-hidden="true"
222
+ class="ucl-uikit-icon css-148hpxb"
223
+ data-testid="ucl-uikit-icon"
224
+ fill="currentColor"
225
+ focusable="false"
226
+ height="24"
227
+ stroke-width="0.094"
228
+ viewBox="0 0 24 24"
229
+ width="24"
230
+ xmlns="http://www.w3.org/2000/svg"
231
+ >
232
+ <title>
233
+ Threads
234
+ </title>
235
+ <path
236
+ d="M19.057 11.508a7.2 7.2 0 0 0-1.259-.76c-.452-3.38-2.714-4.445-3.743-4.757-2.236-.678-4.807.135-5.976 1.888a.905.905 0 1 0 1.506 1.005c.72-1.081 2.488-1.602 3.946-1.162 1.125.34 1.902 1.165 2.278 2.375a9 9 0 0 0-1.729-.162c-1.574 0-3.047.406-4.146 1.142-1.294.874-2.006 2.167-2.006 3.637 0 2.327 1.793 4.016 4.264 4.016a5.43 5.43 0 0 0 3.884-1.674c.728-.758 1.583-2.076 1.765-4.195q.064.044.125.09c1.143.864 1.722 2.066 1.722 3.572 0 2.19-2.3 5.428-7.237 5.428-3.023 0-5.143-.978-6.484-2.99-1.1-1.646-1.658-3.992-1.658-6.961s.558-5.315 1.658-6.961c1.341-2.012 3.461-2.99 6.484-2.99 3.723 0 6.106 1.499 7.297 4.582a.905.905 0 1 0 1.688-.65C19.99 2.226 16.883.24 12.45.24c-3.618 0-6.31 1.277-7.99 3.795C3.159 5.988 2.5 8.666 2.5 12s.66 6.012 1.96 7.965c1.68 2.518 4.372 3.795 7.99 3.795 3.401 0 5.53-1.298 6.718-2.386 1.458-1.336 2.329-3.155 2.329-4.85 0-2.075-.844-3.81-2.44-5.016m-4.285 4.297a3.6 3.6 0 0 1-2.58 1.12c-1.223 0-2.455-.679-2.455-2.208 0-1.428 1.357-2.964 4.343-2.964a7.2 7.2 0 0 1 1.99.274c0 1.592-.453 2.897-1.298 3.775Z"
237
+ />
238
+ </svg>
239
+ </a>
240
+ <a
241
+ aria-label="SoundCloud"
242
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
243
+ data-testid="ucl-uikit-footer__social-link"
244
+ href="https://soundcloud.com/uclsound"
245
+ target="_blank"
246
+ >
247
+ <svg
248
+ aria-hidden="true"
249
+ class="ucl-uikit-icon css-148hpxb"
250
+ data-testid="ucl-uikit-icon"
251
+ fill="currentColor"
252
+ focusable="false"
253
+ height="24"
254
+ viewBox="0 0 24 24"
255
+ width="24"
256
+ xmlns="http://www.w3.org/2000/svg"
257
+ >
258
+ <title>
259
+ SoundCloud
260
+ </title>
261
+ <path
262
+ clip-rule="evenodd"
263
+ d="M23.987 14.67c-.098 1.82-1.603 3.25-3.403 3.217h-8.18a.69.69 0 0 1-.676-.687V8.255a.77.77 0 0 1 .447-.731c.011.01.764-.524 2.345-.524a5.3 5.3 0 0 1 2.749.764 5.58 5.58 0 0 1 2.563 3.6 3.4 3.4 0 0 1 .872-.12 3.3 3.3 0 0 1 3.294 3.425zM10.714 8.821c.25 3.033.425 5.793 0 8.825a.27.27 0 0 1-.262.24.27.27 0 0 1-.262-.24c-.392-3-.229-5.814 0-8.825a.28.28 0 0 1 .12-.262.27.27 0 0 1 .284 0 .27.27 0 0 1 .12.262m-1.658 8.825a.28.28 0 0 1-.273.24.28.28 0 0 1-.272-.24 34.4 34.4 0 0 1 0-7.778.273.273 0 0 1 .545 0 31 31 0 0 1 0 7.778m-1.658-8.05c.273 2.781.393 5.269 0 8.04 0 .152-.12.272-.261.272a.27.27 0 0 1-.262-.273c-.382-2.738-.251-5.301 0-8.04a.26.26 0 0 1 .262-.24c.13 0 .25.11.261.24m-1.657 8.05a.273.273 0 0 1-.273.251c-.142 0-.251-.109-.273-.25a29 29 0 0 1 0-7.266.28.28 0 0 1 .273-.284c.153 0 .273.12.273.284.327 2.41.316 4.854 0 7.265m-1.658-5.454c.414 1.887.229 3.545-.011 5.465a.26.26 0 0 1-.262.218.25.25 0 0 1-.25-.218c-.23-1.898-.415-3.6-.012-5.465a.27.27 0 0 1 .273-.273.27.27 0 0 1 .273.273zm-1.658-.284c.382 1.931.262 3.567 0 5.498-.033.284-.513.284-.545 0-.24-1.909-.36-3.589 0-5.498.01-.142.141-.25.283-.25s.262.108.284.25zm-1.669.938c.404 1.277.262 2.324-.01 3.633a.27.27 0 0 1-.262.24.26.26 0 0 1-.262-.24c-.24-1.287-.338-2.346-.022-3.633a.276.276 0 0 1 .284-.25c.152 0 .261.109.283.25z"
264
+ fill-rule="evenodd"
265
+ />
266
+ </svg>
267
+ </a>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ <div
272
+ class="ucl-uikit-footer__back-to-top css-erdb9c"
273
+ data-testid="ucl-uikit-footer__back-to-top"
274
+ >
275
+ <button
276
+ class="css-zla959"
277
+ >
278
+ Back to top
279
+ <svg
280
+ class="ucl-uikit-icon css-148hpxb"
281
+ data-testid="ucl-uikit-icon"
282
+ fill="none"
283
+ focusable="false"
284
+ height="24"
285
+ stroke="currentColor"
286
+ stroke-linecap="round"
287
+ stroke-linejoin="round"
288
+ stroke-width="2"
289
+ viewBox="0 0 24 24"
290
+ width="24"
291
+ xmlns="http://www.w3.org/2000/svg"
292
+ >
293
+ <path
294
+ d="M12 19V5m-7 7 7-7 7 7"
295
+ />
296
+ </svg>
297
+ </button>
298
+ </div>
299
+ <div
300
+ class="ucl-uikit-footer__legal-and-copyright css-1v2ya9w"
301
+ data-testid="ucl-uikit-footer__legal-and-copyright"
302
+ >
303
+ <div
304
+ class="css-j4yrqr"
305
+ >
306
+ <a
307
+ class="css-19zp1gp"
308
+ href="https://dictionary.cambridge.org/dictionary/english/disclaimer"
309
+ >
310
+ Disclaimer
311
+ </a>
312
+ <a
313
+ class="css-19zp1gp"
314
+ href="https://www.legislation.gov.uk/ukpga/2000/36/contents"
315
+ >
316
+ Freedom of Information
317
+ </a>
318
+ <a
319
+ class="css-19zp1gp"
320
+ href="https://developer.mozilla.org/en-US/docs/Web/Accessibility"
321
+ >
322
+ Accessibility
323
+ </a>
324
+ <a
325
+ class="css-19zp1gp"
326
+ href="https://en.wikipedia.org/wiki/HTTP_cookie"
327
+ >
328
+ Cookies
329
+ </a>
330
+ <a
331
+ class="css-19zp1gp"
332
+ href="https://dictionary.cambridge.org/dictionary/english/privacy"
333
+ >
334
+ Privacy
335
+ </a>
336
+ <a
337
+ class="css-19zp1gp"
338
+ href="https://modern-slavery-statement-registry.service.gov.uk/"
339
+ >
340
+ Slavery statement
341
+ </a>
342
+ </div>
343
+ <div
344
+ class="css-4n563l"
345
+ >
346
+ ©
347
+ 2026
348
+ UCL
349
+ </div>
350
+ </div>
351
+ </footer>
352
+ `;
353
+
354
+ exports[`Footer > snapshot: nav links 1`] = `
355
+ <footer
356
+ class="ucl-uikit-footer css-11dx1gg"
357
+ data-testid="ucl-uikit-footer"
358
+ >
359
+ <div
360
+ class="css-1wn072a"
361
+ >
362
+ <nav
363
+ class="ucl-uikit-footer__links css-qzdbnr"
364
+ data-testid="ucl-uikit-footer__links"
365
+ >
366
+ <div
367
+ class="ucl-uikit-footer__column css-1jpmiw0"
368
+ data-testid="ucl-uikit-footer__column"
369
+ >
370
+ <h3
371
+ class="css-fab13s"
372
+ >
373
+ Category 1
374
+ </h3>
375
+ <a
376
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__nav-link css-y1aisd"
377
+ data-testid="ucl-uikit-footer__nav-link"
378
+ href="#"
379
+ >
380
+ Item 1
381
+ </a>
382
+ <a
383
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__nav-link css-y1aisd"
384
+ data-testid="ucl-uikit-footer__nav-link"
385
+ href="#"
386
+ >
387
+ Item 2
388
+ </a>
389
+ </div>
390
+ <div
391
+ class="ucl-uikit-footer__column css-1jpmiw0"
392
+ data-testid="ucl-uikit-footer__column"
393
+ >
394
+ <h3
395
+ class="css-fab13s"
396
+ >
397
+ Category 2
398
+ </h3>
399
+ <a
400
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__nav-link css-y1aisd"
401
+ data-testid="ucl-uikit-footer__nav-link"
402
+ href="#"
403
+ >
404
+ Item 1
405
+ </a>
406
+ <a
407
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__nav-link css-y1aisd"
408
+ data-testid="ucl-uikit-footer__nav-link"
409
+ href="#"
410
+ >
411
+ Item 2
412
+ </a>
413
+ </div>
414
+ </nav>
415
+ <div
416
+ class="ucl-uikit-footer__logo-address-social css-xk4bmq"
417
+ data-testid="ucl-uikit-footer__logo-address-social"
418
+ >
419
+ <svg
420
+ class="css-8qpjjf"
421
+ fill="none"
422
+ focusable="false"
423
+ height="34"
424
+ viewBox="0 0 1394 391"
425
+ xmlns="http://www.w3.org/2000/svg"
426
+ >
427
+ <path
428
+ d="M866.86 257.16V10.54H734.29v125.09h-.03C714.7 63.47 648.56 0 553.74 0S381.7 64.9 361.67 146.92h-.03V10.54H229.91v195.87c0 19.3-2.52 31.04-12.59 41.95s-23.49 15.1-36.08 15.1-26.01-4.2-36.08-15.1c-10.07-10.91-12.59-22.65-12.59-41.95V10.54H0v196.71c0 52.86 10.91 95.65 46.15 130.89C73.84 365.83 118.31 391 178.72 391c52.86 0 99.01-18.46 132.57-54.54 28.44-30.11 43.48-67.53 48.36-100.98h.03C377.14 322.25 454.72 391 553.73 391c87.28 0 158.17-56.74 180.55-135.7v124.49h246.68V257.15H866.85zm-254.59-31.44c-8.39 22.65-31.67 37.76-58.52 37.76-37.76 0-65.66-29.37-65.66-67.96s27.9-67.96 65.66-67.96c26.85 0 50.13 15.1 58.52 37.76h122.02v60.41H612.27zm780.98 31.39h-42.93v122.64h42.93zm-68.7 0h-39.49v122.64h39.49zm-68.7 0h-36.06v122.64h36.06zm-68.7 0h-32.62v122.64h32.62zm-68.7 0h-29.19v122.64h29.19zm-68.69 0H1024v122.64h25.76zm145.35-179.29c-22.41 5.81-39.12 25.73-40.12 49.72h-.06v14.45h-9.92v23.27L1024 204.58V10.5h369.25v194.08l-121.01-39.32v-23.27h-9.92v-14.45h-.06c-1-23.98-17.71-43.9-40.12-49.72l-9.3-34.7h-8.45l-9.3 34.7z"
429
+ fill="#fff"
430
+ />
431
+ </svg>
432
+ <div
433
+ class="css-x7g5ai"
434
+ >
435
+ <div
436
+ class="css-hv3fjn"
437
+ >
438
+ University College London
439
+ <br />
440
+ Gower Street, London, WC1E 6BT
441
+ </div>
442
+ <div
443
+ class="css-ems5xl"
444
+ >
445
+ <a
446
+ class="css-1elkdu3"
447
+ href="tel:+4402076792000"
448
+ >
449
+ Tel: +44 (0) 20 7679 2000
450
+ </a>
451
+ </div>
452
+ </div>
453
+ <div
454
+ class="css-1a6jmps"
455
+ >
456
+ <a
457
+ aria-label="Instagram"
458
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
459
+ data-testid="ucl-uikit-footer__social-link"
460
+ href="https://www.instagram.com/ucl/"
461
+ target="_blank"
462
+ >
463
+ <svg
464
+ aria-hidden="true"
465
+ class="ucl-uikit-icon css-148hpxb"
466
+ data-testid="ucl-uikit-icon"
467
+ fill="currentColor"
468
+ focusable="false"
469
+ height="24"
470
+ viewBox="0 0 24 24"
471
+ width="24"
472
+ xmlns="http://www.w3.org/2000/svg"
473
+ >
474
+ <title>
475
+ Instagram
476
+ </title>
477
+ <path
478
+ d="M11.999 7.97A4.036 4.036 0 0 0 7.97 12c0 2.219 1.81 4.028 4.029 4.028s4.028-1.809 4.028-4.028c0-2.22-1.81-4.029-4.028-4.029"
479
+ />
480
+ <path
481
+ d="M22.915 7.46c-.08-1.76-.49-3.319-1.78-4.608-1.279-1.28-2.838-1.68-4.598-1.77-1.82-.11-7.257-.11-9.077 0-1.76.08-3.319.49-4.608 1.77-1.29 1.28-1.68 2.849-1.77 4.608-.11 1.82-.11 7.258 0 9.077.08 1.76.49 3.32 1.78 4.609s2.849 1.69 4.608 1.779c1.82.1 7.258.1 9.067 0 1.76-.08 3.32-.49 4.609-1.78 1.29-1.289 1.69-2.848 1.779-4.608.1-1.82.1-7.257 0-9.067zM11.999 18.197A6.19 6.19 0 0 1 5.8 11.999 6.19 6.19 0 0 1 11.999 5.8a6.19 6.19 0 0 1 6.198 6.198 6.19 6.19 0 0 1-6.198 6.198M18.456 6.99a1.45 1.45 0 0 1 0-2.899 1.45 1.45 0 0 1 0 2.9"
482
+ />
483
+ </svg>
484
+ </a>
485
+ <a
486
+ aria-label="LinkedIn"
487
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
488
+ data-testid="ucl-uikit-footer__social-link"
489
+ href="https://www.linkedin.com/school/university-college-london/"
490
+ target="_blank"
491
+ >
492
+ <svg
493
+ aria-hidden="true"
494
+ class="ucl-uikit-icon css-148hpxb"
495
+ data-testid="ucl-uikit-icon"
496
+ fill="currentColor"
497
+ focusable="false"
498
+ height="24"
499
+ viewBox="0 0 24 24"
500
+ width="24"
501
+ xmlns="http://www.w3.org/2000/svg"
502
+ >
503
+ <title>
504
+ LinkedIn
505
+ </title>
506
+ <path
507
+ clip-rule="evenodd"
508
+ d="M21.41 1H2.66C1.76 1 1 1.71 1 2.58v18.84c0 .87.5 1.58 1.4 1.58h18.74c.9 0 1.86-.71 1.86-1.58V2.58C23 1.71 22.3 1 21.41 1M9.38 9.38h2.96v1.51h.03c.45-.81 1.79-1.64 3.43-1.64 3.16 0 4.05 1.68 4.05 4.79v5.81h-3.14v-5.24c0-1.39-.56-2.62-1.86-2.62-1.58 0-2.33 1.07-2.33 2.83v5.03H9.38zM4.14 19.86h3.14V9.38H4.14zM7.68 5.71c0 1.09-.88 1.96-1.96 1.96s-1.96-.88-1.96-1.96.88-1.96 1.96-1.96 1.96.88 1.96 1.96"
509
+ fill-rule="evenodd"
510
+ />
511
+ </svg>
512
+ </a>
513
+ <a
514
+ aria-label="YouTube"
515
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
516
+ data-testid="ucl-uikit-footer__social-link"
517
+ href="https://www.youtube.com/ucltv"
518
+ target="_blank"
519
+ >
520
+ <svg
521
+ aria-hidden="true"
522
+ class="ucl-uikit-icon css-148hpxb"
523
+ data-testid="ucl-uikit-icon"
524
+ fill="currentColor"
525
+ focusable="false"
526
+ height="24"
527
+ viewBox="0 0 24 24"
528
+ width="24"
529
+ xmlns="http://www.w3.org/2000/svg"
530
+ >
531
+ <title>
532
+ YouTube
533
+ </title>
534
+ <path
535
+ d="M22.54 6.408c-.25-.949-1-1.688-1.949-1.948C18.871 4 11.995 4 11.995 4s-6.877 0-8.586.46c-.95.25-1.69 1-1.95 1.948C1 8.128 1 12.005 1 12.005s0 3.878.46 5.586c.25.95 1 1.69 1.949 1.95 1.71.459 8.586.459 8.586.459s6.877 0 8.596-.46c.95-.25 1.69-1 1.95-1.948.459-1.71.459-5.587.459-5.587s0-3.878-.46-5.597m-12.534 9.095V8.507l5.997 3.498z"
536
+ />
537
+ </svg>
538
+ </a>
539
+ <a
540
+ aria-label="TikTok"
541
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
542
+ data-testid="ucl-uikit-footer__social-link"
543
+ href="https://www.tiktok.com/@uclofficial"
544
+ target="_blank"
545
+ >
546
+ <svg
547
+ aria-hidden="true"
548
+ class="ucl-uikit-icon css-148hpxb"
549
+ data-testid="ucl-uikit-icon"
550
+ fill="currentColor"
551
+ focusable="false"
552
+ height="24"
553
+ viewBox="0 0 24 24"
554
+ width="24"
555
+ xmlns="http://www.w3.org/2000/svg"
556
+ >
557
+ <title>
558
+ TikTok
559
+ </title>
560
+ <path
561
+ d="M18.426 6.21a5.02 5.02 0 0 1-2.177-3.294A5 5 0 0 1 16.163 2h-3.58v14.47c-.066 1.624-1.383 2.922-3.006 2.922a2.9 2.9 0 0 1-1.394-.353 3.04 3.04 0 0 1-1.613-2.683c0-1.67 1.346-3.035 3.007-3.035q.458 0 .887.143V9.78a7 7 0 0 0-.887-.067C5.95 9.713 3 12.69 3 16.356a6.67 6.67 0 0 0 2.806 5.441A6.5 6.5 0 0 0 9.576 23c3.628 0 6.578-2.978 6.578-6.644v-7.34a8.5 8.5 0 0 0 4.973 1.613V7.021a4.9 4.9 0 0 1-2.711-.811z"
562
+ />
563
+ </svg>
564
+ </a>
565
+ <a
566
+ aria-label="Facebook"
567
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
568
+ data-testid="ucl-uikit-footer__social-link"
569
+ href="https://www.facebook.com/uclofficial/"
570
+ target="_blank"
571
+ >
572
+ <svg
573
+ aria-hidden="true"
574
+ class="ucl-uikit-icon css-148hpxb"
575
+ data-testid="ucl-uikit-icon"
576
+ fill="currentColor"
577
+ focusable="false"
578
+ height="24"
579
+ viewBox="0 0 24 24"
580
+ width="24"
581
+ xmlns="http://www.w3.org/2000/svg"
582
+ >
583
+ <title>
584
+ Facebook
585
+ </title>
586
+ <path
587
+ d="M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.313 0 2.686.236 2.686.236v2.971H15.83c-1.491 0-1.956.93-1.956 1.886v2.264h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073"
588
+ />
589
+ </svg>
590
+ </a>
591
+ <a
592
+ aria-label="Bluesky"
593
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
594
+ data-testid="ucl-uikit-footer__social-link"
595
+ href="https://bsky.app/profile/ucl.ac.uk"
596
+ target="_blank"
597
+ >
598
+ <svg
599
+ aria-hidden="true"
600
+ class="ucl-uikit-icon css-148hpxb"
601
+ data-testid="ucl-uikit-icon"
602
+ fill="currentColor"
603
+ focusable="false"
604
+ height="24"
605
+ viewBox="0 0 24 24"
606
+ width="24"
607
+ xmlns="http://www.w3.org/2000/svg"
608
+ >
609
+ <title>
610
+ Bluesky
611
+ </title>
612
+ <path
613
+ d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"
614
+ />
615
+ </svg>
616
+ </a>
617
+ <a
618
+ aria-label="Threads"
619
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
620
+ data-testid="ucl-uikit-footer__social-link"
621
+ href="https://www.threads.com/@ucl"
622
+ target="_blank"
623
+ >
624
+ <svg
625
+ aria-hidden="true"
626
+ class="ucl-uikit-icon css-148hpxb"
627
+ data-testid="ucl-uikit-icon"
628
+ fill="currentColor"
629
+ focusable="false"
630
+ height="24"
631
+ stroke-width="0.094"
632
+ viewBox="0 0 24 24"
633
+ width="24"
634
+ xmlns="http://www.w3.org/2000/svg"
635
+ >
636
+ <title>
637
+ Threads
638
+ </title>
639
+ <path
640
+ d="M19.057 11.508a7.2 7.2 0 0 0-1.259-.76c-.452-3.38-2.714-4.445-3.743-4.757-2.236-.678-4.807.135-5.976 1.888a.905.905 0 1 0 1.506 1.005c.72-1.081 2.488-1.602 3.946-1.162 1.125.34 1.902 1.165 2.278 2.375a9 9 0 0 0-1.729-.162c-1.574 0-3.047.406-4.146 1.142-1.294.874-2.006 2.167-2.006 3.637 0 2.327 1.793 4.016 4.264 4.016a5.43 5.43 0 0 0 3.884-1.674c.728-.758 1.583-2.076 1.765-4.195q.064.044.125.09c1.143.864 1.722 2.066 1.722 3.572 0 2.19-2.3 5.428-7.237 5.428-3.023 0-5.143-.978-6.484-2.99-1.1-1.646-1.658-3.992-1.658-6.961s.558-5.315 1.658-6.961c1.341-2.012 3.461-2.99 6.484-2.99 3.723 0 6.106 1.499 7.297 4.582a.905.905 0 1 0 1.688-.65C19.99 2.226 16.883.24 12.45.24c-3.618 0-6.31 1.277-7.99 3.795C3.159 5.988 2.5 8.666 2.5 12s.66 6.012 1.96 7.965c1.68 2.518 4.372 3.795 7.99 3.795 3.401 0 5.53-1.298 6.718-2.386 1.458-1.336 2.329-3.155 2.329-4.85 0-2.075-.844-3.81-2.44-5.016m-4.285 4.297a3.6 3.6 0 0 1-2.58 1.12c-1.223 0-2.455-.679-2.455-2.208 0-1.428 1.357-2.964 4.343-2.964a7.2 7.2 0 0 1 1.99.274c0 1.592-.453 2.897-1.298 3.775Z"
641
+ />
642
+ </svg>
643
+ </a>
644
+ <a
645
+ aria-label="SoundCloud"
646
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
647
+ data-testid="ucl-uikit-footer__social-link"
648
+ href="https://soundcloud.com/uclsound"
649
+ target="_blank"
650
+ >
651
+ <svg
652
+ aria-hidden="true"
653
+ class="ucl-uikit-icon css-148hpxb"
654
+ data-testid="ucl-uikit-icon"
655
+ fill="currentColor"
656
+ focusable="false"
657
+ height="24"
658
+ viewBox="0 0 24 24"
659
+ width="24"
660
+ xmlns="http://www.w3.org/2000/svg"
661
+ >
662
+ <title>
663
+ SoundCloud
664
+ </title>
665
+ <path
666
+ clip-rule="evenodd"
667
+ d="M23.987 14.67c-.098 1.82-1.603 3.25-3.403 3.217h-8.18a.69.69 0 0 1-.676-.687V8.255a.77.77 0 0 1 .447-.731c.011.01.764-.524 2.345-.524a5.3 5.3 0 0 1 2.749.764 5.58 5.58 0 0 1 2.563 3.6 3.4 3.4 0 0 1 .872-.12 3.3 3.3 0 0 1 3.294 3.425zM10.714 8.821c.25 3.033.425 5.793 0 8.825a.27.27 0 0 1-.262.24.27.27 0 0 1-.262-.24c-.392-3-.229-5.814 0-8.825a.28.28 0 0 1 .12-.262.27.27 0 0 1 .284 0 .27.27 0 0 1 .12.262m-1.658 8.825a.28.28 0 0 1-.273.24.28.28 0 0 1-.272-.24 34.4 34.4 0 0 1 0-7.778.273.273 0 0 1 .545 0 31 31 0 0 1 0 7.778m-1.658-8.05c.273 2.781.393 5.269 0 8.04 0 .152-.12.272-.261.272a.27.27 0 0 1-.262-.273c-.382-2.738-.251-5.301 0-8.04a.26.26 0 0 1 .262-.24c.13 0 .25.11.261.24m-1.657 8.05a.273.273 0 0 1-.273.251c-.142 0-.251-.109-.273-.25a29 29 0 0 1 0-7.266.28.28 0 0 1 .273-.284c.153 0 .273.12.273.284.327 2.41.316 4.854 0 7.265m-1.658-5.454c.414 1.887.229 3.545-.011 5.465a.26.26 0 0 1-.262.218.25.25 0 0 1-.25-.218c-.23-1.898-.415-3.6-.012-5.465a.27.27 0 0 1 .273-.273.27.27 0 0 1 .273.273zm-1.658-.284c.382 1.931.262 3.567 0 5.498-.033.284-.513.284-.545 0-.24-1.909-.36-3.589 0-5.498.01-.142.141-.25.283-.25s.262.108.284.25zm-1.669.938c.404 1.277.262 2.324-.01 3.633a.27.27 0 0 1-.262.24.26.26 0 0 1-.262-.24c-.24-1.287-.338-2.346-.022-3.633a.276.276 0 0 1 .284-.25c.152 0 .261.109.283.25z"
668
+ fill-rule="evenodd"
669
+ />
670
+ </svg>
671
+ </a>
672
+ </div>
673
+ </div>
674
+ </div>
675
+ <div
676
+ class="ucl-uikit-footer__back-to-top css-1t7mgo6"
677
+ data-testid="ucl-uikit-footer__back-to-top"
678
+ >
679
+ <button
680
+ class="css-zla959"
681
+ >
682
+ Back to top
683
+ <svg
684
+ class="ucl-uikit-icon css-148hpxb"
685
+ data-testid="ucl-uikit-icon"
686
+ fill="none"
687
+ focusable="false"
688
+ height="24"
689
+ stroke="currentColor"
690
+ stroke-linecap="round"
691
+ stroke-linejoin="round"
692
+ stroke-width="2"
693
+ viewBox="0 0 24 24"
694
+ width="24"
695
+ xmlns="http://www.w3.org/2000/svg"
696
+ >
697
+ <path
698
+ d="M12 19V5m-7 7 7-7 7 7"
699
+ />
700
+ </svg>
701
+ </button>
702
+ </div>
703
+ <div
704
+ class="ucl-uikit-footer__legal-and-copyright css-1v2ya9w"
705
+ data-testid="ucl-uikit-footer__legal-and-copyright"
706
+ >
707
+ <div
708
+ class="css-j4yrqr"
709
+ >
710
+ <a
711
+ class="css-19zp1gp"
712
+ href="https://www.ucl.ac.uk/legal-services/disclaimer"
713
+ >
714
+ Disclaimer
715
+ </a>
716
+ <a
717
+ class="css-19zp1gp"
718
+ href="https://www.ucl.ac.uk/foi"
719
+ >
720
+ Freedom of Information
721
+ </a>
722
+ <a
723
+ class="css-19zp1gp"
724
+ href="https://www.ucl.ac.uk/accessibility"
725
+ >
726
+ Accessibility
727
+ </a>
728
+ <a
729
+ class="css-19zp1gp"
730
+ href="https://www.ucl.ac.uk/legal-services/privacy/cookie-policy"
731
+ >
732
+ Cookies
733
+ </a>
734
+ <a
735
+ class="css-19zp1gp"
736
+ href="https://www.ucl.ac.uk/legal-services/privacy"
737
+ >
738
+ Privacy
739
+ </a>
740
+ <a
741
+ class="css-19zp1gp"
742
+ href="https://www.ucl.ac.uk/commercial-procurement/modern-day-slavery-statement"
743
+ >
744
+ Slavery statement
745
+ </a>
746
+ </div>
747
+ <div
748
+ class="css-4n563l"
749
+ >
750
+ ©
751
+ 2026
752
+ UCL
753
+ </div>
754
+ </div>
755
+ </footer>
756
+ `;
757
+
758
+ exports[`Footer > snapshot: no nav links 1`] = `
759
+ <footer
760
+ class="ucl-uikit-footer css-11dx1gg"
761
+ data-testid="ucl-uikit-footer"
762
+ >
763
+ <div
764
+ class="css-1wn072a"
765
+ >
766
+ <div
767
+ class="ucl-uikit-footer__logo-address-social css-39g6dw"
768
+ data-testid="ucl-uikit-footer__logo-address-social"
769
+ >
770
+ <svg
771
+ class="css-8qpjjf"
772
+ fill="none"
773
+ focusable="false"
774
+ height="34"
775
+ viewBox="0 0 1394 391"
776
+ xmlns="http://www.w3.org/2000/svg"
777
+ >
778
+ <path
779
+ d="M866.86 257.16V10.54H734.29v125.09h-.03C714.7 63.47 648.56 0 553.74 0S381.7 64.9 361.67 146.92h-.03V10.54H229.91v195.87c0 19.3-2.52 31.04-12.59 41.95s-23.49 15.1-36.08 15.1-26.01-4.2-36.08-15.1c-10.07-10.91-12.59-22.65-12.59-41.95V10.54H0v196.71c0 52.86 10.91 95.65 46.15 130.89C73.84 365.83 118.31 391 178.72 391c52.86 0 99.01-18.46 132.57-54.54 28.44-30.11 43.48-67.53 48.36-100.98h.03C377.14 322.25 454.72 391 553.73 391c87.28 0 158.17-56.74 180.55-135.7v124.49h246.68V257.15H866.85zm-254.59-31.44c-8.39 22.65-31.67 37.76-58.52 37.76-37.76 0-65.66-29.37-65.66-67.96s27.9-67.96 65.66-67.96c26.85 0 50.13 15.1 58.52 37.76h122.02v60.41H612.27zm780.98 31.39h-42.93v122.64h42.93zm-68.7 0h-39.49v122.64h39.49zm-68.7 0h-36.06v122.64h36.06zm-68.7 0h-32.62v122.64h32.62zm-68.7 0h-29.19v122.64h29.19zm-68.69 0H1024v122.64h25.76zm145.35-179.29c-22.41 5.81-39.12 25.73-40.12 49.72h-.06v14.45h-9.92v23.27L1024 204.58V10.5h369.25v194.08l-121.01-39.32v-23.27h-9.92v-14.45h-.06c-1-23.98-17.71-43.9-40.12-49.72l-9.3-34.7h-8.45l-9.3 34.7z"
780
+ fill="#fff"
781
+ />
782
+ </svg>
783
+ <div
784
+ class="css-x7g5ai"
785
+ >
786
+ <div
787
+ class="css-hv3fjn"
788
+ >
789
+ University College London
790
+ <br />
791
+ Gower Street, London, WC1E 6BT
792
+ </div>
793
+ <div
794
+ class="css-ems5xl"
795
+ >
796
+ <a
797
+ class="css-1elkdu3"
798
+ href="tel:+4402076792000"
799
+ >
800
+ Tel: +44 (0) 20 7679 2000
801
+ </a>
802
+ </div>
803
+ </div>
804
+ <div
805
+ class="css-1a6jmps"
806
+ >
807
+ <a
808
+ aria-label="Instagram"
809
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
810
+ data-testid="ucl-uikit-footer__social-link"
811
+ href="https://www.instagram.com/ucl/"
812
+ target="_blank"
813
+ >
814
+ <svg
815
+ aria-hidden="true"
816
+ class="ucl-uikit-icon css-148hpxb"
817
+ data-testid="ucl-uikit-icon"
818
+ fill="currentColor"
819
+ focusable="false"
820
+ height="24"
821
+ viewBox="0 0 24 24"
822
+ width="24"
823
+ xmlns="http://www.w3.org/2000/svg"
824
+ >
825
+ <title>
826
+ Instagram
827
+ </title>
828
+ <path
829
+ d="M11.999 7.97A4.036 4.036 0 0 0 7.97 12c0 2.219 1.81 4.028 4.029 4.028s4.028-1.809 4.028-4.028c0-2.22-1.81-4.029-4.028-4.029"
830
+ />
831
+ <path
832
+ d="M22.915 7.46c-.08-1.76-.49-3.319-1.78-4.608-1.279-1.28-2.838-1.68-4.598-1.77-1.82-.11-7.257-.11-9.077 0-1.76.08-3.319.49-4.608 1.77-1.29 1.28-1.68 2.849-1.77 4.608-.11 1.82-.11 7.258 0 9.077.08 1.76.49 3.32 1.78 4.609s2.849 1.69 4.608 1.779c1.82.1 7.258.1 9.067 0 1.76-.08 3.32-.49 4.609-1.78 1.29-1.289 1.69-2.848 1.779-4.608.1-1.82.1-7.257 0-9.067zM11.999 18.197A6.19 6.19 0 0 1 5.8 11.999 6.19 6.19 0 0 1 11.999 5.8a6.19 6.19 0 0 1 6.198 6.198 6.19 6.19 0 0 1-6.198 6.198M18.456 6.99a1.45 1.45 0 0 1 0-2.899 1.45 1.45 0 0 1 0 2.9"
833
+ />
834
+ </svg>
835
+ </a>
836
+ <a
837
+ aria-label="LinkedIn"
838
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
839
+ data-testid="ucl-uikit-footer__social-link"
840
+ href="https://www.linkedin.com/school/university-college-london/"
841
+ target="_blank"
842
+ >
843
+ <svg
844
+ aria-hidden="true"
845
+ class="ucl-uikit-icon css-148hpxb"
846
+ data-testid="ucl-uikit-icon"
847
+ fill="currentColor"
848
+ focusable="false"
849
+ height="24"
850
+ viewBox="0 0 24 24"
851
+ width="24"
852
+ xmlns="http://www.w3.org/2000/svg"
853
+ >
854
+ <title>
855
+ LinkedIn
856
+ </title>
857
+ <path
858
+ clip-rule="evenodd"
859
+ d="M21.41 1H2.66C1.76 1 1 1.71 1 2.58v18.84c0 .87.5 1.58 1.4 1.58h18.74c.9 0 1.86-.71 1.86-1.58V2.58C23 1.71 22.3 1 21.41 1M9.38 9.38h2.96v1.51h.03c.45-.81 1.79-1.64 3.43-1.64 3.16 0 4.05 1.68 4.05 4.79v5.81h-3.14v-5.24c0-1.39-.56-2.62-1.86-2.62-1.58 0-2.33 1.07-2.33 2.83v5.03H9.38zM4.14 19.86h3.14V9.38H4.14zM7.68 5.71c0 1.09-.88 1.96-1.96 1.96s-1.96-.88-1.96-1.96.88-1.96 1.96-1.96 1.96.88 1.96 1.96"
860
+ fill-rule="evenodd"
861
+ />
862
+ </svg>
863
+ </a>
864
+ <a
865
+ aria-label="YouTube"
866
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
867
+ data-testid="ucl-uikit-footer__social-link"
868
+ href="https://www.youtube.com/ucltv"
869
+ target="_blank"
870
+ >
871
+ <svg
872
+ aria-hidden="true"
873
+ class="ucl-uikit-icon css-148hpxb"
874
+ data-testid="ucl-uikit-icon"
875
+ fill="currentColor"
876
+ focusable="false"
877
+ height="24"
878
+ viewBox="0 0 24 24"
879
+ width="24"
880
+ xmlns="http://www.w3.org/2000/svg"
881
+ >
882
+ <title>
883
+ YouTube
884
+ </title>
885
+ <path
886
+ d="M22.54 6.408c-.25-.949-1-1.688-1.949-1.948C18.871 4 11.995 4 11.995 4s-6.877 0-8.586.46c-.95.25-1.69 1-1.95 1.948C1 8.128 1 12.005 1 12.005s0 3.878.46 5.586c.25.95 1 1.69 1.949 1.95 1.71.459 8.586.459 8.586.459s6.877 0 8.596-.46c.95-.25 1.69-1 1.95-1.948.459-1.71.459-5.587.459-5.587s0-3.878-.46-5.597m-12.534 9.095V8.507l5.997 3.498z"
887
+ />
888
+ </svg>
889
+ </a>
890
+ <a
891
+ aria-label="TikTok"
892
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
893
+ data-testid="ucl-uikit-footer__social-link"
894
+ href="https://www.tiktok.com/@uclofficial"
895
+ target="_blank"
896
+ >
897
+ <svg
898
+ aria-hidden="true"
899
+ class="ucl-uikit-icon css-148hpxb"
900
+ data-testid="ucl-uikit-icon"
901
+ fill="currentColor"
902
+ focusable="false"
903
+ height="24"
904
+ viewBox="0 0 24 24"
905
+ width="24"
906
+ xmlns="http://www.w3.org/2000/svg"
907
+ >
908
+ <title>
909
+ TikTok
910
+ </title>
911
+ <path
912
+ d="M18.426 6.21a5.02 5.02 0 0 1-2.177-3.294A5 5 0 0 1 16.163 2h-3.58v14.47c-.066 1.624-1.383 2.922-3.006 2.922a2.9 2.9 0 0 1-1.394-.353 3.04 3.04 0 0 1-1.613-2.683c0-1.67 1.346-3.035 3.007-3.035q.458 0 .887.143V9.78a7 7 0 0 0-.887-.067C5.95 9.713 3 12.69 3 16.356a6.67 6.67 0 0 0 2.806 5.441A6.5 6.5 0 0 0 9.576 23c3.628 0 6.578-2.978 6.578-6.644v-7.34a8.5 8.5 0 0 0 4.973 1.613V7.021a4.9 4.9 0 0 1-2.711-.811z"
913
+ />
914
+ </svg>
915
+ </a>
916
+ <a
917
+ aria-label="Facebook"
918
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
919
+ data-testid="ucl-uikit-footer__social-link"
920
+ href="https://www.facebook.com/uclofficial/"
921
+ target="_blank"
922
+ >
923
+ <svg
924
+ aria-hidden="true"
925
+ class="ucl-uikit-icon css-148hpxb"
926
+ data-testid="ucl-uikit-icon"
927
+ fill="currentColor"
928
+ focusable="false"
929
+ height="24"
930
+ viewBox="0 0 24 24"
931
+ width="24"
932
+ xmlns="http://www.w3.org/2000/svg"
933
+ >
934
+ <title>
935
+ Facebook
936
+ </title>
937
+ <path
938
+ d="M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.313 0 2.686.236 2.686.236v2.971H15.83c-1.491 0-1.956.93-1.956 1.886v2.264h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073"
939
+ />
940
+ </svg>
941
+ </a>
942
+ <a
943
+ aria-label="Bluesky"
944
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
945
+ data-testid="ucl-uikit-footer__social-link"
946
+ href="https://bsky.app/profile/ucl.ac.uk"
947
+ target="_blank"
948
+ >
949
+ <svg
950
+ aria-hidden="true"
951
+ class="ucl-uikit-icon css-148hpxb"
952
+ data-testid="ucl-uikit-icon"
953
+ fill="currentColor"
954
+ focusable="false"
955
+ height="24"
956
+ viewBox="0 0 24 24"
957
+ width="24"
958
+ xmlns="http://www.w3.org/2000/svg"
959
+ >
960
+ <title>
961
+ Bluesky
962
+ </title>
963
+ <path
964
+ d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"
965
+ />
966
+ </svg>
967
+ </a>
968
+ <a
969
+ aria-label="Threads"
970
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
971
+ data-testid="ucl-uikit-footer__social-link"
972
+ href="https://www.threads.com/@ucl"
973
+ target="_blank"
974
+ >
975
+ <svg
976
+ aria-hidden="true"
977
+ class="ucl-uikit-icon css-148hpxb"
978
+ data-testid="ucl-uikit-icon"
979
+ fill="currentColor"
980
+ focusable="false"
981
+ height="24"
982
+ stroke-width="0.094"
983
+ viewBox="0 0 24 24"
984
+ width="24"
985
+ xmlns="http://www.w3.org/2000/svg"
986
+ >
987
+ <title>
988
+ Threads
989
+ </title>
990
+ <path
991
+ d="M19.057 11.508a7.2 7.2 0 0 0-1.259-.76c-.452-3.38-2.714-4.445-3.743-4.757-2.236-.678-4.807.135-5.976 1.888a.905.905 0 1 0 1.506 1.005c.72-1.081 2.488-1.602 3.946-1.162 1.125.34 1.902 1.165 2.278 2.375a9 9 0 0 0-1.729-.162c-1.574 0-3.047.406-4.146 1.142-1.294.874-2.006 2.167-2.006 3.637 0 2.327 1.793 4.016 4.264 4.016a5.43 5.43 0 0 0 3.884-1.674c.728-.758 1.583-2.076 1.765-4.195q.064.044.125.09c1.143.864 1.722 2.066 1.722 3.572 0 2.19-2.3 5.428-7.237 5.428-3.023 0-5.143-.978-6.484-2.99-1.1-1.646-1.658-3.992-1.658-6.961s.558-5.315 1.658-6.961c1.341-2.012 3.461-2.99 6.484-2.99 3.723 0 6.106 1.499 7.297 4.582a.905.905 0 1 0 1.688-.65C19.99 2.226 16.883.24 12.45.24c-3.618 0-6.31 1.277-7.99 3.795C3.159 5.988 2.5 8.666 2.5 12s.66 6.012 1.96 7.965c1.68 2.518 4.372 3.795 7.99 3.795 3.401 0 5.53-1.298 6.718-2.386 1.458-1.336 2.329-3.155 2.329-4.85 0-2.075-.844-3.81-2.44-5.016m-4.285 4.297a3.6 3.6 0 0 1-2.58 1.12c-1.223 0-2.455-.679-2.455-2.208 0-1.428 1.357-2.964 4.343-2.964a7.2 7.2 0 0 1 1.99.274c0 1.592-.453 2.897-1.298 3.775Z"
992
+ />
993
+ </svg>
994
+ </a>
995
+ <a
996
+ aria-label="SoundCloud"
997
+ class="ucl-uikit-base-link ucl-uikit-link ucl-uikit-footer__social-link css-1h5t5xl"
998
+ data-testid="ucl-uikit-footer__social-link"
999
+ href="https://soundcloud.com/uclsound"
1000
+ target="_blank"
1001
+ >
1002
+ <svg
1003
+ aria-hidden="true"
1004
+ class="ucl-uikit-icon css-148hpxb"
1005
+ data-testid="ucl-uikit-icon"
1006
+ fill="currentColor"
1007
+ focusable="false"
1008
+ height="24"
1009
+ viewBox="0 0 24 24"
1010
+ width="24"
1011
+ xmlns="http://www.w3.org/2000/svg"
1012
+ >
1013
+ <title>
1014
+ SoundCloud
1015
+ </title>
1016
+ <path
1017
+ clip-rule="evenodd"
1018
+ d="M23.987 14.67c-.098 1.82-1.603 3.25-3.403 3.217h-8.18a.69.69 0 0 1-.676-.687V8.255a.77.77 0 0 1 .447-.731c.011.01.764-.524 2.345-.524a5.3 5.3 0 0 1 2.749.764 5.58 5.58 0 0 1 2.563 3.6 3.4 3.4 0 0 1 .872-.12 3.3 3.3 0 0 1 3.294 3.425zM10.714 8.821c.25 3.033.425 5.793 0 8.825a.27.27 0 0 1-.262.24.27.27 0 0 1-.262-.24c-.392-3-.229-5.814 0-8.825a.28.28 0 0 1 .12-.262.27.27 0 0 1 .284 0 .27.27 0 0 1 .12.262m-1.658 8.825a.28.28 0 0 1-.273.24.28.28 0 0 1-.272-.24 34.4 34.4 0 0 1 0-7.778.273.273 0 0 1 .545 0 31 31 0 0 1 0 7.778m-1.658-8.05c.273 2.781.393 5.269 0 8.04 0 .152-.12.272-.261.272a.27.27 0 0 1-.262-.273c-.382-2.738-.251-5.301 0-8.04a.26.26 0 0 1 .262-.24c.13 0 .25.11.261.24m-1.657 8.05a.273.273 0 0 1-.273.251c-.142 0-.251-.109-.273-.25a29 29 0 0 1 0-7.266.28.28 0 0 1 .273-.284c.153 0 .273.12.273.284.327 2.41.316 4.854 0 7.265m-1.658-5.454c.414 1.887.229 3.545-.011 5.465a.26.26 0 0 1-.262.218.25.25 0 0 1-.25-.218c-.23-1.898-.415-3.6-.012-5.465a.27.27 0 0 1 .273-.273.27.27 0 0 1 .273.273zm-1.658-.284c.382 1.931.262 3.567 0 5.498-.033.284-.513.284-.545 0-.24-1.909-.36-3.589 0-5.498.01-.142.141-.25.283-.25s.262.108.284.25zm-1.669.938c.404 1.277.262 2.324-.01 3.633a.27.27 0 0 1-.262.24.26.26 0 0 1-.262-.24c-.24-1.287-.338-2.346-.022-3.633a.276.276 0 0 1 .284-.25c.152 0 .261.109.283.25z"
1019
+ fill-rule="evenodd"
1020
+ />
1021
+ </svg>
1022
+ </a>
1023
+ </div>
1024
+ </div>
1025
+ </div>
1026
+ <div
1027
+ class="ucl-uikit-footer__back-to-top css-erdb9c"
1028
+ data-testid="ucl-uikit-footer__back-to-top"
1029
+ >
1030
+ <button
1031
+ class="css-zla959"
1032
+ >
1033
+ Back to top
1034
+ <svg
1035
+ class="ucl-uikit-icon css-148hpxb"
1036
+ data-testid="ucl-uikit-icon"
1037
+ fill="none"
1038
+ focusable="false"
1039
+ height="24"
1040
+ stroke="currentColor"
1041
+ stroke-linecap="round"
1042
+ stroke-linejoin="round"
1043
+ stroke-width="2"
1044
+ viewBox="0 0 24 24"
1045
+ width="24"
1046
+ xmlns="http://www.w3.org/2000/svg"
1047
+ >
1048
+ <path
1049
+ d="M12 19V5m-7 7 7-7 7 7"
1050
+ />
1051
+ </svg>
1052
+ </button>
1053
+ </div>
1054
+ <div
1055
+ class="ucl-uikit-footer__legal-and-copyright css-1v2ya9w"
1056
+ data-testid="ucl-uikit-footer__legal-and-copyright"
1057
+ >
1058
+ <div
1059
+ class="css-j4yrqr"
1060
+ >
1061
+ <a
1062
+ class="css-19zp1gp"
1063
+ href="https://www.ucl.ac.uk/legal-services/disclaimer"
1064
+ >
1065
+ Disclaimer
1066
+ </a>
1067
+ <a
1068
+ class="css-19zp1gp"
1069
+ href="https://www.ucl.ac.uk/foi"
1070
+ >
1071
+ Freedom of Information
1072
+ </a>
1073
+ <a
1074
+ class="css-19zp1gp"
1075
+ href="https://www.ucl.ac.uk/accessibility"
1076
+ >
1077
+ Accessibility
1078
+ </a>
1079
+ <a
1080
+ class="css-19zp1gp"
1081
+ href="https://www.ucl.ac.uk/legal-services/privacy/cookie-policy"
1082
+ >
1083
+ Cookies
1084
+ </a>
1085
+ <a
1086
+ class="css-19zp1gp"
1087
+ href="https://www.ucl.ac.uk/legal-services/privacy"
1088
+ >
1089
+ Privacy
1090
+ </a>
1091
+ <a
1092
+ class="css-19zp1gp"
1093
+ href="https://www.ucl.ac.uk/commercial-procurement/modern-day-slavery-statement"
1094
+ >
1095
+ Slavery statement
1096
+ </a>
1097
+ </div>
1098
+ <div
1099
+ class="css-4n563l"
1100
+ >
1101
+ ©
1102
+ 2026
1103
+ UCL
1104
+ </div>
1105
+ </div>
1106
+ </footer>
1107
+ `;