@databiosphere/findable-ui 21.3.0 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/.storybook/main.ts +7 -1
  3. package/CHANGELOG.md +25 -0
  4. package/lib/components/DataDictionary/components/Entities/constants.d.ts +2 -0
  5. package/lib/components/DataDictionary/components/Entities/constants.js +6 -0
  6. package/lib/components/DataDictionary/components/Entities/entities.d.ts +2 -0
  7. package/lib/components/DataDictionary/components/Entities/entities.js +7 -0
  8. package/lib/components/DataDictionary/components/Entities/types.d.ts +4 -0
  9. package/lib/components/DataDictionary/components/Entities/types.js +1 -0
  10. package/lib/components/DataDictionary/components/Entity/constants.d.ts +2 -0
  11. package/lib/components/DataDictionary/components/Entity/constants.js +5 -0
  12. package/lib/components/DataDictionary/components/Entity/entity.d.ts +2 -0
  13. package/lib/components/DataDictionary/components/Entity/entity.js +14 -0
  14. package/lib/components/DataDictionary/components/Entity/types.d.ts +4 -0
  15. package/lib/components/DataDictionary/components/Entity/types.js +1 -0
  16. package/lib/components/DataDictionary/components/Table/columns/columnDef.d.ts +6 -0
  17. package/lib/components/DataDictionary/components/Table/columns/columnDef.js +33 -0
  18. package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.d.ts +5 -0
  19. package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.js +5 -0
  20. package/lib/components/DataDictionary/components/Table/columns/types.d.ts +2 -0
  21. package/lib/components/DataDictionary/components/Table/columns/types.js +1 -0
  22. package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.d.ts +2 -0
  23. package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.js +6 -0
  24. package/lib/components/DataDictionary/components/Table/components/BasicCell/types.d.ts +4 -0
  25. package/lib/components/DataDictionary/components/Table/components/BasicCell/types.js +1 -0
  26. package/lib/components/DataDictionary/components/Table/hook.d.ts +3 -0
  27. package/lib/components/DataDictionary/components/Table/hook.js +11 -0
  28. package/lib/components/DataDictionary/components/Table/options/core/constants.d.ts +3 -0
  29. package/lib/components/DataDictionary/components/Table/options/core/constants.js +7 -0
  30. package/lib/components/DataDictionary/components/Table/options/hook.d.ts +3 -0
  31. package/lib/components/DataDictionary/components/Table/options/hook.js +8 -0
  32. package/lib/components/DataDictionary/components/Table/options/sorting/constants.d.ts +3 -0
  33. package/lib/components/DataDictionary/components/Table/options/sorting/constants.js +3 -0
  34. package/lib/components/DataDictionary/components/Table/table.d.ts +2 -0
  35. package/lib/components/DataDictionary/components/Table/table.js +17 -0
  36. package/lib/components/DataDictionary/components/Table/table.styles.d.ts +3 -0
  37. package/lib/components/DataDictionary/components/Table/table.styles.js +5 -0
  38. package/lib/components/DataDictionary/components/Table/types.d.ts +5 -0
  39. package/lib/components/DataDictionary/components/Table/types.js +1 -0
  40. package/lib/components/DataDictionary/dataDictionary.d.ts +2 -0
  41. package/lib/components/DataDictionary/dataDictionary.js +9 -0
  42. package/lib/components/DataDictionary/dataDictionary.styles.d.ts +1 -0
  43. package/lib/components/DataDictionary/dataDictionary.styles.js +7 -0
  44. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +2 -0
  45. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +5 -0
  46. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +4 -0
  47. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.js +1 -0
  48. package/lib/components/Detail/detail.stories.d.ts +36 -5
  49. package/lib/components/Detail/detail.stories.js +27 -18
  50. package/lib/components/Export/components/ExportForm/components/ExportButton/exportButton.js +6 -1
  51. package/lib/components/Export/components/ExportMethod/exportMethod.stories.d.ts +22 -5
  52. package/lib/components/Export/components/ExportMethod/exportMethod.stories.js +9 -9
  53. package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.js +5 -2
  54. package/lib/components/Filter/components/Filter/filter.stories.d.ts +25 -5
  55. package/lib/components/Filter/components/Filter/filter.stories.js +25 -24
  56. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +31 -5
  57. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +10 -8
  58. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.d.ts +38 -5
  59. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.js +107 -104
  60. package/lib/components/Filter/components/FilterTag/filterTag.stories.d.ts +16 -5
  61. package/lib/components/Filter/components/FilterTag/filterTag.stories.js +8 -7
  62. package/lib/components/Filter/components/FilterTags/filterTags.stories.d.ts +18 -5
  63. package/lib/components/Filter/components/FilterTags/filterTags.stories.js +40 -39
  64. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.js +10 -5
  65. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.d.ts +8 -5
  66. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.js +9 -6
  67. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.d.ts +13 -5
  68. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.js +11 -11
  69. package/lib/components/Index/components/Hero/hero.stories.d.ts +23 -5
  70. package/lib/components/Index/components/Hero/hero.stories.js +8 -6
  71. package/lib/components/Index/components/NTagCell/nTagCell.stories.d.ts +16 -5
  72. package/lib/components/Index/components/NTagCell/nTagCell.stories.js +8 -8
  73. package/lib/components/Index/index.stories.js +2 -1
  74. package/lib/components/Layout/components/BackPage/backPageView.stories.d.ts +31 -5
  75. package/lib/components/Layout/components/BackPage/backPageView.stories.js +27 -18
  76. package/lib/components/Layout/components/Footer/footer.stories.d.ts +24 -3
  77. package/lib/components/Layout/components/Footer/footer.stories.js +4 -3
  78. package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.js +1 -1
  79. package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.js +20 -21
  80. package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.d.ts +1 -0
  81. package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.js +1 -0
  82. package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.d.ts +2 -1
  83. package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.js +16 -17
  84. package/lib/components/Layout/components/Header/header.js +2 -1
  85. package/lib/components/Layout/components/Header/header.stories.js +1 -1
  86. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.d.ts +13 -5
  87. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.js +6 -6
  88. package/lib/components/Layout/components/Sidebar/sidebar.stories.js +2 -0
  89. package/lib/components/Links/links.stories.d.ts +13 -5
  90. package/lib/components/Links/links.stories.js +14 -14
  91. package/lib/components/Loading/loading.stories.d.ts +34 -5
  92. package/lib/components/Loading/loading.stories.js +8 -6
  93. package/lib/components/Login/components/Button/types.d.ts +1 -1
  94. package/lib/components/Login/components/Buttons/buttons.d.ts +2 -0
  95. package/lib/components/Login/components/Buttons/buttons.js +5 -0
  96. package/lib/components/Login/components/Buttons/types.d.ts +8 -0
  97. package/lib/components/Login/components/Buttons/types.js +1 -0
  98. package/lib/components/Login/components/Section/components/Consent/consent.d.ts +3 -0
  99. package/lib/components/Login/components/Section/components/Consent/consent.js +14 -0
  100. package/lib/components/Login/components/Section/components/Consent/consent.styles.d.ts +7 -0
  101. package/lib/components/Login/components/Section/components/Consent/consent.styles.js +14 -0
  102. package/lib/components/Login/components/Section/components/Consent/types.d.ts +6 -0
  103. package/lib/components/Login/components/Section/components/Consent/types.js +1 -0
  104. package/lib/components/Login/components/Section/components/Warning/warning.d.ts +3 -0
  105. package/lib/components/Login/components/Section/components/Warning/warning.js +9 -0
  106. package/lib/components/Login/hooks/useUserConsent/types.d.ts +10 -0
  107. package/lib/components/Login/hooks/useUserConsent/types.js +1 -0
  108. package/lib/components/Login/hooks/useUserConsent/useUserConsent.d.ts +2 -0
  109. package/lib/components/Login/hooks/useUserConsent/useUserConsent.js +24 -0
  110. package/lib/components/Login/hooks/useUserLogin/types.d.ts +6 -0
  111. package/lib/components/Login/hooks/useUserLogin/types.js +1 -0
  112. package/lib/components/Login/hooks/useUserLogin/useUserLogin.d.ts +2 -0
  113. package/lib/components/Login/hooks/useUserLogin/useUserLogin.js +21 -0
  114. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.d.ts +13 -5
  115. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.js +20 -20
  116. package/lib/components/Project/components/Contacts/contacts.stories.d.ts +13 -5
  117. package/lib/components/Project/components/Contacts/contacts.stories.js +18 -18
  118. package/lib/components/Project/components/Contributors/contributors.stories.d.ts +8 -5
  119. package/lib/components/Project/components/Contributors/contributors.stories.js +27 -27
  120. package/lib/components/Project/components/DataCurators/dataCurators.stories.d.ts +13 -5
  121. package/lib/components/Project/components/DataCurators/dataCurators.stories.js +7 -7
  122. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.d.ts +8 -5
  123. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.js +3 -4
  124. package/lib/components/Project/components/Description/description.stories.d.ts +8 -5
  125. package/lib/components/Project/components/Description/description.stories.js +6 -6
  126. package/lib/components/Project/components/Details/details.stories.d.ts +16 -5
  127. package/lib/components/Project/components/Details/details.stories.js +7 -7
  128. package/lib/components/Project/components/Publications/publications.stories.d.ts +8 -5
  129. package/lib/components/Project/components/Publications/publications.stories.js +17 -17
  130. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.d.ts +8 -5
  131. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.js +18 -18
  132. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.d.ts +16 -33
  133. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.js +10 -9
  134. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.js +26 -14
  135. package/lib/components/Support/components/ViewSupport/types.d.ts +6 -0
  136. package/lib/components/Support/components/ViewSupport/types.js +1 -0
  137. package/lib/components/Support/components/ViewSupport/viewSupport.d.ts +2 -9
  138. package/lib/components/Support/components/ViewSupport/viewSupport.js +7 -3
  139. package/lib/components/Table/components/Pagination/pagination.stories.d.ts +28 -5
  140. package/lib/components/Table/components/Pagination/pagination.stories.js +11 -7
  141. package/lib/components/common/Accordion/accordion.stories.d.ts +6 -3
  142. package/lib/components/common/Accordion/accordion.stories.js +2 -1
  143. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.d.ts +10 -7
  144. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.js +42 -43
  145. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.d.ts +9 -6
  146. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.js +13 -15
  147. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.d.ts +19 -2
  148. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.js +2 -2
  149. package/lib/components/common/Card/card.stories.d.ts +6 -3
  150. package/lib/components/common/Card/card.stories.js +2 -1
  151. package/lib/components/common/Code/code.stories.d.ts +5 -3
  152. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.d.ts +11 -3
  153. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.js +2 -1
  154. package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.d.ts +2 -0
  155. package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.js +6 -0
  156. package/lib/components/common/LoginDialog/constants.d.ts +6 -0
  157. package/lib/components/common/LoginDialog/constants.js +21 -0
  158. package/lib/components/common/LoginDialog/loginDialog.d.ts +2 -0
  159. package/lib/components/common/LoginDialog/loginDialog.js +27 -0
  160. package/lib/components/common/LoginDialog/loginDialog.styles.d.ts +3 -0
  161. package/lib/components/common/LoginDialog/loginDialog.styles.js +50 -0
  162. package/lib/components/common/LoginDialog/types.d.ts +4 -0
  163. package/lib/components/common/LoginDialog/types.js +1 -0
  164. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.d.ts +13 -5
  165. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.js +6 -6
  166. package/lib/components/common/Socials/socials.stories.d.ts +11 -3
  167. package/lib/components/common/Socials/socials.stories.js +2 -1
  168. package/lib/components/common/StaticImage/staticImage.stories.d.ts +22 -5
  169. package/lib/components/common/StaticImage/staticImage.stories.js +8 -8
  170. package/lib/components/common/StatusIcon/statusIcon.stories.d.ts +19 -5
  171. package/lib/components/common/StatusIcon/statusIcon.stories.js +7 -7
  172. package/lib/components/common/Tag/tag.stories.d.ts +15 -5
  173. package/lib/components/common/Tag/tag.stories.js +7 -5
  174. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.d.ts +18 -5
  175. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.js +19 -19
  176. package/lib/config/entities.d.ts +1 -0
  177. package/lib/providers/loginGuard/common/types.d.ts +18 -0
  178. package/lib/providers/loginGuard/common/types.js +1 -0
  179. package/lib/providers/loginGuard/context.d.ts +6 -0
  180. package/lib/providers/loginGuard/context.js +10 -0
  181. package/lib/providers/loginGuard/hook.d.ts +9 -0
  182. package/lib/providers/loginGuard/hook.js +12 -0
  183. package/lib/providers/loginGuard/provider.d.ts +11 -0
  184. package/lib/providers/loginGuard/provider.js +55 -0
  185. package/lib/styles/common/mui/typography.d.ts +1 -0
  186. package/lib/styles/common/mui/typography.js +8 -0
  187. package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -0
  188. package/lib/views/DataDictionaryView/dataDictionaryView.js +5 -0
  189. package/package.json +13 -13
  190. package/src/components/DataDictionary/components/Entities/constants.ts +8 -0
  191. package/src/components/DataDictionary/components/Entities/entities.tsx +15 -0
  192. package/src/components/DataDictionary/components/Entities/types.ts +5 -0
  193. package/src/components/DataDictionary/components/Entity/constants.ts +7 -0
  194. package/src/components/DataDictionary/components/Entity/entity.tsx +28 -0
  195. package/src/components/DataDictionary/components/Entity/types.ts +5 -0
  196. package/src/components/DataDictionary/components/Table/columns/columnDef.ts +47 -0
  197. package/src/components/DataDictionary/components/Table/columns/columnIdentifier.ts +5 -0
  198. package/src/components/DataDictionary/components/Table/columns/types.ts +3 -0
  199. package/src/components/DataDictionary/components/Table/components/BasicCell/basicCell.tsx +8 -0
  200. package/src/components/DataDictionary/components/Table/components/BasicCell/types.ts +5 -0
  201. package/src/components/DataDictionary/components/Table/hook.ts +13 -0
  202. package/src/components/DataDictionary/components/Table/options/core/constants.ts +12 -0
  203. package/src/components/DataDictionary/components/Table/options/hook.ts +14 -0
  204. package/src/components/DataDictionary/components/Table/options/sorting/constants.ts +9 -0
  205. package/src/components/DataDictionary/components/Table/table.styles.ts +6 -0
  206. package/src/components/DataDictionary/components/Table/table.tsx +35 -0
  207. package/src/components/DataDictionary/components/Table/types.ts +6 -0
  208. package/src/components/DataDictionary/dataDictionary.styles.ts +8 -0
  209. package/src/components/DataDictionary/dataDictionary.tsx +16 -0
  210. package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +9 -0
  211. package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +5 -0
  212. package/src/components/Detail/detail.stories.tsx +41 -36
  213. package/src/components/Export/components/ExportForm/components/ExportButton/exportButton.tsx +8 -1
  214. package/src/components/Export/components/ExportMethod/exportMethod.stories.tsx +13 -13
  215. package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.tsx +11 -3
  216. package/src/components/Filter/components/Filter/filter.stories.tsx +29 -28
  217. package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +14 -12
  218. package/src/components/Filter/components/FilterMenu/filterMenu.stories.tsx +111 -108
  219. package/src/components/Filter/components/FilterTag/filterTag.stories.tsx +12 -11
  220. package/src/components/Filter/components/FilterTags/filterTags.stories.tsx +44 -43
  221. package/src/components/Index/components/AzulFileDownload/azulFileDownload.stories.tsx +13 -10
  222. package/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx +12 -5
  223. package/src/components/Index/components/Hero/components/Summaries/summaries.stories.tsx +15 -15
  224. package/src/components/Index/components/Hero/hero.stories.tsx +12 -8
  225. package/src/components/Index/components/NTagCell/nTagCell.stories.tsx +12 -12
  226. package/src/components/Index/index.stories.tsx +2 -1
  227. package/src/components/Layout/components/BackPage/backPageView.stories.tsx +42 -36
  228. package/src/components/Layout/components/Footer/footer.stories.tsx +6 -4
  229. package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.tsx +1 -1
  230. package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.tsx +16 -15
  231. package/src/components/Layout/components/Header/components/Content/components/Navigation/constants.ts +1 -0
  232. package/src/components/Layout/components/Header/components/Content/components/Navigation/navigation.tsx +26 -18
  233. package/src/components/Layout/components/Header/header.stories.tsx +1 -1
  234. package/src/components/Layout/components/Header/header.tsx +6 -1
  235. package/src/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.tsx +10 -10
  236. package/src/components/Layout/components/Sidebar/sidebar.stories.tsx +2 -0
  237. package/src/components/Links/links.stories.tsx +18 -18
  238. package/src/components/Loading/loading.stories.tsx +12 -10
  239. package/src/components/Login/components/Button/types.ts +1 -1
  240. package/src/components/Login/components/Buttons/buttons.tsx +22 -0
  241. package/src/components/Login/components/Buttons/types.ts +9 -0
  242. package/src/components/Login/components/Section/components/Consent/consent.styles.ts +15 -0
  243. package/src/components/Login/components/Section/components/Consent/consent.tsx +30 -0
  244. package/src/components/Login/components/Section/components/Consent/types.ts +10 -0
  245. package/src/components/Login/components/Section/components/Warning/warning.tsx +24 -0
  246. package/src/components/Login/hooks/useUserConsent/types.ts +11 -0
  247. package/src/components/Login/hooks/useUserConsent/useUserConsent.ts +32 -0
  248. package/src/components/Login/hooks/useUserLogin/types.ts +8 -0
  249. package/src/components/Login/hooks/useUserLogin/useUserLogin.ts +29 -0
  250. package/src/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.tsx +24 -25
  251. package/src/components/Project/components/Contacts/contacts.stories.tsx +22 -22
  252. package/src/components/Project/components/Contributors/contributors.stories.tsx +31 -31
  253. package/src/components/Project/components/DataCurators/dataCurators.stories.tsx +11 -11
  254. package/src/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.tsx +7 -8
  255. package/src/components/Project/components/Description/description.stories.tsx +11 -11
  256. package/src/components/Project/components/Details/details.stories.tsx +11 -11
  257. package/src/components/Project/components/Publications/publications.stories.tsx +23 -23
  258. package/src/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.tsx +22 -22
  259. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.ts +10 -9
  260. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.tsx +44 -15
  261. package/src/components/Support/components/ViewSupport/types.ts +9 -0
  262. package/src/components/Support/components/ViewSupport/viewSupport.tsx +6 -10
  263. package/src/components/Table/components/Pagination/pagination.stories.tsx +15 -11
  264. package/src/components/common/Accordion/accordion.stories.tsx +4 -2
  265. package/src/components/common/Breadcrumbs/breadcrumbs.stories.tsx +46 -47
  266. package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx +17 -20
  267. package/src/components/common/Button/components/HelpIconButton/helpIconButton.stories.tsx +4 -4
  268. package/src/components/common/Card/card.stories.tsx +4 -2
  269. package/src/components/common/Code/code.stories.tsx +1 -1
  270. package/src/components/common/CopyToClipboard/copyToClipboard.stories.tsx +4 -2
  271. package/src/components/common/CustomIcon/components/CloseIcon/closeIcon.tsx +17 -0
  272. package/src/components/common/LoginDialog/constants.ts +33 -0
  273. package/src/components/common/LoginDialog/loginDialog.styles.ts +51 -0
  274. package/src/components/common/LoginDialog/loginDialog.tsx +56 -0
  275. package/src/components/common/LoginDialog/types.ts +4 -0
  276. package/src/components/common/Section/components/SectionTitle/sectionTitle.stories.tsx +10 -10
  277. package/src/components/common/Socials/socials.stories.tsx +4 -2
  278. package/src/components/common/StaticImage/staticImage.stories.tsx +12 -12
  279. package/src/components/common/StatusIcon/statusIcon.stories.tsx +11 -11
  280. package/src/components/common/Tag/tag.stories.tsx +11 -9
  281. package/src/components/common/ToggleButtonGroup/toggleButtonGroup.stories.tsx +23 -23
  282. package/src/config/entities.ts +1 -0
  283. package/src/providers/loginGuard/common/types.ts +21 -0
  284. package/src/providers/loginGuard/context.ts +12 -0
  285. package/src/providers/loginGuard/hook.ts +14 -0
  286. package/src/providers/loginGuard/provider.tsx +76 -0
  287. package/src/styles/common/mui/typography.ts +9 -0
  288. package/src/views/DataDictionaryView/dataDictionaryView.tsx +9 -0
  289. package/tests/provider.test.tsx +191 -0
