uikit-react-public 0.11.24 → 0.17.4

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 (301) hide show
  1. package/README.md +4 -2
  2. package/dist/components/Accordion/Accordion.Heading.d.ts +4 -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/Avatar/Avatar.stories.d.ts +107 -1
  8. package/dist/components/Badge/Badge.d.ts +6 -0
  9. package/dist/components/Badge/Badge.stories.d.ts +15 -0
  10. package/dist/components/Badge/index.d.ts +2 -0
  11. package/dist/components/Button/Button.d.ts +3 -1
  12. package/dist/components/Calendar/index.d.ts +1 -1
  13. package/dist/components/CookieNotice/CookieNotice.d.ts +16 -0
  14. package/dist/components/CookieNotice/index.d.ts +2 -0
  15. package/dist/components/Datepicker/Datepicker.d.ts +1 -1
  16. package/dist/components/Datepicker/Datepicker.stories.d.ts +4 -3
  17. package/dist/components/Datepicker/Datepicker.types.d.ts +4 -5
  18. package/dist/components/Datepicker/subcomponents/CustomDatepicker.d.ts +4 -1
  19. package/dist/components/Datepicker/subcomponents/DatepickerInput.d.ts +15 -2
  20. package/dist/components/Datepicker/subcomponents/Panel.d.ts +1 -1
  21. package/dist/components/Datepicker/subcomponents/VisibleField.d.ts +6 -1
  22. package/dist/components/Datepicker/subcomponents/index.d.ts +0 -1
  23. package/dist/components/Datepicker/utils/index.d.ts +0 -1
  24. package/dist/components/Dialog/BaseDialog.d.ts +8 -2
  25. package/dist/components/Dialog/Dialog.d.ts +2 -0
  26. package/dist/components/FileInput/FileInput.d.ts +8 -0
  27. package/dist/components/FileInput/FileInput.stories.d.ts +16 -0
  28. package/dist/components/FileInput/index.d.ts +2 -0
  29. package/dist/components/Header/Header.d.ts +7 -1
  30. package/dist/components/Header/Header.stories.d.ts +40 -0
  31. package/dist/components/Heading/Heading.d.ts +1 -1
  32. package/dist/components/Link/BaseLink.d.ts +10 -0
  33. package/dist/components/Link/Link.d.ts +5 -10
  34. package/dist/components/Link/Link.stories.d.ts +1 -1
  35. package/dist/components/Link/index.d.ts +1 -1
  36. package/dist/components/Main/Main.d.ts +21 -0
  37. package/dist/components/Main/Main.stories.d.ts +15 -0
  38. package/dist/components/Main/__tests__/Main.test.d.ts +1 -0
  39. package/dist/components/Main/index.d.ts +2 -0
  40. package/dist/components/Menu/MenuContent.d.ts +1 -1
  41. package/dist/components/Menu/MenuItem.d.ts +2 -0
  42. package/dist/components/Menu/MenuSection.d.ts +1 -1
  43. package/dist/components/NativeDatepicker/NativeDatepicker.d.ts +3 -0
  44. package/dist/components/NativeDatepicker/NativeDatepicker.stories.d.ts +36 -0
  45. package/dist/components/NativeDatepicker/NativeDatepicker.types.d.ts +10 -0
  46. package/dist/components/NativeDatepicker/index.d.ts +2 -0
  47. package/dist/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.d.ts +1 -1
  48. package/dist/components/NativeDatepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.d.ts +1 -0
  49. package/dist/components/NativeDatepicker/utils/index.d.ts +1 -0
  50. package/dist/components/Search/Search.d.ts +16 -0
  51. package/dist/components/Search/Search.stories.d.ts +34 -0
  52. package/dist/components/Search/__tests__/Search.test.d.ts +1 -0
  53. package/dist/components/Search/index.d.ts +2 -0
  54. package/dist/components/Select/Select.d.ts +1 -1
  55. package/dist/components/Select/Select.stories.d.ts +157 -9
  56. package/dist/components/Select/Select.types.d.ts +66 -32
  57. package/dist/components/Select/subcomponents/CustomOption.d.ts +1 -1
  58. package/dist/components/Select/subcomponents/CustomSelect.d.ts +3 -3
  59. package/dist/components/Select/subcomponents/FilterInput.d.ts +14 -0
  60. package/dist/components/Select/subcomponents/NativeSelect.d.ts +5 -1
  61. package/dist/components/Select/subcomponents/Panel.d.ts +1 -1
  62. package/dist/components/Select/subcomponents/VisibleField.d.ts +6 -4
  63. package/dist/components/Select/subcomponents/index.d.ts +1 -0
  64. package/dist/components/StandaloneLink/StandaloneLink.d.ts +12 -0
  65. package/dist/components/StandaloneLink/StandaloneLink.stories.d.ts +13 -0
  66. package/dist/components/StandaloneLink/__tests__/StandaloneLink.test.d.ts +1 -0
  67. package/dist/components/StandaloneLink/index.d.ts +2 -0
  68. package/dist/components/Table/Table.d.ts +10 -8
  69. package/dist/components/Table/Table.stories.d.ts +21 -0
  70. package/dist/components/Table/Table.types.d.ts +11 -0
  71. package/dist/components/Table/__tests__/Table.test.d.ts +1 -0
  72. package/dist/components/Table/index.d.ts +2 -1
  73. package/dist/components/Table/subcomponents/Body.d.ts +4 -0
  74. package/dist/components/Table/subcomponents/Cell/Cell.d.ts +12 -0
  75. package/dist/components/Table/subcomponents/Cell/Cell.stories.d.ts +313 -0
  76. package/dist/components/Table/subcomponents/Cell/CellContent.d.ts +10 -0
  77. package/dist/components/Table/subcomponents/Cell/__tests__/Cell.test.d.ts +1 -0
  78. package/dist/components/Table/subcomponents/Head.d.ts +4 -0
  79. package/dist/components/Table/subcomponents/HeadCell/HeadCell.d.ts +13 -0
  80. package/dist/components/Table/subcomponents/HeadCell/HeadCell.stories.d.ts +312 -0
  81. package/dist/components/Table/subcomponents/HeadCell/HeadCellContent.d.ts +10 -0
  82. package/dist/components/Table/subcomponents/HeadCell/__tests__/HeadCell.test.d.ts +1 -0
  83. package/dist/components/Table/subcomponents/Row.d.ts +5 -0
  84. package/dist/components/Table/subcomponents/SortIcon.d.ts +7 -0
  85. package/dist/components/Table/subcomponents/index.d.ts +10 -0
  86. package/dist/components/Tabs/Tab.d.ts +1 -1
  87. package/dist/components/Tabs/TabContext.d.ts +1 -0
  88. package/dist/components/Tabs/Tabs.d.ts +3 -1
  89. package/dist/components/Tabs/Tabs.stories.d.ts +3 -0
  90. package/dist/components/Timepicker/Timepicker.d.ts +10 -0
  91. package/dist/components/Timepicker/Timepicker.stories.d.ts +7 -0
  92. package/dist/components/Timepicker/__tests__/Timepicker.test.d.ts +1 -0
  93. package/dist/components/Timepicker/index.d.ts +2 -0
  94. package/dist/components/Timepicker/utils/convertDateToTimeString.d.ts +2 -0
  95. package/dist/components/Timepicker/utils/convertDateToTimeString.test.d.ts +1 -0
  96. package/dist/components/Timepicker/utils/index.d.ts +1 -0
  97. package/dist/components/WeekPicker/WeekPicker.d.ts +3 -0
  98. package/dist/components/WeekPicker/WeekPicker.stories.d.ts +41 -0
  99. package/dist/components/WeekPicker/WeekPicker.types.d.ts +16 -0
  100. package/dist/components/WeekPicker/index.d.ts +2 -0
  101. package/dist/components/WeekPicker/subcomponents/CustomDatepicker.d.ts +17 -0
  102. package/dist/components/WeekPicker/subcomponents/DatepickerInput.d.ts +13 -0
  103. package/dist/components/WeekPicker/subcomponents/VisibleField.d.ts +15 -0
  104. package/dist/components/WeekPicker/subcomponents/index.d.ts +3 -0
  105. package/dist/components/index.d.ts +19 -0
  106. package/dist/hooks/index.d.ts +2 -0
  107. package/dist/hooks/useFocusTrap.d.ts +10 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.js +6460 -4607
  110. package/dist/theme/defaultTheme.d.ts +7 -0
  111. package/dist/theme/useTheme.d.ts +14 -0
  112. package/dist/utils/__tests__/announce.test.d.ts +1 -0
  113. package/dist/utils/__tests__/capitalise.test.d.ts +1 -0
  114. package/dist/utils/announce.d.ts +6 -0
  115. package/dist/utils/capitalise.d.ts +2 -0
  116. package/dist/utils/index.d.ts +1 -0
  117. package/lib/components/Accordion/Accordion.Heading.tsx +27 -8
  118. package/lib/components/Accordion/Accordion.Panel.tsx +11 -3
  119. package/lib/components/Accordion/Accordion.stories.tsx +139 -0
  120. package/lib/components/Accordion/Accordion.tsx +10 -8
  121. package/lib/components/Accordion/__tests__/__snapshots__/Accordion.test.tsx.snap +7 -7
  122. package/lib/components/Accordion/index.ts +2 -0
  123. package/lib/components/Alert/Alert.stories.tsx +1 -1
  124. package/lib/components/Alert/Alert.tsx +7 -1
  125. package/lib/components/Alert/__tests__/__snapshots__/Alert.test.tsx.snap +4 -0
  126. package/lib/components/Avatar/Avatar.mdx +117 -0
  127. package/lib/components/Avatar/Avatar.stories.tsx +110 -2
  128. package/lib/components/Badge/Badge.stories.tsx +19 -0
  129. package/lib/components/Badge/Badge.tsx +48 -0
  130. package/lib/components/Badge/index.ts +2 -0
  131. package/lib/components/Blanket/Blanket.stories.tsx +1 -1
  132. package/lib/components/Breadcrumbs/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +4 -4
  133. package/lib/components/Button/Button.stories.tsx +1 -1
  134. package/lib/components/Button/Button.tsx +6 -2
  135. package/lib/components/Calendar/Calendar.stories.tsx +12 -32
  136. package/lib/components/Calendar/__tests__/Calendar.test.tsx +23 -15
  137. package/lib/components/Calendar/index.ts +1 -5
  138. package/lib/components/Calendar/subcomponents/AcademicWeeks.tsx +2 -1
  139. package/lib/components/Calendar/subcomponents/ColumnHeading.tsx +5 -1
  140. package/lib/components/Calendar/subcomponents/EventDot.tsx +2 -1
  141. package/lib/components/Calendar/subcomponents/Grid.tsx +0 -1
  142. package/lib/components/Calendar/subcomponents/index.ts +1 -1
  143. package/lib/components/Calendar/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.ts +43 -11
  144. package/lib/components/Calendar/utils/normaliseMonth/normaliseMonth.test.ts +5 -5
  145. package/lib/components/CookieNotice/CookieNotice.tsx +114 -0
  146. package/lib/components/CookieNotice/index.ts +2 -0
  147. package/lib/components/Datepicker/Datepicker.lld.md +108 -0
  148. package/lib/components/Datepicker/Datepicker.stories.tsx +44 -5
  149. package/lib/components/Datepicker/Datepicker.tsx +14 -36
  150. package/lib/components/Datepicker/Datepicker.types.ts +5 -14
  151. package/lib/components/Datepicker/__tests__/Datepicker.test.tsx +150 -8
  152. package/lib/components/Datepicker/__tests__/__snapshots__/Datepicker.test.tsx.snap +10 -4
  153. package/lib/components/Datepicker/subcomponents/CustomDatepicker.tsx +39 -5
  154. package/lib/components/Datepicker/subcomponents/DatepickerInput.tsx +30 -17
  155. package/lib/components/Datepicker/subcomponents/Panel.tsx +6 -2
  156. package/lib/components/Datepicker/subcomponents/VisibleField.tsx +40 -3
  157. package/lib/components/Datepicker/subcomponents/index.ts +0 -1
  158. package/lib/components/Datepicker/utils/index.ts +0 -1
  159. package/lib/components/Dialog/BaseDialog.tsx +55 -4
  160. package/lib/components/Dialog/Dialog.tsx +8 -1
  161. package/lib/components/Dialog/DialogBody.tsx +5 -1
  162. package/lib/components/Dialog/DialogHeader.tsx +2 -1
  163. package/lib/components/Divider/Divider.stories.tsx +1 -1
  164. package/lib/components/Field/ErrorText.tsx +1 -0
  165. package/lib/components/Field/Field.stories.tsx +1 -1
  166. package/lib/components/Field/__tests__/Field.test.tsx +161 -148
  167. package/lib/components/FileInput/FileInput.stories.tsx +70 -0
  168. package/lib/components/FileInput/FileInput.tsx +68 -0
  169. package/lib/components/FileInput/__tests__/FileInput.test.tsx +99 -0
  170. package/lib/components/FileInput/__tests__/__snapshots__/FileInput.test.tsx.snap +91 -0
  171. package/lib/components/FileInput/index.ts +2 -0
  172. package/lib/components/Footer/Footer.stories.tsx +1 -1
  173. package/lib/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap +28 -28
  174. package/lib/components/Header/Header.mdx +52 -0
  175. package/lib/components/Header/Header.stories.tsx +98 -0
  176. package/lib/components/Header/Header.tsx +65 -3
  177. package/lib/components/Header/__tests__/Header.test.tsx +17 -1
  178. package/lib/components/Header/__tests__/__snapshots__/Header.test.tsx.snap +4 -4
  179. package/lib/components/Heading/Documentation.mdx +1 -1
  180. package/lib/components/Heading/Heading.stories.tsx +1 -1
  181. package/lib/components/Heading/Heading.tsx +1 -1
  182. package/lib/components/Heading/__tests__/Heading.test.tsx +7 -19
  183. package/lib/components/Heading/__tests__/__snapshots__/Heading.test.tsx.snap +7 -7
  184. package/lib/components/Icon/Icon.stories.tsx +1 -1
  185. package/lib/components/IconButton/IconButton.stories.tsx +1 -1
  186. package/lib/components/Input/Input.stories.tsx +1 -1
  187. package/lib/components/Label/Label.stories.tsx +1 -1
  188. package/lib/components/Label/Label.tsx +0 -2
  189. package/lib/components/Label/__tests__/__snapshots__/Label.test.tsx.snap +7 -7
  190. package/lib/components/Link/BaseLink.tsx +84 -0
  191. package/lib/components/Link/Link.tsx +72 -32
  192. package/lib/components/Link/__tests__/__snapshots__/link.test.tsx.snap +3 -3
  193. package/lib/components/Link/__tests__/link.test.tsx +6 -13
  194. package/lib/components/Link/index.ts +1 -1
  195. package/lib/components/Main/Main.stories.tsx +36 -0
  196. package/lib/components/Main/Main.tsx +46 -0
  197. package/lib/components/Main/__tests__/Main.test.tsx +80 -0
  198. package/lib/components/Main/__tests__/__snapshots__/Main.test.tsx.snap +33 -0
  199. package/lib/components/Main/index.ts +2 -0
  200. package/lib/components/Menu/Menu.context.tsx +3 -1
  201. package/lib/components/Menu/Menu.tsx +2 -2
  202. package/lib/components/Menu/MenuContent.tsx +5 -5
  203. package/lib/components/Menu/MenuItem.tsx +20 -3
  204. package/lib/components/Menu/MenuSection.tsx +4 -3
  205. package/lib/components/NativeDatepicker/NativeDatepicker.stories.tsx +100 -0
  206. package/lib/components/{Datepicker/subcomponents → NativeDatepicker}/NativeDatepicker.tsx +14 -15
  207. package/lib/components/NativeDatepicker/NativeDatepicker.types.ts +19 -0
  208. package/lib/components/NativeDatepicker/index.ts +2 -0
  209. package/lib/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.ts +1 -1
  210. package/lib/components/NativeDatepicker/utils/index.ts +1 -0
  211. package/lib/components/Pagination/PaginationControls.tsx +56 -15
  212. package/lib/components/Pagination/PaginationInfo.tsx +5 -1
  213. package/lib/components/Paragraph/Paragraph.stories.tsx +1 -1
  214. package/lib/components/Search/Search.stories.tsx +41 -0
  215. package/lib/components/Search/Search.tsx +170 -0
  216. package/lib/components/Search/__tests__/Search.test.tsx +112 -0
  217. package/lib/components/Search/__tests__/__snapshots__/Search.test.tsx.snap +179 -0
  218. package/lib/components/Search/index.ts +2 -0
  219. package/lib/components/Select/Select.mdx +169 -0
  220. package/lib/components/Select/Select.stories.tsx +198 -77
  221. package/lib/components/Select/Select.tsx +37 -13
  222. package/lib/components/Select/Select.types.ts +77 -54
  223. package/lib/components/Select/__tests__/Select.test.tsx +448 -7
  224. package/lib/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +3 -3
  225. package/lib/components/Select/subcomponents/CustomOption.tsx +24 -10
  226. package/lib/components/Select/subcomponents/CustomSelect.tsx +333 -52
  227. package/lib/components/Select/subcomponents/FilterInput.tsx +80 -0
  228. package/lib/components/Select/subcomponents/NativeSelect.tsx +13 -1
  229. package/lib/components/Select/subcomponents/Panel.tsx +4 -5
  230. package/lib/components/Select/subcomponents/VisibleField.tsx +36 -24
  231. package/lib/components/Select/subcomponents/index.tsx +1 -0
  232. package/lib/components/Snackbar/Snackbar.stories.tsx +1 -1
  233. package/lib/components/Spinner/Spinner.stories.tsx +1 -1
  234. package/lib/components/StandaloneLink/StandaloneLink.stories.tsx +32 -0
  235. package/lib/components/StandaloneLink/StandaloneLink.tsx +183 -0
  236. package/lib/components/StandaloneLink/__tests__/StandaloneLink.test.tsx +57 -0
  237. package/lib/components/StandaloneLink/__tests__/__snapshots__/StandaloneLink.test.tsx.snap +19 -0
  238. package/lib/components/StandaloneLink/index.ts +2 -0
  239. package/lib/components/Table/Table.stories.tsx +337 -0
  240. package/lib/components/Table/Table.tsx +42 -67
  241. package/lib/components/Table/Table.types.ts +14 -0
  242. package/lib/components/Table/__tests__/Table.test.tsx +121 -0
  243. package/lib/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +210 -0
  244. package/lib/components/Table/index.ts +8 -1
  245. package/lib/components/Table/subcomponents/Body.tsx +18 -0
  246. package/lib/components/Table/subcomponents/Cell/Cell.stories.tsx +151 -0
  247. package/lib/components/Table/subcomponents/Cell/Cell.tsx +72 -0
  248. package/lib/components/Table/subcomponents/Cell/CellContent.tsx +91 -0
  249. package/lib/components/Table/subcomponents/Cell/__tests__/Cell.test.tsx +115 -0
  250. package/lib/components/Table/subcomponents/Cell/__tests__/__snapshots__/Cell.test.tsx.snap +107 -0
  251. package/lib/components/Table/subcomponents/Head.tsx +34 -0
  252. package/lib/components/Table/subcomponents/HeadCell/HeadCell.stories.tsx +85 -0
  253. package/lib/components/Table/subcomponents/HeadCell/HeadCell.tsx +99 -0
  254. package/lib/components/Table/subcomponents/HeadCell/HeadCellContent.tsx +61 -0
  255. package/lib/components/Table/subcomponents/HeadCell/__tests__/HeadCell.test.tsx +137 -0
  256. package/lib/components/Table/subcomponents/HeadCell/__tests__/__snapshots__/HeadCell.test.tsx.snap +110 -0
  257. package/lib/components/Table/subcomponents/Row.tsx +49 -0
  258. package/lib/components/Table/subcomponents/SortIcon.tsx +63 -0
  259. package/lib/components/Table/subcomponents/index.ts +14 -0
  260. package/lib/components/Tabs/Tab.tsx +3 -3
  261. package/lib/components/Tabs/TabContext.tsx +1 -0
  262. package/lib/components/Tabs/Tabs.stories.tsx +9 -3
  263. package/lib/components/Tabs/Tabs.tsx +10 -32
  264. package/lib/components/Tabs/__tests__/Tabs.test.tsx +10 -4
  265. package/lib/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +32 -32
  266. package/lib/components/Textarea/Textarea.stories.tsx +1 -1
  267. package/lib/components/Timepicker/Timepicker.stories.tsx +43 -0
  268. package/lib/components/Timepicker/Timepicker.tsx +100 -0
  269. package/lib/components/Timepicker/__tests__/Timepicker.test.tsx +55 -0
  270. package/lib/components/Timepicker/__tests__/__snapshots__/Timepicker.test.tsx.snap +19 -0
  271. package/lib/components/Timepicker/index.tsx +2 -0
  272. package/lib/components/Timepicker/utils/convertDateToTimeString.test.ts +54 -0
  273. package/lib/components/Timepicker/utils/convertDateToTimeString.ts +10 -0
  274. package/lib/components/Timepicker/utils/index.ts +1 -0
  275. package/lib/components/Toggle/Toggle.stories.tsx +1 -1
  276. package/lib/components/Tooltip/Tooltip.stories.tsx +1 -1
  277. package/lib/components/WeekPicker/WeekPicker.stories.tsx +147 -0
  278. package/lib/components/WeekPicker/WeekPicker.tsx +26 -0
  279. package/lib/components/WeekPicker/WeekPicker.types.ts +21 -0
  280. package/lib/components/WeekPicker/index.ts +2 -0
  281. package/lib/components/WeekPicker/subcomponents/CustomDatepicker.tsx +298 -0
  282. package/lib/components/WeekPicker/subcomponents/DatepickerInput.tsx +111 -0
  283. package/lib/components/WeekPicker/subcomponents/VisibleField.tsx +126 -0
  284. package/lib/components/WeekPicker/subcomponents/index.ts +3 -0
  285. package/lib/components/common/Common.mdx +1 -1
  286. package/lib/components/index.ts +28 -2
  287. package/lib/hooks/index.ts +2 -0
  288. package/lib/hooks/useFocusTrap.ts +159 -0
  289. package/lib/index.ts +2 -0
  290. package/lib/theme/defaultTheme.ts +7 -0
  291. package/lib/utils/__tests__/announce.test.ts +121 -0
  292. package/lib/utils/__tests__/capitalise.test.ts +40 -0
  293. package/lib/utils/announce.ts +134 -0
  294. package/lib/utils/capitalise.ts +4 -0
  295. package/lib/utils/index.ts +1 -0
  296. package/package.json +3 -6
  297. package/dist/components/Datepicker/subcomponents/NativeDatepicker.d.ts +0 -6
  298. package/lib/components/Accordion/Accordion.stories.tsx.NOT_READY +0 -93
  299. package/lib/components/Field/__tests__/__snapshots__/Field.test.tsx.snap +0 -300
  300. /package/dist/components/{Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.d.ts → FileInput/__tests__/FileInput.test.d.ts} +0 -0
  301. /package/lib/components/{Datepicker → NativeDatepicker}/utils/dateToLocaleISOString/dateToLocaleISOString.test.ts +0 -0