@@ -7,7 +7,7 @@ import React, {
7
7
  useState,
8
8
  } from "react";
9
9
  import { FileRejection } from "react-dropzone";
10
- import validate from "validate.js";
10
+ import { ValidationError } from "yup";
11
11
  import { TEXT_BODY_400 } from "../../../../../../theme/common/typography";
12
12
  import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
13
13
  import { Input } from "../../../../../common/Form/components/Input/input";
@@ -21,18 +21,17 @@ import {
21
21
  import { SupportRequest } from "../../supportRequest";
22
22
  import Dropzone from "../Dropzone/dropzone";
23
23
  import {
24
- CONSTRAINTS,
25
24
  DEFAULT_FORM_STATE,
26
25
  DRAGGING_STYLE,
27
26
  MAX_ATTACHMENT_SIZE,
28
27
  OPTIONS,
28
+ VALIDATION_SCHEMA,
29
29
  } from "./common/constants";
30
30
  import {
31
31
  FORM_CONTROL_LABEL,
32
32
  FORM_CONTROL_NAME,
33
33
  FormState,
34
34
  RequestValue,
35
- ValidateResponse,
36
35
  } from "./common/entities";
37
36
  import { createSupportRequest, uploadAttachment } from "./common/utils";
38
37
  import { Section, Title } from "./supportRequestForm.styles";
@@ -47,7 +46,23 @@ export const SupportRequestForm = ({
47
46
  supportRequest,
48
47
  }: SupportRequestFormProps): JSX.Element => {
49
48
  const [formState, setFormState] = useState<FormState>(DEFAULT_FORM_STATE);
50
- const errors = validate(buildSupportRequest(formState), CONSTRAINTS); // Determine error state of form
49
+ const [errorFields, setErrorFields] = useState<Set<string>>();
50
+
51
+ // Validate form state when it changes.
52
+ React.useEffect(() => {
53
+ VALIDATION_SCHEMA.validate(buildSupportRequest(formState), {
54
+ abortEarly: false,
55
+ })
56
+ .then(() => setErrorFields(undefined))
57
+ .catch((aggregateError: ValidationError) => {
58
+ const fields = new Set<string>();
59
+ for (const error of aggregateError.inner) {
60
+ if (error.path) fields.add(error.path);
61
+ }
62
+ setErrorFields(fields);
63
+ });
64
+ }, [formState]);
65
+
51
66
  const { FIELD_ID, requestURL, uploadURL } = supportRequest;
52
67
 
53
68
  // Delete attachment.
@@ -177,7 +192,11 @@ export const SupportRequestForm = ({
177
192
  </Section>
178
193
  <Section>
179
194
  <Input
180
- error={isFieldError(formState, errors, FORM_CONTROL_NAME.NAME)}
195
+ error={isFieldError(
196
+ formState,
197
+ errorFields,
198
+ FORM_CONTROL_NAME.NAME
199
+ )}
181
200
  isFilled={Boolean(formState[FORM_CONTROL_NAME.NAME])}
182
201
  label={FORM_CONTROL_LABEL.NAME}
183
202
  name={FORM_CONTROL_NAME.NAME}
@@ -185,7 +204,11 @@ export const SupportRequestForm = ({
185
204
  onChange={onInputChange}
186
205
  />
187
206
  <Input
188
- error={isFieldError(formState, errors, FORM_CONTROL_NAME.EMAIL)}
207
+ error={isFieldError(
208
+ formState,
209
+ errorFields,
210
+ FORM_CONTROL_NAME.EMAIL
211
+ )}
189
212
  isFilled={Boolean(formState[FORM_CONTROL_NAME.EMAIL])}
190
213
  label={FORM_CONTROL_LABEL.EMAIL}
191
214
  name={FORM_CONTROL_NAME.EMAIL}
@@ -194,7 +217,11 @@ export const SupportRequestForm = ({
194
217
  />
195
218
  <Select
196
219
  displayEmpty={true}
197
- error={isFieldError(formState, errors, FORM_CONTROL_NAME.TYPE)}
220
+ error={isFieldError(
221
+ formState,
222
+ errorFields,
223
+ FORM_CONTROL_NAME.TYPE
224
+ )}
198
225
  isFilled={Boolean(formState[FORM_CONTROL_NAME.TYPE])}
199
226
  label={FORM_CONTROL_LABEL.TYPE}
200
227
  name={FORM_CONTROL_NAME.TYPE}
@@ -211,7 +238,11 @@ export const SupportRequestForm = ({
211
238
  ))}
212
239
  </Select>
213
240
  <Input
214
- error={isFieldError(formState, errors, FORM_CONTROL_NAME.SUBJECT)}
241
+ error={isFieldError(
242
+ formState,
243
+ errorFields,
244
+ FORM_CONTROL_NAME.SUBJECT
245
+ )}
215
246
  isFilled={Boolean(formState[FORM_CONTROL_NAME.SUBJECT])}
216
247
  label={FORM_CONTROL_LABEL.SUBJECT}
217
248
  name={FORM_CONTROL_NAME.SUBJECT}
@@ -221,7 +252,7 @@ export const SupportRequestForm = ({
221
252
  <Input
222
253
  error={isFieldError(
223
254
  formState,
224
- errors,
255
+ errorFields,
225
256
  FORM_CONTROL_NAME.DESCRIPTION
226
257
  )}
227
258
  isFilled={Boolean(formState[FORM_CONTROL_NAME.DESCRIPTION])}
@@ -244,7 +275,7 @@ export const SupportRequestForm = ({
244
275
  <Section>
245
276
  <SectionActions>
246
277
  <ButtonPrimary
247
- disabled={Boolean(errors) || formState.submitting}
278
+ disabled={Boolean(errorFields) || formState.submitting}
248
279
  fullWidth
249
280
  onClick={onSupportRequestSubmitted}
250
281
  id="button-support-request"
@@ -280,18 +311,16 @@ function buildSupportRequest(formState: FormState): RequestValue {
280
311
  /**
281
312
  * Returns true if the given field is touched and has an error.
282
313
  * @param formState - Form state.
283
- * @param error - Validate.js error object.
314
+ * @param errorFields - Set of names of fields that have errors.
284
315
  * @param fieldName - Field name.
285
316
  * @returns true if the given field has an error.
286
317
  */
287
318
  function isFieldError(
288
319
  formState: FormState,
289
- error: ValidateResponse | undefined,
320
+ errorFields: Set<string> | undefined,
290
321
  fieldName: FORM_CONTROL_NAME
291
322
  ): boolean {
292
- const hasError = Boolean(error?.[fieldName]);
293
- const isTouched = Boolean(formState.touched[fieldName]);
294
- return isTouched && hasError;
323
+ return Boolean(formState.touched[fieldName] && errorFields?.has(fieldName));
295
324
  }
296
325
 
297
326
  /**
@@ -0,0 +1,9 @@
1
+ import { AnchorHTMLAttributes, ElementType } from "react";
2
+ import { BaseComponentProps } from "../../../types";
3
+
4
+ export interface ViewSupportProps
5
+ extends AnchorHTMLAttributes<HTMLAnchorElement>,
6
+ BaseComponentProps {
7
+ Icon?: ElementType;
8
+ url: string;
9
+ }
@@ -1,6 +1,7 @@
1
- import React, { ElementType } from "react";
1
+ import React from "react";
2
2
  import { ContactSupportIcon } from "../../../common/CustomIcon/components/ContactSupportIcon/contactSupportIcon";
3
- import { ANCHOR_TARGET } from "../../../Links/common/entities";
3
+ import { ANCHOR_TARGET, REL_ATTRIBUTE } from "../../../Links/common/entities";
4
+ import { ViewSupportProps } from "./types";
4
5
  import { Fab } from "./viewSupport.styles";
5
6
 
6
7
  /**
@@ -8,21 +9,16 @@ import { Fab } from "./viewSupport.styles";
8
9
  * Navigates to support URL provided.
9
10
  */
10
11
 
11
- export interface ViewSupportProps {
12
- className?: string;
13
- Icon?: ElementType;
14
- target?: ANCHOR_TARGET;
15
- url: string;
16
- }
17
-
18
12
  export const ViewSupport = ({
19
13
  className,
20
14
  Icon = ContactSupportIcon,
15
+ rel = REL_ATTRIBUTE.NO_OPENER_NO_REFERRER,
21
16
  target = ANCHOR_TARGET.BLANK,
22
17
  url,
18
+ ...props /* AnchorHTMLAttributes<HTMLAnchorElement> */
23
19
  }: ViewSupportProps): JSX.Element => {
24
20
  return (
25
- <Fab className={className} href={url} target={target}>
21
+ <Fab className={className} href={url} rel={rel} target={target} {...props}>
26
22
  <Icon fontSize="inherit" />
27
23
  </Fab>
28
24
  );
@@ -1,8 +1,7 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { Pagination } from "./pagination";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  argTypes: {
7
6
  canNextPage: { control: "boolean" },
8
7
  canPreviousPage: { control: "boolean" },
@@ -13,14 +12,19 @@ export default {
13
12
  },
14
13
  component: Pagination,
15
14
  title: "Components/Table",
16
- } as ComponentMeta<typeof Pagination>;
15
+ } satisfies Meta<typeof Pagination>;
17
16
 
18
- const PaginationTemplate: ComponentStory<typeof Pagination> = (args) => (
19
- <Pagination {...args} />
20
- );
17
+ export default meta;
21
18
 
22
- export const PaginationStory = PaginationTemplate.bind({});
23
- PaginationStory.args = {
24
- currentPage: 1,
25
- totalPage: 25,
19
+ type Story = StoryObj<typeof meta>;
20
+
21
+ export const PaginationStory: Story = {
22
+ args: {
23
+ canNextPage: true,
24
+ canPreviousPage: false,
25
+ currentPage: 1,
26
+ onNextPage: () => {},
27
+ onPreviousPage: () => {},
28
+ totalPage: 25,
29
+ },
26
30
  };
@@ -3,10 +3,12 @@ import { Meta, StoryObj } from "@storybook/react";
3
3
  import React from "react";
4
4
  import { Accordion } from "./accordion";
5
5
 
6
- export default {
6
+ const meta = {
7
7
  component: Accordion,
8
8
  title: "Components/Common/Accordion",
9
- } as Meta<typeof Accordion>;
9
+ } satisfies Meta<typeof Accordion>;
10
+
11
+ export default meta;
10
12
 
11
13
  type Story = StoryObj<typeof Accordion>;
12
14
 
@@ -1,58 +1,57 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { Breadcrumbs } from "./breadcrumbs";
4
3
 
5
- export default {
6
- argTypes: {
7
- children: { control: { disabled: true } },
8
- },
4
+ const meta = {
9
5
  component: Breadcrumbs,
10
6
  title: "Components/Common/BreadCrumbs",
11
- } as ComponentMeta<typeof Breadcrumbs>;
7
+ } satisfies Meta<typeof Breadcrumbs>;
8
+
9
+ export default meta;
12
10
 
13
- const BreadcrumbTemplate: ComponentStory<typeof Breadcrumbs> = (args) => (
14
- <Breadcrumbs {...args} />
15
- );
11
+ type Story = StoryObj<typeof meta>;
16
12
 
17
- export const BreadcrumbDefaultStory = BreadcrumbTemplate.bind({});
18
- BreadcrumbDefaultStory.args = {
19
- breadcrumbs: [
20
- {
21
- path: "#",
22
- text: "Home",
23
- },
24
- {
25
- path: "#",
26
- text: "Data Explorer",
27
- },
28
- ],
13
+ export const BreadcrumbDefaultStory: Story = {
14
+ args: {
15
+ breadcrumbs: [
16
+ {
17
+ path: "#",
18
+ text: "Home",
19
+ },
20
+ {
21
+ path: "#",
22
+ text: "Data Explorer",
23
+ },
24
+ ],
25
+ },
29
26
  };
30
27
 
31
- export const BreadcrumbCustomSeparatorStory = BreadcrumbTemplate.bind({});
32
- BreadcrumbCustomSeparatorStory.args = {
33
- Separator: " | ",
34
- breadcrumbs: [
35
- {
36
- path: "#",
37
- text: "Home",
38
- },
39
- {
40
- path: "#",
41
- text: "Data Explorer",
42
- },
43
- ],
28
+ export const BreadcrumbCustomSeparatorStory: Story = {
29
+ args: {
30
+ Separator: " | ",
31
+ breadcrumbs: [
32
+ {
33
+ path: "#",
34
+ text: "Home",
35
+ },
36
+ {
37
+ path: "#",
38
+ text: "Data Explorer",
39
+ },
40
+ ],
41
+ },
44
42
  };
45
43
 
46
- export const BreadcrumbWithLongerTitleStory = BreadcrumbTemplate.bind({});
47
- BreadcrumbWithLongerTitleStory.args = {
48
- breadcrumbs: [
49
- {
50
- path: "#",
51
- text: "Explore",
52
- },
53
- {
54
- path: "#",
55
- text: "A Single-Cell Transcriptomic Map of the Human and Mouse Pancreas Reveals Inter- and Intra-cell Population Structure",
56
- },
57
- ],
44
+ export const BreadcrumbWithLongerTitleStory: Story = {
45
+ args: {
46
+ breadcrumbs: [
47
+ {
48
+ path: "#",
49
+ text: "Explore",
50
+ },
51
+ {
52
+ path: "#",
53
+ text: "A Single-Cell Transcriptomic Map of the Human and Mouse Pancreas Reveals Inter- and Intra-cell Population Structure",
54
+ },
55
+ ],
56
+ },
58
57
  };
@@ -1,19 +1,15 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { ANCHOR_TARGET } from "../../../../Links/common/entities";
4
3
  import { CallToAction, CallToActionButton } from "./callToActionButton";
5
4
 
6
- export default {
7
- argTypes: {
8
- children: { control: { disabled: true } },
9
- },
5
+ const meta = {
10
6
  component: CallToActionButton,
11
7
  title: "Components/Common/CallToActionButton",
12
- } as ComponentMeta<typeof CallToActionButton>;
8
+ } satisfies Meta<typeof CallToActionButton>;
9
+
10
+ export default meta;
13
11
 
14
- const CallToActionButtonTemplate: ComponentStory<typeof CallToActionButton> = (
15
- args
16
- ) => <CallToActionButton {...args} />;
12
+ type Story = StoryObj<typeof meta>;
17
13
 
18
14
  const callToAction: CallToAction = {
19
15
  label: "Click here",
@@ -21,16 +17,17 @@ const callToAction: CallToAction = {
21
17
  url: "https://www.google.com",
22
18
  };
23
19
 
24
- export const CallToActionButtonStory = CallToActionButtonTemplate.bind({});
25
- CallToActionButtonStory.args = {
26
- callToAction,
27
- className: "call-to-action-button",
28
- disabled: false,
20
+ export const CallToActionButtonStory: Story = {
21
+ args: {
22
+ callToAction,
23
+ className: "call-to-action-button",
24
+ disabled: false,
25
+ },
29
26
  };
30
27
 
31
- export const CallToActionButtonWithCustomComponentStory =
32
- CallToActionButtonTemplate.bind({});
33
- CallToActionButtonWithCustomComponentStory.args = {
34
- ButtonElType: "a",
35
- callToAction,
28
+ export const CallToActionButtonWithCustomComponentStory: Story = {
29
+ args: {
30
+ ButtonElType: "a",
31
+ callToAction,
32
+ },
36
33
  };
@@ -2,15 +2,15 @@ import { Meta, StoryObj } from "@storybook/react";
2
2
  import { ANCHOR_TARGET } from "../../../../Links/common/entities";
3
3
  import { HelpIconButton } from "./helpIconButton";
4
4
 
5
- const meta: Meta<typeof HelpIconButton> = {
5
+ const meta = {
6
6
  argTypes: {
7
- size: { control: "select" },
8
- target: { control: "select" },
7
+ size: { control: "select", options: ["small", "medium", "large"] },
8
+ target: { control: "select", options: Object.values(ANCHOR_TARGET) },
9
9
  url: { control: "text" },
10
10
  },
11
11
  component: HelpIconButton,
12
12
  title: "Components/Common/HelpIconButton",
13
- };
13
+ } satisfies Meta<typeof HelpIconButton>;
14
14
 
15
15
  export default meta;
16
16
 
@@ -2,10 +2,12 @@ import { Meta, StoryObj } from "@storybook/react";
2
2
  import logo from "../../../images/logo.svg";
3
3
  import { Card } from "./card";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  component: Card,
7
7
  title: "Components/Common/Card",
8
- } as Meta<typeof Card>;
8
+ } satisfies Meta<typeof Card>;
9
+
10
+ export default meta;
9
11
 
10
12
  type Story = StoryObj<typeof Card>;
11
13
 
@@ -4,7 +4,7 @@ import { Code } from "./code";
4
4
  const meta = {
5
5
  component: Code,
6
6
  title: "Components/Common/Code",
7
- } as Meta<typeof Code>;
7
+ } satisfies Meta<typeof Code>;
8
8
 
9
9
  export default meta;
10
10
 
@@ -1,7 +1,7 @@
1
1
  import { Meta, StoryObj } from "@storybook/react";
2
2
  import { CopyToClipboard } from "./copyToClipboard";
3
3
 
4
- export default {
4
+ const meta = {
5
5
  argTypes: {
6
6
  copyStr: {
7
7
  description: "String to be copied",
@@ -9,7 +9,9 @@ export default {
9
9
  },
10
10
  component: CopyToClipboard,
11
11
  title: "Components/Common/CopyToClipboard",
12
- } as Meta<typeof CopyToClipboard>;
12
+ } satisfies Meta<typeof CopyToClipboard>;
13
+
14
+ export default meta;
13
15
 
14
16
  type Story = StoryObj<typeof CopyToClipboard>;
15
17
 
@@ -0,0 +1,17 @@
1
+ import { SvgIcon, SvgIconProps } from "@mui/material";
2
+ import React from "react";
3
+
4
+ export const CloseIcon = ({
5
+ fontSize = "xsmall",
6
+ viewBox = "0 0 18 18",
7
+ ...props /* Spread props to allow for Mui SvgIconProps specific prop overrides e.g. "htmlColor". */
8
+ }: SvgIconProps): JSX.Element => {
9
+ return (
10
+ <SvgIcon fontSize={fontSize} viewBox={viewBox} {...props}>
11
+ <path
12
+ d="M8.99994 10.1061L5.38104 13.725C5.23104 13.875 5.04984 13.947 4.83744 13.941C4.62504 13.9344 4.44384 13.8561 4.29384 13.7061C4.14384 13.5561 4.06884 13.3719 4.06884 13.1535C4.06884 12.9345 4.14384 12.75 4.29384 12.6L7.89384 9.00005L4.27494 5.38115C4.12494 5.23115 4.05294 5.04695 4.05894 4.82855C4.06554 4.60955 4.14384 4.42505 4.29384 4.27505C4.44384 4.12505 4.62804 4.05005 4.84644 4.05005C5.06544 4.05005 5.24994 4.12505 5.39994 4.27505L8.99994 7.89395L12.6188 4.27505C12.7688 4.12505 12.953 4.05005 13.1714 4.05005C13.3904 4.05005 13.5749 4.12505 13.7249 4.27505C13.8749 4.42505 13.9499 4.60955 13.9499 4.82855C13.9499 5.04695 13.8749 5.23115 13.7249 5.38115L10.106 9.00005L13.7249 12.6189C13.8749 12.7689 13.9499 12.9501 13.9499 13.1625C13.9499 13.3749 13.8749 13.5561 13.7249 13.7061C13.5749 13.8561 13.3904 13.9311 13.1714 13.9311C12.953 13.9311 12.7688 13.8561 12.6188 13.7061L8.99994 10.1061Z"
13
+ fill="currentColor"
14
+ />
15
+ </SvgIcon>
16
+ );
17
+ };
@@ -0,0 +1,33 @@
1
+ import {
2
+ DialogContentTextProps,
3
+ DialogProps,
4
+ DialogTitleProps,
5
+ IconButtonProps,
6
+ IconProps,
7
+ } from "@mui/material";
8
+ import { FONT_SIZE } from "../../../styles/common/mui/icon";
9
+ import { COLOR, VARIANT } from "../../../styles/common/mui/typography";
10
+
11
+ export const DIALOG_CONTENT_TEXT_PROPS: DialogContentTextProps = {
12
+ color: COLOR.INK_LIGHT,
13
+ component: "div",
14
+ variant: VARIANT.TEXT_BODY_400,
15
+ };
16
+
17
+ export const DIALOG_PROPS: Partial<DialogProps> = {
18
+ PaperProps: { elevation: 0 },
19
+ };
20
+
21
+ export const DIALOG_TITLE_PROPS: DialogTitleProps = {
22
+ variant: VARIANT.TEXT_HEADING_SMALL,
23
+ };
24
+
25
+ export const ICON_BUTTON_PROPS: IconButtonProps = {
26
+ color: "inkLight",
27
+ edge: "end",
28
+ size: "xsmall",
29
+ };
30
+
31
+ export const ICON_PROPS: Pick<IconProps, "fontSize"> = {
32
+ fontSize: FONT_SIZE.SMALL,
33
+ };
@@ -0,0 +1,51 @@
1
+ import styled from "@emotion/styled";
2
+ import { Dialog } from "@mui/material";
3
+ import { inkMain } from "../../../styles/common/mixins/colors";
4
+ import { alpha80 } from "../../../theme/common/palette";
5
+
6
+ export const StyledDialog = styled(Dialog)`
7
+ &.MuiDialog-root {
8
+ .MuiBackdrop-root {
9
+ background-color: ${inkMain}${alpha80};
10
+ }
11
+
12
+ .MuiDialog-paper {
13
+ border-radius: 8px;
14
+ max-width: 400px;
15
+ padding: 32px;
16
+ position: relative; /* positions close icon */
17
+
18
+ .MuiDialogTitle-root,
19
+ .MuiDialogContent-root,
20
+ .MuiDialogActions-root {
21
+ padding: 0;
22
+ }
23
+
24
+ .MuiDialogTitle-root {
25
+ font-size: 20px;
26
+
27
+ .MuiIconButton-root {
28
+ position: absolute;
29
+ right: 12px;
30
+ top: 12px;
31
+ }
32
+ }
33
+
34
+ .MuiDialogContent-root {
35
+ .MuiDialogContentText-root {
36
+ margin: 8px 0;
37
+ }
38
+
39
+ .MuiGrid2-root {
40
+ margin: 24px 0;
41
+ }
42
+ }
43
+
44
+ .MuiDialogActions-root {
45
+ display: flex;
46
+ flex-direction: column;
47
+ gap: 16px 0;
48
+ }
49
+ }
50
+ }
51
+ `;
@@ -0,0 +1,56 @@
1
+ import {
2
+ DialogActions,
3
+ DialogContent,
4
+ DialogContentText,
5
+ DialogTitle,
6
+ IconButton,
7
+ } from "@mui/material";
8
+ import React from "react";
9
+ import { useAuthenticationConfig } from "../../../hooks/authentication/config/useAuthenticationConfig";
10
+ import { Buttons } from "../../Login/components/Buttons/buttons";
11
+ import { Consent } from "../../Login/components/Section/components/Consent/consent";
12
+ import { Warning } from "../../Login/components/Section/components/Warning/warning";
13
+ import { useUserLogin } from "../../Login/hooks/useUserLogin/useUserLogin";
14
+ import { CloseIcon } from "../CustomIcon/components/CloseIcon/closeIcon";
15
+ import {
16
+ DIALOG_CONTENT_TEXT_PROPS,
17
+ DIALOG_PROPS,
18
+ DIALOG_TITLE_PROPS,
19
+ ICON_BUTTON_PROPS,
20
+ ICON_PROPS,
21
+ } from "./constants";
22
+ import { StyledDialog } from "./loginDialog.styles";
23
+ import { LoginDialogProps } from "./types";
24
+
25
+ export const LoginDialog = ({
26
+ onClose,
27
+ open,
28
+ }: LoginDialogProps): JSX.Element | null => {
29
+ const authConfig = useAuthenticationConfig();
30
+ const { consentState, handleConsent, handleLogin } = useUserLogin();
31
+
32
+ if (!authConfig) return null;
33
+
34
+ return (
35
+ <StyledDialog {...DIALOG_PROPS} onClose={onClose} open={open}>
36
+ <DialogTitle {...DIALOG_TITLE_PROPS}>
37
+ <div>Sign In Required</div>
38
+ <IconButton {...ICON_BUTTON_PROPS} onClick={onClose}>
39
+ <CloseIcon {...ICON_PROPS} />
40
+ </IconButton>
41
+ </DialogTitle>
42
+ <DialogContent>
43
+ <DialogContentText {...DIALOG_CONTENT_TEXT_PROPS}>
44
+ Please sign in to proceed with this action.
45
+ </DialogContentText>
46
+ <Consent handleConsent={handleConsent} {...consentState}>
47
+ {authConfig.termsOfService}
48
+ </Consent>
49
+ </DialogContent>
50
+ <DialogActions disableSpacing>
51
+ <Buttons handleLogin={handleLogin} providers={authConfig.providers} />
52
+ </DialogActions>
53
+ <Warning>{authConfig.warning}</Warning>
54
+ </StyledDialog>
55
+ );
56
+ };
@@ -0,0 +1,4 @@
1
+ export interface LoginDialogProps {
2
+ onClose: () => void;
3
+ open: boolean;
4
+ }
@@ -1,20 +1,20 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { SectionTitle } from "./sectionTitle";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  argTypes: {
7
6
  title: { control: "text" },
8
7
  },
9
8
  component: SectionTitle,
10
9
  title: "Components/SectionContent/Title",
11
- } as ComponentMeta<typeof SectionTitle>;
10
+ } satisfies Meta<typeof SectionTitle>;
12
11
 
13
- const SectionTitleTemplate: ComponentStory<typeof SectionTitle> = (args) => (
14
- <SectionTitle {...args} />
15
- );
12
+ export default meta;
16
13
 
17
- export const SectionTitleStory = SectionTitleTemplate.bind({});
18
- SectionTitleStory.args = {
19
- title: "Analysis Portals",
14
+ type Story = StoryObj<typeof meta>;
15
+
16
+ export const SectionTitleStory: Story = {
17
+ args: {
18
+ title: "Analysis Portals",
19
+ },
20
20
  };