@@ -20,6 +20,7 @@ declare const blackAndWhite: {
20
20
  white: string;
21
21
  };
22
22
  declare const theme: {
23
+ p0: number;
23
24
  p2: string;
24
25
  p4: string;
25
26
  p6: string;
@@ -35,6 +36,7 @@ declare const theme: {
35
36
  p64: string;
36
37
  p72: string;
37
38
  p80: string;
39
+ m0: number;
38
40
  m2: string;
39
41
  m4: string;
40
42
  m6: string;
@@ -114,7 +116,9 @@ declare const theme: {
114
116
  };
115
117
  link: {
116
118
  default: string;
119
+ secondaryDefault: string;
117
120
  hover: string;
121
+ secondaryHover: string;
118
122
  visited: string;
119
123
  disabled: string;
120
124
  };
@@ -122,6 +126,7 @@ declare const theme: {
122
126
  black: string;
123
127
  grey90: string;
124
128
  grey80: string;
129
+ grey70: string;
125
130
  grey60: string;
126
131
  grey40: string;
127
132
  grey20: string;
@@ -153,6 +158,7 @@ declare const theme: {
153
158
  h80: string;
154
159
  };
155
160
  margin: {
161
+ m0: number;
156
162
  m2: string;
157
163
  m4: string;
158
164
  m6: string;
@@ -170,6 +176,7 @@ declare const theme: {
170
176
  m80: string;
171
177
  };
172
178
  padding: {
179
+ p0: number;
173
180
  p2: string;
174
181
  p4: string;
175
182
  p6: string;
@@ -3,6 +3,7 @@ export declare const ThemeContextProvider: React.FC<{
3
3
  children: ReactNode;
4
4
  }>;
5
5
  declare const useTheme: () => [{
6
+ p0: number;
6
7
  p2: string;
7
8
  p4: string;
8
9
  p6: string;
@@ -18,6 +19,7 @@ declare const useTheme: () => [{
18
19
  p64: string;
19
20
  p72: string;
20
21
  p80: string;
22
+ m0: number;
21
23
  m2: string;
22
24
  m4: string;
23
25
  m6: string;
@@ -97,7 +99,9 @@ declare const useTheme: () => [{
97
99
  };
98
100
  link: {
99
101
  default: string;
102
+ secondaryDefault: string;
100
103
  hover: string;
104
+ secondaryHover: string;
101
105
  visited: string;
102
106
  disabled: string;
103
107
  };
@@ -105,6 +109,7 @@ declare const useTheme: () => [{
105
109
  black: string;
106
110
  grey90: string;
107
111
  grey80: string;
112
+ grey70: string;
108
113
  grey60: string;
109
114
  grey40: string;
110
115
  grey20: string;
@@ -136,6 +141,7 @@ declare const useTheme: () => [{
136
141
  h80: string;
137
142
  };
138
143
  margin: {
144
+ m0: number;
139
145
  m2: string;
140
146
  m4: string;
141
147
  m6: string;
@@ -153,6 +159,7 @@ declare const useTheme: () => [{
153
159
  m80: string;
154
160
  };
155
161
  padding: {
162
+ p0: number;
156
163
  p2: string;
157
164
  p4: string;
158
165
  p6: string;
@@ -244,6 +251,7 @@ declare const useTheme: () => [{
244
251
  custom: (breakpoint: number) => string;
245
252
  };
246
253
  }, import('react').Dispatch<import('react').SetStateAction<{
254
+ p0: number;
247
255
  p2: string;
248
256
  p4: string;
249
257
  p6: string;
@@ -259,6 +267,7 @@ declare const useTheme: () => [{
259
267
  p64: string;
260
268
  p72: string;
261
269
  p80: string;
270
+ m0: number;
262
271
  m2: string;
263
272
  m4: string;
264
273
  m6: string;
@@ -338,7 +347,9 @@ declare const useTheme: () => [{
338
347
  };
339
348
  link: {
340
349
  default: string;
350
+ secondaryDefault: string;
341
351
  hover: string;
352
+ secondaryHover: string;
342
353
  visited: string;
343
354
  disabled: string;
344
355
  };
@@ -346,6 +357,7 @@ declare const useTheme: () => [{
346
357
  black: string;
347
358
  grey90: string;
348
359
  grey80: string;
360
+ grey70: string;
349
361
  grey60: string;
350
362
  grey40: string;
351
363
  grey20: string;
@@ -377,6 +389,7 @@ declare const useTheme: () => [{
377
389
  h80: string;
378
390
  };
379
391
  margin: {
392
+ m0: number;
380
393
  m2: string;
381
394
  m4: string;
382
395
  m6: string;
@@ -394,6 +407,7 @@ declare const useTheme: () => [{
394
407
  m80: string;
395
408
  };
396
409
  padding: {
410
+ p0: number;
397
411
  p2: string;
398
412
  p4: string;
399
413
  p6: string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Announces a message to screen readers.
3
+ */
4
+ declare const announce: (message: string, force?: boolean) => void;
5
+ export declare const __resetForTesting: () => void;
6
+ export default announce;
@@ -0,0 +1,2 @@
1
+ declare const capitalise: (text: string) => string;
2
+ export default capitalise;
@@ -0,0 +1 @@
1
+ export { default as announce } from './announce';
@@ -1,14 +1,13 @@
1
- import React, { HTMLAttributes, JSX } from 'react';
1
+ import React, { HTMLAttributes } from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import useTheme from '../../theme/useTheme';
4
4
  import Icon from '../Icon/Icon';
5
5
  import { useAccordionContext } from './Accordion';
6
6
 
7
- export const NAME = 'ucl-accordion__heading';
7
+ export const NAME = 'ucl-uikit-accordion__heading';
8
8
 
9
- interface AccordionHeadingProps
10
- extends HTMLAttributes<HTMLElement> {
11
- as?: keyof JSX.IntrinsicElements;
9
+ export interface AccordionHeadingProps extends HTMLAttributes<HTMLElement> {
10
+ as?: keyof HTMLElementTagNameMap;
12
11
  testId?: string;
13
12
  }
14
13
 
@@ -19,13 +18,21 @@ const AccordionHeading: React.FC<AccordionHeadingProps> = ({
19
18
  className,
20
19
  }) => {
21
20
  const [theme] = useTheme();
22
- const { isOpen, toggleAccordion, disabled, size } =
23
- useAccordionContext();
21
+ const { isOpen, toggleAccordion, disabled, size } = useAccordionContext();
22
+
23
+ const handleKeyDown: React.KeyboardEventHandler<HTMLElement> = (e) => {
24
+ if (disabled) return;
25
+ if (e.key === 'Enter' || e.key === ' ') {
26
+ e.preventDefault();
27
+ toggleAccordion();
28
+ }
29
+ };
24
30
 
25
31
  const headingStyle = cx(
26
32
  NAME,
27
33
  css`
28
34
  display: flex;
35
+ position: relative;
29
36
  justify-content: space-between;
30
37
  align-items: center;
31
38
  padding: ${theme.padding.p16};
@@ -35,6 +42,14 @@ const AccordionHeading: React.FC<AccordionHeadingProps> = ({
35
42
  transition:
36
43
  background-color 0.3s ease,
37
44
  box-shadow 0.3s ease;
45
+ margin: 0;
46
+ border: none;
47
+ outline: none;
48
+ text-decoration: none;
49
+ box-sizing: border-box;
50
+ width: 100%;
51
+ font-size: inherit;
52
+ line-height: inherit;
38
53
 
39
54
  &:hover {
40
55
  background-color: ${!disabled
@@ -45,6 +60,7 @@ const AccordionHeading: React.FC<AccordionHeadingProps> = ({
45
60
  &:focus-visible {
46
61
  outline: none;
47
62
  box-shadow: ${theme.boxShadow.focus};
63
+ z-index: 20;
48
64
  }
49
65
  `,
50
66
  className
@@ -54,6 +70,7 @@ const AccordionHeading: React.FC<AccordionHeadingProps> = ({
54
70
  <Component
55
71
  className={headingStyle}
56
72
  data-testid={testId}
73
+ onKeyDown={handleKeyDown}
57
74
  onClick={!disabled ? toggleAccordion : undefined}
58
75
  role='button'
59
76
  tabIndex={0}
@@ -65,7 +82,9 @@ const AccordionHeading: React.FC<AccordionHeadingProps> = ({
65
82
  className={css`
66
83
  transform: rotate(${isOpen ? '180deg' : '0deg'});
67
84
  transition: transform 0.15s ease;
68
- color: ${theme.color.interaction.blue70};
85
+ color: ${disabled
86
+ ? theme.color.text.disabled
87
+ : theme.color.interaction.blue70};
69
88
  `}
70
89
  />
71
90
  </Component>
@@ -3,10 +3,9 @@ import { css, cx } from '@emotion/css';
3
3
  import useTheme from '../../theme/useTheme';
4
4
  import { useAccordionContext } from './Accordion';
5
5
 
6
- export const NAME = 'ucl-accordion__panel';
6
+ export const NAME = 'ucl-uikit-accordion__panel';
7
7
 
8
- interface AccordionPanelProps
9
- extends HTMLAttributes<HTMLDivElement> {
8
+ export interface AccordionPanelProps extends HTMLAttributes<HTMLDivElement> {
10
9
  testId?: string;
11
10
  }
12
11
 
@@ -24,12 +23,21 @@ const AccordionPanel: React.FC<AccordionPanelProps> = ({
24
23
  NAME,
25
24
 
26
25
  css`
26
+ position: relative;
27
+ width: 100%;
28
+ max-width: 100%;
29
+ min-width: 0;
30
+ flex-shrink: 1;
27
31
  padding: ${theme.padding.p16};
28
32
  font-family: ${theme.font.family.primary};
29
33
  font-weight: ${theme.font.weight.regular};
30
34
  background-color: ${theme.color.neutral.white};
31
35
  font-size: ${theme.font.size.f16};
32
36
  color: ${theme.color.text.primary};
37
+ box-sizing: border-box;
38
+ overflow: hidden;
39
+ overflow-wrap: break-word;
40
+ word-break: break-word;
33
41
  `,
34
42
  className
35
43
  );
@@ -0,0 +1,139 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import Accordion from './Accordion';
3
+
4
+ const meta = {
5
+ title: 'Components/Accordion',
6
+ component: Accordion,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ argTypes: {
11
+ size: {
12
+ options: ['small', 'medium'],
13
+ control: { type: 'select' },
14
+ type: 'string',
15
+ },
16
+ disabled: {
17
+ control: { type: 'boolean' },
18
+ type: 'boolean',
19
+ },
20
+ isOpen: {
21
+ control: { type: 'boolean' },
22
+ type: 'boolean',
23
+ },
24
+ testId: {
25
+ control: { type: 'text' },
26
+ type: 'string',
27
+ },
28
+ className: {
29
+ control: { type: 'text' },
30
+ type: 'string',
31
+ },
32
+ },
33
+ args: {
34
+ isOpen: false,
35
+ disabled: false,
36
+ size: 'medium',
37
+ },
38
+ tags: ['autodocs'],
39
+ } satisfies Meta<typeof Accordion>;
40
+
41
+ export default meta;
42
+
43
+ type Story = StoryObj<typeof meta>;
44
+
45
+ export const Default: Story = {
46
+ args: {
47
+ isOpen: false,
48
+ disabled: false,
49
+ size: 'medium',
50
+ },
51
+ render: (args) => (
52
+ <Accordion {...args}>
53
+ <Accordion.Heading>Heading</Accordion.Heading>
54
+ <Accordion.Panel>Panel Content</Accordion.Panel>
55
+ </Accordion>
56
+ ),
57
+ };
58
+
59
+ export const Disabled: Story = {
60
+ args: {
61
+ isOpen: false,
62
+ disabled: true,
63
+ size: 'medium',
64
+ },
65
+ render: (args) => (
66
+ <Accordion {...args}>
67
+ <Accordion.Heading>Heading</Accordion.Heading>
68
+ <Accordion.Panel>Panel Content</Accordion.Panel>
69
+ </Accordion>
70
+ ),
71
+ };
72
+
73
+ export const SmallSize: Story = {
74
+ args: {
75
+ isOpen: false,
76
+ disabled: false,
77
+ size: 'small',
78
+ },
79
+ render: (args) => (
80
+ <Accordion {...args}>
81
+ <Accordion.Heading>Heading</Accordion.Heading>
82
+ <Accordion.Panel>Panel Content</Accordion.Panel>
83
+ </Accordion>
84
+ ),
85
+ };
86
+
87
+ export const CustomHeadingElement: Story = {
88
+ args: {
89
+ isOpen: false,
90
+ disabled: false,
91
+ size: 'medium',
92
+ },
93
+ render: (args) => (
94
+ <Accordion {...args}>
95
+ <Accordion.Heading as='h2'>Custom Heading as H2</Accordion.Heading>
96
+ <Accordion.Panel>
97
+ <p>This is the content of the accordion.</p>
98
+ </Accordion.Panel>
99
+ </Accordion>
100
+ ),
101
+ };
102
+
103
+ export const MultipleAccordions: Story = {
104
+ args: {
105
+ isOpen: false,
106
+ disabled: false,
107
+ size: 'medium',
108
+ },
109
+ render: (args) => (
110
+ <div style={{ width: '100%', maxWidth: 660 }}>
111
+ <Accordion {...args}>
112
+ <Accordion.Heading>Heading</Accordion.Heading>
113
+ <Accordion.Panel>
114
+ <p>
115
+ This accordion reveals additional details. For enquiries, email
116
+ <a href='mailto:admissions@ucl.ac.uk'> admissions@ucl.ac.uk</a>.
117
+ </p>
118
+ <p>
119
+ You can also visit our FAQs for more information and guidance on
120
+ next steps.
121
+ </p>
122
+ </Accordion.Panel>
123
+ </Accordion>
124
+ <Accordion {...args}>
125
+ <Accordion.Heading>Heading</Accordion.Heading>
126
+ <Accordion.Panel>
127
+ <p>
128
+ This accordion reveals additional details. For enquiries, email
129
+ <a href='mailto:admissions@ucl.ac.uk'> admissions@ucl.ac.uk</a>.
130
+ </p>
131
+ <p>
132
+ You can also visit our FAQs for more information and guidance on
133
+ next steps.
134
+ </p>
135
+ </Accordion.Panel>
136
+ </Accordion>
137
+ </div>
138
+ ),
139
+ };
@@ -9,7 +9,7 @@ import AccordionPanel from './Accordion.Panel';
9
9
  import { css, cx } from '@emotion/css';
10
10
  import useTheme from '../../theme/useTheme';
11
11
 
12
- export const NAME = 'ucl-accordion';
12
+ export const NAME = 'ucl-uikit-accordion';
13
13
 
14
14
  interface AccordionContextProps {
15
15
  isOpen: boolean;
@@ -18,9 +18,9 @@ interface AccordionContextProps {
18
18
  size: 'small' | 'medium';
19
19
  }
20
20
 
21
- const AccordionContext = createContext<
22
- AccordionContextProps | undefined
23
- >(undefined);
21
+ const AccordionContext = createContext<AccordionContextProps | undefined>(
22
+ undefined
23
+ );
24
24
 
25
25
  export const useAccordionContext = () => {
26
26
  const context = useContext(AccordionContext);
@@ -32,8 +32,7 @@ export const useAccordionContext = () => {
32
32
  return context;
33
33
  };
34
34
 
35
- export interface AccordionProps
36
- extends HTMLAttributes<HTMLDivElement> {
35
+ export interface AccordionProps extends HTMLAttributes<HTMLDivElement> {
37
36
  testId?: string;
38
37
  size?: 'small' | 'medium';
39
38
  disabled?: boolean;
@@ -63,11 +62,15 @@ const Accordion: React.FC<AccordionProps> & {
63
62
  const accordionStyle = cx(
64
63
  NAME,
65
64
  css`
66
- max-width: 600px;
65
+ width: 660px;
66
+ min-width: 288px;
67
+ max-width: 660px;
68
+ box-sizing: border-box;
67
69
  border: 1px solid ${theme.color.neutral.grey10};
68
70
  background-color: ${theme.color.neutral.white};
69
71
  font-family: ${theme.font.family.primary};
70
72
  font-size: ${theme.font.size.f16};
73
+ flex-shrink: 1;
71
74
  `,
72
75
  size === 'small' &&
73
76
  css`
@@ -83,7 +86,6 @@ const Accordion: React.FC<AccordionProps> & {
83
86
  pointer-events: none;
84
87
  background-color: ${theme.color.link.disabled};
85
88
  color: ${theme.color.text.muted};
86
- // border-color: ${theme.color.text.muted};
87
89
  `,
88
90
  className
89
91
  );
@@ -3,13 +3,13 @@
3
3
  exports[`Accordion > snapshot: no props 1`] = `
4
4
  <div
5
5
  aria-disabled="false"
6
- class="ucl-accordion css-1czwoas"
7
- data-testid="ucl-accordion"
6
+ class="ucl-uikit-accordion css-rs0koa"
7
+ data-testid="ucl-uikit-accordion"
8
8
  >
9
9
  <div
10
10
  aria-expanded="false"
11
- class="ucl-accordion__heading css-11x7r0n"
12
- data-testid="ucl-accordion__heading"
11
+ class="ucl-uikit-accordion__heading css-1yg3n9"
12
+ data-testid="ucl-uikit-accordion__heading"
13
13
  role="button"
14
14
  tabindex="0"
15
15
  >
@@ -38,13 +38,13 @@ exports[`Accordion > snapshot: no props 1`] = `
38
38
  exports[`Accordion > snapshot: testId prop 1`] = `
39
39
  <div
40
40
  aria-disabled="false"
41
- class="ucl-accordion css-1czwoas"
41
+ class="ucl-uikit-accordion css-rs0koa"
42
42
  data-testid="abc"
43
43
  >
44
44
  <div
45
45
  aria-expanded="false"
46
- class="ucl-accordion__heading css-11x7r0n"
47
- data-testid="ucl-accordion__heading"
46
+ class="ucl-uikit-accordion__heading css-1yg3n9"
47
+ data-testid="ucl-uikit-accordion__heading"
48
48
  role="button"
49
49
  tabindex="0"
50
50
  >
@@ -1,2 +1,4 @@
1
1
  export { default } from './Accordion';
2
2
  export type { AccordionProps } from './Accordion';
3
+ export type { AccordionHeadingProps } from './Accordion.Heading';
4
+ export type { AccordionPanelProps } from './Accordion.Panel';
@@ -21,7 +21,7 @@ const commonMarginPropsInfo = {
21
21
  };
22
22
 
23
23
  const meta = {
24
- title: 'Components/Ready to use/Alert',
24
+ title: 'Components/Alert',
25
25
  component: Alert,
26
26
  parameters: {
27
27
  layout: 'centered',
@@ -5,6 +5,7 @@ import AlertMessage from './AlertMessage';
5
5
  import AlertTitle from './AlertTitle';
6
6
  import marginsStyle, { MarginProps } from '../common/marginsStyle';
7
7
  import { useTheme } from '../../theme';
8
+ import capitalise from '../../utils/capitalise';
8
9
 
9
10
  export const NAME = 'ucl-uikit-alert';
10
11
 
@@ -38,6 +39,8 @@ const Alert = ({
38
39
  className,
39
40
  ...props
40
41
  }: AlertProps) => {
42
+ const typeName = capitalise(type);
43
+
41
44
  const [theme] = useTheme();
42
45
 
43
46
  const { padding } = theme;
@@ -117,7 +120,10 @@ const Alert = ({
117
120
  role='alert'
118
121
  {...props}
119
122
  >
120
- <IconComp className={iconStyle} />
123
+ <IconComp
124
+ className={iconStyle}
125
+ aria-label={typeName}
126
+ />
121
127
  <div>{children}</div>
122
128
  </div>
123
129
  </AlertContext.Provider>
@@ -7,6 +7,7 @@ exports[`Alert > snapshot: type=error 1`] = `
7
7
  role="alert"
8
8
  >
9
9
  <svg
10
+ aria-label="Error"
10
11
  class="ucl-uikit-icon css-nysdxe"
11
12
  data-testid="ucl-uikit-icon"
12
13
  fill="none"
@@ -61,6 +62,7 @@ exports[`Alert > snapshot: type=info, no title 1`] = `
61
62
  role="alert"
62
63
  >
63
64
  <svg
65
+ aria-label="Info"
64
66
  class="ucl-uikit-icon css-1oh4ubr"
65
67
  data-testid="ucl-uikit-icon"
66
68
  fill="none"
@@ -109,6 +111,7 @@ exports[`Alert > snapshot: type=success 1`] = `
109
111
  role="alert"
110
112
  >
111
113
  <svg
114
+ aria-label="Success"
112
115
  class="ucl-uikit-icon css-4xbsfp"
113
116
  data-testid="ucl-uikit-icon"
114
117
  fill="none"
@@ -152,6 +155,7 @@ exports[`Alert > snapshot: type=warning 1`] = `
152
155
  role="alert"
153
156
  >
154
157
  <svg
158
+ aria-label="Warning"
155
159
  class="ucl-uikit-icon css-dwkbnw"
156
160
  data-testid="ucl-uikit-icon"
157
161
  fill="none"