@openneuro/app 4.33.4 → 4.34.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 (302) hide show
  1. package/package.json +4 -3
  2. package/src/client.jsx +2 -1
  3. package/src/scripts/authentication/signOut.ts +1 -1
  4. package/src/scripts/common/containers/footer.tsx +1 -1
  5. package/src/scripts/common/containers/header.tsx +3 -2
  6. package/src/scripts/common/content/affiliate-content.jsx +72 -0
  7. package/src/scripts/common/content/assets/affiliates/bids.jpg +0 -0
  8. package/src/scripts/common/content/assets/affiliates/datalad.jpg +0 -0
  9. package/src/scripts/common/content/assets/affiliates/nih-bi-logo.png +0 -0
  10. package/src/scripts/common/content/assets/front-page/brand_mark.png +0 -0
  11. package/src/scripts/common/content/assets/front-page/cube-get.png +0 -0
  12. package/src/scripts/common/content/assets/front-page/cube-share.png +0 -0
  13. package/src/scripts/common/content/assets/front-page/cube-use.png +0 -0
  14. package/src/scripts/common/content/assets/front-page/ljaf.png +0 -0
  15. package/src/scripts/common/content/assets/front-page/logo_app.png +0 -0
  16. package/src/scripts/common/content/assets/front-page/logo_cube.png +0 -0
  17. package/src/scripts/common/content/assets/front-page/logo_data.png +0 -0
  18. package/src/scripts/common/content/assets/front-page/logo_users.png +0 -0
  19. package/src/scripts/common/content/assets/front-page/novo-logo.png +0 -0
  20. package/src/scripts/common/content/assets/front-page/nru-logo.png +0 -0
  21. package/src/scripts/common/content/assets/front-page/nsf.png +0 -0
  22. package/src/scripts/common/content/assets/front-page/sqm-logo.png +0 -0
  23. package/src/scripts/common/content/assets/front-page/squishymedia.png +0 -0
  24. package/src/scripts/common/content/assets/front-page/stanford.png +0 -0
  25. package/src/scripts/common/content/assets/modality-cubes/brain-initiative.jpg +0 -0
  26. package/src/scripts/common/content/assets/modality-cubes/eeg.jpg +0 -0
  27. package/src/scripts/common/content/assets/modality-cubes/ieeg.jpg +0 -0
  28. package/src/scripts/common/content/assets/modality-cubes/meg.jpg +0 -0
  29. package/src/scripts/common/content/assets/modality-cubes/mri.jpg +0 -0
  30. package/src/scripts/common/content/assets/modality-cubes/nih_cube.jpg +0 -0
  31. package/src/scripts/common/content/assets/modality-cubes/nirs.jpg +0 -0
  32. package/src/scripts/common/content/assets/modality-cubes/pet-scan.jpg +0 -0
  33. package/src/scripts/common/content/assets/portal-content/nih-bi-brand.png +0 -0
  34. package/src/scripts/common/content/facet-content.jsx +186 -0
  35. package/src/scripts/common/content/front-page-content.jsx +177 -0
  36. package/src/scripts/common/content/image-attribution.tsx +3 -3
  37. package/src/scripts/common/content/modality-cube-content.jsx +92 -0
  38. package/src/scripts/common/content/portal-content.jsx +149 -0
  39. package/src/scripts/common/content/portal-grant-content.jsx +30 -0
  40. package/src/scripts/common/content/sortby-list.jsx +18 -0
  41. package/src/scripts/common/forms/warn-button.jsx +1 -1
  42. package/src/scripts/components/accordion/AccordionTab.tsx +68 -0
  43. package/src/scripts/components/accordion/AccordionWrap.tsx +22 -0
  44. package/src/scripts/components/accordion/__tests__/AccordionTab.spec.tsx +35 -0
  45. package/src/scripts/components/accordion/accordion.scss +68 -0
  46. package/src/scripts/components/activity-slider/ActivitySlider.tsx +121 -0
  47. package/src/scripts/components/activity-slider/slider.scss +130 -0
  48. package/src/scripts/components/affiliate-article/AffiliateArticle.tsx +26 -0
  49. package/src/scripts/components/affiliate-article/affiliate.scss +32 -0
  50. package/src/scripts/components/aggregate-count/AggregateCount.tsx +20 -0
  51. package/src/scripts/components/assets/activity-icon.png +0 -0
  52. package/src/scripts/components/assets/close-button.png +0 -0
  53. package/src/scripts/components/assets/favicon copy.ico +0 -0
  54. package/src/scripts/components/assets/favicon.ico +0 -0
  55. package/src/scripts/components/assets/get_data_browse.png +0 -0
  56. package/src/scripts/components/assets/get_data_download.png +0 -0
  57. package/src/scripts/components/assets/ljaf copy.png +0 -0
  58. package/src/scripts/components/assets/logo_app copy.png +0 -0
  59. package/src/scripts/components/assets/logo_cube copy.png +0 -0
  60. package/src/scripts/components/assets/logo_data copy.png +0 -0
  61. package/src/scripts/components/assets/logo_users copy.png +0 -0
  62. package/src/scripts/components/assets/mri-scan.jpg +0 -0
  63. package/src/scripts/components/assets/nih copy.png +0 -0
  64. package/src/scripts/components/assets/nih-bi-brand.jpg +0 -0
  65. package/src/scripts/components/assets/nih-stanford.jpg +0 -0
  66. package/src/scripts/components/assets/nih.png +0 -0
  67. package/src/scripts/components/assets/nimh.png +0 -0
  68. package/src/scripts/components/assets/nsf copy.png +0 -0
  69. package/src/scripts/components/assets/on-dark-horz.svg +1 -0
  70. package/src/scripts/components/assets/on-dark.svg +1 -0
  71. package/src/scripts/components/assets/on-light-horz.svg +1 -0
  72. package/src/scripts/components/assets/on-light.svg +1 -0
  73. package/src/scripts/components/assets/orcid_24x24 copy.png +0 -0
  74. package/src/scripts/components/assets/orcid_24x24.png +0 -0
  75. package/src/scripts/components/assets/share_data_collaborate.png +0 -0
  76. package/src/scripts/components/assets/share_data_publish.png +0 -0
  77. package/src/scripts/components/assets/share_data_validate.png +0 -0
  78. package/src/scripts/components/assets/squishymedia copy.png +0 -0
  79. package/src/scripts/components/assets/stanford copy.png +0 -0
  80. package/src/scripts/components/assets/tab-get_data.png +0 -0
  81. package/src/scripts/components/assets/tab-share_data.png +0 -0
  82. package/src/scripts/components/assets/tab-use_data.png +0 -0
  83. package/src/scripts/components/assets/use_data_analyze.png +0 -0
  84. package/src/scripts/components/assets/use_data_snapshot.png +0 -0
  85. package/src/scripts/components/button/Button.tsx +113 -0
  86. package/src/scripts/components/button/__tests__/Button.spec.tsx +21 -0
  87. package/src/scripts/components/button/button.scss +140 -0
  88. package/src/scripts/components/count-toggle/CountToggle.tsx +65 -0
  89. package/src/scripts/components/count-toggle/__tests__/CountToggle.spec.tsx +31 -0
  90. package/src/scripts/components/count-toggle/count-toggle.scss +34 -0
  91. package/src/scripts/components/dropdown/Dropdown.tsx +38 -0
  92. package/src/scripts/components/dropdown/dropdown.scss +29 -0
  93. package/src/scripts/components/facets/FacetRadio.tsx +43 -0
  94. package/src/scripts/components/facets/FacetRange.tsx +35 -0
  95. package/src/scripts/components/facets/FacetSearch.tsx +66 -0
  96. package/src/scripts/components/facets/FacetSelect.tsx +87 -0
  97. package/src/scripts/components/facets/SingleSelect.tsx +39 -0
  98. package/src/scripts/components/facets/__tests__/FacetSelect.spec.tsx +14 -0
  99. package/src/scripts/components/facets/__tests__/SingleSelect.spec.tsx +58 -0
  100. package/src/scripts/components/facets/facet.scss +244 -0
  101. package/src/scripts/components/footer/Footer.tsx +52 -0
  102. package/src/scripts/components/footer/footer.scss +20 -0
  103. package/src/scripts/components/formatting/__tests__/modality-label.spec.tsx +34 -0
  104. package/src/scripts/components/formatting/modality-label.tsx +34 -0
  105. package/src/scripts/components/front-page/ActivityHeader.tsx +12 -0
  106. package/src/scripts/components/front-page/AffiliateBlock.tsx +22 -0
  107. package/src/scripts/components/front-page/Contributors.tsx +28 -0
  108. package/src/scripts/components/front-page/GetUpdates.tsx +99 -0
  109. package/src/scripts/components/front-page/Infographic.tsx +36 -0
  110. package/src/scripts/components/front-page/front-page.scss +295 -0
  111. package/src/scripts/components/header/Header.tsx +151 -0
  112. package/src/scripts/components/header/LandingExpandedHeader.tsx +110 -0
  113. package/src/scripts/components/header/header.scss +409 -0
  114. package/src/scripts/components/icon/Icon.tsx +55 -0
  115. package/src/scripts/components/icon/__tests__/Icon.spec.tsx +10 -0
  116. package/src/scripts/components/icon/icon.scss +8 -0
  117. package/src/scripts/components/input/Input.tsx +137 -0
  118. package/src/scripts/components/input/TermSearch.tsx +101 -0
  119. package/src/scripts/components/input/input.scss +147 -0
  120. package/src/scripts/components/input/term-search.scss +68 -0
  121. package/src/scripts/components/json-tree/ExpandableProperty.tsx +35 -0
  122. package/src/scripts/components/json-tree/RecursiveProperty.tsx +67 -0
  123. package/src/scripts/components/json-tree/json-tree.scss +19 -0
  124. package/src/scripts/components/loading/Loading.tsx +19 -0
  125. package/src/scripts/components/loading/__tests__/Loading.spec.tsx +12 -0
  126. package/src/scripts/components/loading/loading.scss +141 -0
  127. package/src/scripts/components/logo/Logo.tsx +44 -0
  128. package/src/scripts/components/logo/__tests__/Logo.spec.tsx +22 -0
  129. package/src/scripts/components/modal/Modal.tsx +51 -0
  130. package/src/scripts/components/modal/ModalExample.tsx +25 -0
  131. package/src/scripts/components/modal/UserLoginModal.tsx +74 -0
  132. package/src/scripts/components/modal/__tests__/UserLoginModal.spec.tsx +37 -0
  133. package/src/scripts/components/modal/modal.scss +60 -0
  134. package/src/scripts/components/modality-cube/ModalityCube.tsx +60 -0
  135. package/src/scripts/components/modality-cube/modality-cube.scss +303 -0
  136. package/src/scripts/components/page/Page.tsx +61 -0
  137. package/src/scripts/components/page/page.scss +408 -0
  138. package/src/scripts/components/progress-bar/ProgressBar.tsx +16 -0
  139. package/src/scripts/components/progress-bar/progress-bar.scss +34 -0
  140. package/src/scripts/components/radio/Radio.tsx +33 -0
  141. package/src/scripts/components/radio/RadioGroup.tsx +45 -0
  142. package/src/scripts/components/radio/__tests__/RadioGroup.spec.tsx +31 -0
  143. package/src/scripts/components/radio/radio.scss +335 -0
  144. package/src/scripts/components/range/TwoHandleRange.scss +108 -0
  145. package/src/scripts/components/range/TwoHandleRange.tsx +128 -0
  146. package/src/scripts/components/range/__tests__/TwoHandleRange.spec.tsx +34 -0
  147. package/src/scripts/components/read-more/ReadMore.tsx +50 -0
  148. package/src/scripts/components/read-more/__tests__/ReadMore.spec.tsx +14 -0
  149. package/src/scripts/components/read-more/read-more.scss +79 -0
  150. package/src/scripts/components/scss/_flex-grid.scss +216 -0
  151. package/src/scripts/components/scss/_helper-classes.scss +162 -0
  152. package/src/scripts/components/scss/_normalize.scss +614 -0
  153. package/src/scripts/components/scss/_variables.scss +245 -0
  154. package/src/scripts/components/scss/global.scss +124 -0
  155. package/src/scripts/components/scss/toasts.scss +33 -0
  156. package/src/scripts/components/scss/upload-modal.scss +479 -0
  157. package/src/scripts/components/search-page/CommunityHeader.tsx +27 -0
  158. package/src/scripts/components/search-page/FacetBlockContainerExample.tsx +6 -0
  159. package/src/scripts/components/search-page/FilterDateItem.tsx +44 -0
  160. package/src/scripts/components/search-page/FilterListItem.tsx +62 -0
  161. package/src/scripts/components/search-page/FiltersBlock.tsx +277 -0
  162. package/src/scripts/components/search-page/ModalityHeader.tsx +64 -0
  163. package/src/scripts/components/search-page/NeurobagelSearch.tsx +59 -0
  164. package/src/scripts/components/search-page/SearchPage.tsx +114 -0
  165. package/src/scripts/components/search-page/SearchResultItem.tsx +417 -0
  166. package/src/scripts/components/search-page/SearchResultsList.tsx +48 -0
  167. package/src/scripts/components/search-page/SearchSort.tsx +52 -0
  168. package/src/scripts/components/search-page/SearchSortContainerExample.tsx +9 -0
  169. package/src/scripts/components/search-page/TermListItem.tsx +41 -0
  170. package/src/scripts/components/search-page/__tests__/NuerobagelSearch.spec.tsx +17 -0
  171. package/src/scripts/components/search-page/filters-block.scss +99 -0
  172. package/src/scripts/components/search-page/neurobagel_logo.svg +75 -0
  173. package/src/scripts/components/search-page/search-page.scss +505 -0
  174. package/src/scripts/components/search-page/search-result.scss +117 -0
  175. package/src/scripts/components/search-page/search-sort.scss +56 -0
  176. package/src/scripts/components/select/SelectGroup.tsx +41 -0
  177. package/src/scripts/components/select/__tests__/SelectGroup.spec.tsx +43 -0
  178. package/src/scripts/components/select/select.scss +40 -0
  179. package/src/scripts/components/textarea/Textarea.tsx +68 -0
  180. package/src/scripts/components/textarea/__tests__/Textarea.spec.tsx +53 -0
  181. package/src/scripts/components/tooltip/Tooltip.tsx +30 -0
  182. package/src/scripts/components/tooltip/__tests__/Tooltip.spec.tsx +14 -0
  183. package/src/scripts/components/tooltip/tooltip.scss +159 -0
  184. package/src/scripts/components/user/UserMenu.tsx +72 -0
  185. package/src/scripts/components/user/user-menu.scss +88 -0
  186. package/src/scripts/components/warn-button/WarnButton.tsx +97 -0
  187. package/src/scripts/components/warn-button/warn-button.scss +39 -0
  188. package/src/scripts/datalad/dataset/dataset-query-context.js +2 -0
  189. package/src/scripts/dataset/comments/comment.jsx +1 -1
  190. package/src/scripts/dataset/components/AnalyzeDropdown.tsx +2 -2
  191. package/src/scripts/dataset/components/CloneDropdown.tsx +2 -2
  192. package/src/scripts/dataset/components/DatasetEventItem.tsx +105 -0
  193. package/src/scripts/dataset/components/DatasetGitAccess.tsx +2 -2
  194. package/src/scripts/dataset/components/DatasetToolButton.tsx +2 -2
  195. package/src/scripts/dataset/components/ModalitiesMetaDataBlock.tsx +2 -10
  196. package/src/scripts/dataset/components/ValidationBlock.tsx +37 -2
  197. package/src/scripts/dataset/components/VersionList.tsx +1 -1
  198. package/src/scripts/dataset/components/scss/dataset-events.module.scss +41 -0
  199. package/src/scripts/dataset/dataset-query.jsx +12 -11
  200. package/src/scripts/dataset/download/__tests__/__snapshots__/download-command-line.spec.jsx.snap +7 -1
  201. package/src/scripts/dataset/download/__tests__/download-command-line.spec.jsx +2 -2
  202. package/src/scripts/dataset/download/download-command-line.jsx +17 -13
  203. package/src/scripts/dataset/download/download-datalad.jsx +6 -3
  204. package/src/scripts/dataset/download/download-link.jsx +1 -1
  205. package/src/scripts/dataset/download/download-s3.jsx +0 -4
  206. package/src/scripts/dataset/files/file-display.jsx +1 -1
  207. package/src/scripts/dataset/files/file-tree-unloaded-directory.jsx +1 -1
  208. package/src/scripts/dataset/files/file-tree.tsx +1 -1
  209. package/src/scripts/dataset/files/file-view.jsx +1 -1
  210. package/src/scripts/dataset/files/file-viewer-type.jsx +5 -1
  211. package/src/scripts/dataset/files/file.tsx +2 -2
  212. package/src/scripts/dataset/files/files.tsx +3 -3
  213. package/src/scripts/dataset/files/viewers/file-viewer-json.jsx +1 -1
  214. package/src/scripts/dataset/files/viewers/file-viewer-markdown.tsx +13 -0
  215. package/src/scripts/dataset/fragments/cancel-button.tsx +1 -1
  216. package/src/scripts/dataset/fragments/dataset-citation.jsx +2 -2
  217. package/src/scripts/dataset/fragments/edit-button.tsx +1 -1
  218. package/src/scripts/dataset/fragments/edit-list.jsx +1 -1
  219. package/src/scripts/dataset/fragments/save-button.tsx +1 -1
  220. package/src/scripts/dataset/mutations/admin-exports.jsx +1 -1
  221. package/src/scripts/dataset/mutations/cache-clear.jsx +1 -1
  222. package/src/scripts/dataset/mutations/create-anonymous-reviewer.tsx +2 -2
  223. package/src/scripts/dataset/mutations/dataset-events.tsx +187 -0
  224. package/src/scripts/dataset/mutations/dataset-relations.tsx +1 -1
  225. package/src/scripts/dataset/mutations/delete-anonymous-reviewer.tsx +1 -1
  226. package/src/scripts/dataset/mutations/delete-comment.jsx +1 -1
  227. package/src/scripts/dataset/mutations/delete-file.jsx +1 -1
  228. package/src/scripts/dataset/mutations/deprecate-version.tsx +1 -1
  229. package/src/scripts/dataset/mutations/flag-annex-object.jsx +2 -2
  230. package/src/scripts/dataset/mutations/follow.tsx +1 -1
  231. package/src/scripts/dataset/mutations/import-dataset.tsx +1 -1
  232. package/src/scripts/dataset/mutations/publish.jsx +1 -1
  233. package/src/scripts/dataset/mutations/remove-annex-object.jsx +2 -2
  234. package/src/scripts/dataset/mutations/remove-permissions.tsx +1 -1
  235. package/src/scripts/dataset/mutations/revalidate.jsx +2 -2
  236. package/src/scripts/dataset/mutations/snapshot.tsx +1 -1
  237. package/src/scripts/dataset/mutations/star.tsx +1 -1
  238. package/src/scripts/dataset/mutations/submit-metadata.jsx +1 -1
  239. package/src/scripts/dataset/mutations/undo-deprecate-version.tsx +2 -2
  240. package/src/scripts/dataset/mutations/update-permissions.tsx +1 -1
  241. package/src/scripts/dataset/routes/admin-datalad.jsx +4 -0
  242. package/src/scripts/dataset/routes/dataset-default.tsx +1 -1
  243. package/src/scripts/dataset/routes/delete-page.tsx +7 -3
  244. package/src/scripts/dataset/routes/deprecate-snapshot-page.tsx +1 -1
  245. package/src/scripts/dataset/routes/manage-permissions.jsx +1 -1
  246. package/src/scripts/dataset/routes/snapshot-default.tsx +1 -1
  247. package/src/scripts/dataset/routes/snapshot.tsx +1 -1
  248. package/src/scripts/dataset/snapshot-container.tsx +14 -8
  249. package/src/scripts/pages/admin/flagged-files.jsx +1 -1
  250. package/src/scripts/pages/admin/user-tools.tsx +1 -1
  251. package/src/scripts/pages/admin/users.tsx +2 -2
  252. package/src/scripts/pages/api.jsx +2 -2
  253. package/src/scripts/pages/front-page/aggregate-queries/aggregate-counts-container.tsx +6 -7
  254. package/src/scripts/pages/front-page/front-page.tsx +7 -9
  255. package/src/scripts/pages/metadata/dataset-metadata.tsx +1 -1
  256. package/src/scripts/search/__tests__/search-container.spec.tsx +7 -7
  257. package/src/scripts/search/filters-block-container.tsx +66 -9
  258. package/src/scripts/search/initial-search-params.tsx +7 -7
  259. package/src/scripts/search/inputs/__tests__/sort-by-select.spec.tsx +1 -1
  260. package/src/scripts/search/inputs/admin-allDatasets-toggle.tsx +1 -1
  261. package/src/scripts/search/inputs/age-range-input.tsx +3 -2
  262. package/src/scripts/search/inputs/author-input.tsx +3 -2
  263. package/src/scripts/search/inputs/dataset-type-select.tsx +3 -2
  264. package/src/scripts/search/inputs/date-radios.tsx +3 -2
  265. package/src/scripts/search/inputs/diagnosis-select.tsx +3 -2
  266. package/src/scripts/search/inputs/initiative-select.tsx +12 -6
  267. package/src/scripts/search/inputs/keyword-input.tsx +2 -2
  268. package/src/scripts/search/inputs/modality-select.tsx +28 -26
  269. package/src/scripts/search/inputs/pet/bodyParts_input.tsx +4 -3
  270. package/src/scripts/search/inputs/pet/scannerManufacturersModelNames_input.tsx +4 -3
  271. package/src/scripts/search/inputs/pet/scannerManufacturers_input.tsx +4 -3
  272. package/src/scripts/search/inputs/pet/tracerNames_input.tsx +4 -3
  273. package/src/scripts/search/inputs/pet/tracerRadionuclides_input.tsx +4 -3
  274. package/src/scripts/search/inputs/section-select.tsx +3 -2
  275. package/src/scripts/search/inputs/sex-radios.tsx +3 -2
  276. package/src/scripts/search/inputs/show-datasets-radios.tsx +4 -3
  277. package/src/scripts/search/inputs/sort-by-select.tsx +1 -1
  278. package/src/scripts/search/inputs/species-select.tsx +3 -2
  279. package/src/scripts/search/inputs/study-domain-input.tsx +4 -3
  280. package/src/scripts/search/inputs/subject-count-range-input.tsx +3 -2
  281. package/src/scripts/search/inputs/task-input.tsx +4 -3
  282. package/src/scripts/search/search-container.tsx +14 -17
  283. package/src/scripts/search/search-params-ctx.tsx +28 -5
  284. package/src/scripts/search/search-routes.tsx +2 -4
  285. package/src/scripts/search/use-search-results.tsx +14 -13
  286. package/src/scripts/uploader/upload-issues.tsx +1 -1
  287. package/src/scripts/uploader/upload-progress.jsx +1 -1
  288. package/src/scripts/uploader/uploader-modal.jsx +1 -1
  289. package/src/scripts/users/components/close-button.tsx +1 -1
  290. package/src/scripts/users/components/edit-button.tsx +1 -1
  291. package/src/scripts/users/components/edit-list.tsx +1 -1
  292. package/src/scripts/users/components/edit-string.tsx +1 -1
  293. package/src/scripts/users/dataset-card.tsx +2 -2
  294. package/src/scripts/users/user-notification-accordion.tsx +1 -1
  295. package/src/scripts/utils/user-login-modal-ctx.tsx +1 -1
  296. package/src/scripts/validation/validation-issues.tsx +2 -1
  297. package/src/scripts/validation/validation-panel.tsx +2 -1
  298. package/src/scripts/validation/validation-results.tsx +4 -3
  299. package/src/scripts/validation-legacy/validation-panel.jsx +2 -1
  300. package/src/scripts/validation-legacy/validation-results.issues.jsx +2 -3
  301. package/src/scripts/validation-legacy/validation-results.tsx +3 -4
  302. package/tsconfig.json +1 -4
@@ -0,0 +1,408 @@
1
+ @import '../scss/variables';
2
+ @import '../scss//normalize';
3
+ @import '../scss//helper-classes';
4
+ @import '../scss//flex-grid';
5
+ @import '../scss/toasts.scss';
6
+ @import '../scss/global.scss';
7
+ @import '../scss/upload-modal';
8
+
9
+ .page {
10
+ min-height: 400px;
11
+ }
12
+ .text-danger {
13
+ color: $on-light-red;
14
+ }
15
+ .loading-dataset {
16
+ display: flex;
17
+ justify-content: center;
18
+ align-items: center;
19
+ flex-direction: column;
20
+ height: 70vh;
21
+ }
22
+
23
+ .warning-text {
24
+ color: $on-light-red;
25
+ }
26
+
27
+ // admin page
28
+ .admin.route-wrapper {
29
+ margin: 20px auto;
30
+ max-width: 1000px;
31
+ width: 90%;
32
+ .nav-pills.tabs {
33
+ display: flex;
34
+ list-style: none;
35
+ padding: 0;
36
+ margin: 0;
37
+ li a {
38
+ padding: 20px;
39
+ display: block;
40
+ }
41
+ }
42
+ input {
43
+ display: inline-block;
44
+ appearance: none;
45
+ box-sizing: border-box;
46
+ border-radius: 0;
47
+ border: 0.1rem solid #dfdfdf;
48
+ padding: 10px 12px;
49
+ max-width: 100%;
50
+ line-height: 12px;
51
+ }
52
+ .header-wrap {
53
+ display: flex;
54
+ justify-content: space-between;
55
+ align-items: center;
56
+ }
57
+
58
+ .filters {
59
+ button {
60
+ margin: 0 10px;
61
+ }
62
+ }
63
+ .users-panel-wrap {
64
+ .user-panel {
65
+ display: flex;
66
+ justify-content: space-between;
67
+ margin: 20px 0;
68
+ border: 1px solid #ddd;
69
+ border-radius: 4px;
70
+ padding: 10px;
71
+ > .user-col {
72
+ flex: auto;
73
+ label {
74
+ display: block;
75
+ font-weight: 600;
76
+ font-size: 14px;
77
+ }
78
+ }
79
+ .user-panel-inner {
80
+ display: flex;
81
+ justify-content: space-between;
82
+ > .user-col {
83
+ flex: 1;
84
+ }
85
+ }
86
+ .uc-summary .summary-data,
87
+ .uc-provider {
88
+ font-size: 12px;
89
+ margin: 0 0 10px;
90
+ }
91
+ .uc-name {
92
+ font-size: 20px;
93
+ display: flex;
94
+ align-items: flex-start;
95
+ .badge {
96
+ font-size: 12px;
97
+ color: #fff;
98
+ background: red;
99
+ display: inline-block;
100
+ padding: 5px;
101
+ border-radius: 4px;
102
+ font-weight: bold;
103
+ }
104
+ .dataset-tools-wrap-admin .tools {
105
+ display: flex;
106
+ button {
107
+ background-color: transparent;
108
+ border: 0;
109
+ outline: 0;
110
+ font-size: 12px;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+
118
+ //api page
119
+
120
+ .container.api {
121
+ width: 767px;
122
+ margin: 40px auto 80px;
123
+ max-width: 90%;
124
+ h2 {
125
+ text-align: center;
126
+ }
127
+ h3 {
128
+ text-align: center;
129
+ margin-top: 50px;
130
+ }
131
+ pre {
132
+ white-space: normal;
133
+ word-break: break-all;
134
+ padding: 20px;
135
+ border: 1px solid #ddd;
136
+ border-radius: 4px;
137
+ }
138
+
139
+ .copy-key.ck-wrap {
140
+ margin: 30px;
141
+ display: flex;
142
+ justify-content: center;
143
+ }
144
+ .on-button--primary.on-button {
145
+ margin: 10px auto;
146
+ display: block;
147
+ }
148
+ }
149
+
150
+ .feedback-form.feedback-modal .grid.modal {
151
+ width: 670px;
152
+ max-height: 80%;
153
+ }
154
+
155
+ .edit-description-field {
156
+ font-size: 16px;
157
+ line-height: 24px;
158
+ width: 100%;
159
+ }
160
+
161
+ .description-btn {
162
+ color: var(--current-theme-primary);
163
+ &:hover {
164
+ text-decoration: underline;
165
+ }
166
+ }
167
+ .dataset-header .description-btn {
168
+ color: var(--current-theme-primary-light);
169
+ }
170
+
171
+ .edit-list-group-item,
172
+ .edit-list-group {
173
+ display: flex;
174
+ justify-content: flex-start;
175
+ align-items: flex-start;
176
+ flex-wrap: wrap;
177
+ .on-button--small {
178
+ padding: 10px;
179
+ margin-left: 10px;
180
+ }
181
+ }
182
+
183
+ .edit-list-group-item {
184
+ align-items: center;
185
+ padding: 5px;
186
+ .on-no-background.icon-text,
187
+ .on-no-background.img-icon-text {
188
+ padding: 0;
189
+ margin-left: 5px;
190
+ }
191
+ }
192
+
193
+ .update-field-save {
194
+ display: flex;
195
+ justify-content: flex-start;
196
+ align-items: flex-start;
197
+ flex-wrap: wrap;
198
+ }
199
+
200
+ //file tree
201
+
202
+ .filetree-wrapper {
203
+ border: 1px solid #ccc;
204
+ border-radius: 4px;
205
+ padding: 0;
206
+ margin-bottom: 25px;
207
+
208
+ .accordion-content {
209
+ margin: 0;
210
+ }
211
+ .accordion-item {
212
+ overflow: visible;
213
+ }
214
+ .accordion-item.collapsed {
215
+ display: none;
216
+ }
217
+
218
+ .filetree-item {
219
+ list-style-type: none;
220
+ padding: 10px 0 10px 15px;
221
+ border-left: 1px solid #e3e3e3;
222
+ font-size: 14px;
223
+ > div {
224
+ margin-bottom: 10px;
225
+ }
226
+ }
227
+ > div > .filetree-item:first-of-type {
228
+ border-left: 0;
229
+ padding-right: 15px;
230
+ }
231
+
232
+ .filetree-dir .filetree-file:last-of-type {
233
+ padding-bottom: 0;
234
+ }
235
+ .filetree-item:not(:last-child) {
236
+ border-bottom: 1px solid #e3e3e3;
237
+ }
238
+ .filetree-dir-tools {
239
+ padding: 10px 0;
240
+ border-bottom: 1px solid #e3e3e3;
241
+ }
242
+ button.btn-warn-component {
243
+ padding: 0;
244
+ i {
245
+ font-size: 16px;
246
+ }
247
+ }
248
+
249
+ .filetree-dir {
250
+ display: flex;
251
+ margin-left: auto;
252
+ justify-content: flex-start;
253
+ line-height: 10px;
254
+ .file-tree {
255
+ width: 100%;
256
+ }
257
+ > span,
258
+ > div {
259
+ margin-left: 10px;
260
+ display: flex;
261
+ font-size: 12px;
262
+ text-align: center;
263
+ width: auto;
264
+ position: relative;
265
+ align-items: center;
266
+ cursor: pointer;
267
+ height: 20px;
268
+ i {
269
+ font-size: 12px;
270
+ margin-right: 5px;
271
+ }
272
+ &.delete-file {
273
+ margin-left: auto;
274
+ }
275
+ input {
276
+ opacity: 0;
277
+ filter: alpha(opacity=0);
278
+ position: absolute;
279
+ cursor: pointer;
280
+ left: 0;
281
+ right: 0;
282
+ bottom: 0;
283
+ top: 0;
284
+ width: 100%;
285
+ }
286
+ .warn-btn-click {
287
+ button {
288
+ font-size: 12px;
289
+ }
290
+ }
291
+ }
292
+
293
+ button.btn-warn-component.success,
294
+ button.btn-warn-component.cancel {
295
+ margin: 0 2px 0;
296
+ font-size: 10px;
297
+ height: 20px;
298
+ width: 20px;
299
+ padding: 0;
300
+ display: flex;
301
+ justify-content: center;
302
+ align-items: center;
303
+ i {
304
+ font-size: 11px;
305
+ color: #fff;
306
+ margin: 0;
307
+ }
308
+ }
309
+ }
310
+
311
+ .filetree-editfile {
312
+ display: flex;
313
+ margin-left: auto;
314
+ justify-content: flex-start;
315
+ line-height: 10px;
316
+ > div,
317
+ > span {
318
+ margin-left: 10px;
319
+ display: flex;
320
+ font-size: 12px;
321
+ text-align: center;
322
+ width: auto;
323
+ position: relative;
324
+ align-items: center;
325
+ cursor: pointer;
326
+ height: 20px;
327
+ &.fresnel-greaterThanOrEqual-medium {
328
+ @media (max-width: 767px) {
329
+ margin: 0;
330
+ }
331
+ }
332
+ i {
333
+ font-size: 12px;
334
+ margin-right: 0;
335
+ }
336
+ &.delete-file {
337
+ margin-left: auto;
338
+ }
339
+ input {
340
+ opacity: 0;
341
+ filter: alpha(opacity=0);
342
+ position: absolute;
343
+ cursor: pointer;
344
+ left: 0;
345
+ right: 0;
346
+ bottom: 0;
347
+ top: 0;
348
+ width: 100%;
349
+ }
350
+ .warn-btn-click {
351
+ button {
352
+ font-size: 12px;
353
+ }
354
+ }
355
+ }
356
+
357
+ button.btn-warn-component.success,
358
+ button.btn-warn-component.cancel {
359
+ margin: 0 2px 0;
360
+ font-size: 10px;
361
+ height: 20px;
362
+ width: 20px;
363
+ padding: 0;
364
+ display: flex;
365
+ justify-content: center;
366
+ align-items: center;
367
+ i {
368
+ font-size: 11px;
369
+ color: #fff;
370
+ margin: 0;
371
+ }
372
+ }
373
+ }
374
+
375
+ ul.child-files {
376
+ margin: 0;
377
+ padding: 0;
378
+ }
379
+
380
+ .filetree-file {
381
+ display: flex;
382
+ @media (max-width: 480px) {
383
+ flex-wrap: wrap;
384
+ }
385
+ }
386
+
387
+ .bulk-delete-checkbox-group,
388
+ .edit-file {
389
+ i {
390
+ color: var(--current-theme-primary);
391
+ }
392
+ }
393
+ .bulk-delete-checkbox-group {
394
+ label {
395
+ display: flex;
396
+ align-items: center;
397
+ }
398
+ &.added-to-bd {
399
+ i {
400
+ color: $on-light-red;
401
+ }
402
+ }
403
+ }
404
+ .added-to-bulk {
405
+ font-size: 10px;
406
+ margin-left: 10px;
407
+ }
408
+ }
@@ -0,0 +1,16 @@
1
+ import React from "react"
2
+ import "./progress-bar.scss"
3
+
4
+ export interface ProgressBarProps {
5
+ width?: string
6
+ }
7
+
8
+ export const ProgressBar: React.FC<ProgressBarProps> = ({ width }) => (
9
+ <div className="progress">
10
+ <div
11
+ className="progress-bar"
12
+ style={{ width: width.toString() + "%" }}
13
+ >
14
+ </div>
15
+ </div>
16
+ )
@@ -0,0 +1,34 @@
1
+ @import '../scss/variables';
2
+ // Outer container
3
+ .progress {
4
+ overflow: hidden;
5
+ height: 25px;
6
+ margin-bottom: 0;
7
+ background-color: #eee;
8
+ border-radius: 0;
9
+ }
10
+
11
+ // Bar of progress
12
+ .progress-bar {
13
+ float: left;
14
+ width: 0%;
15
+ height: 100%;
16
+ text-align: center;
17
+ background-color: var(--current-theme-primary);
18
+ transition: width 0.6s ease;
19
+ }
20
+
21
+ .progress .progress-bar {
22
+ animation-name: animateBar;
23
+ animation-iteration-count: 1;
24
+ animation-timing-function: ease-in;
25
+ animation-duration: 0.4s;
26
+ }
27
+ @keyframes animateBar {
28
+ 0% {
29
+ transform: translateX(-100%);
30
+ }
31
+ 100% {
32
+ transform: translateX(0);
33
+ }
34
+ }
@@ -0,0 +1,33 @@
1
+ import React from "react"
2
+ import "./radio.scss"
3
+
4
+ export interface RadioProps {
5
+ label: string
6
+ name: string
7
+ onChange?: React.ChangeEventHandler<HTMLInputElement>
8
+ checked: boolean
9
+ value: string
10
+ }
11
+
12
+ export const Radio = ({
13
+ label,
14
+ name,
15
+ onChange,
16
+ checked,
17
+ value,
18
+ }: RadioProps) => {
19
+ const id = name + "-" + label
20
+ return (
21
+ <span className="custom-radio">
22
+ <input
23
+ type="radio"
24
+ id={id}
25
+ name={name}
26
+ checked={checked}
27
+ onChange={onChange}
28
+ value={value}
29
+ />
30
+ <label htmlFor={id}>{label}</label>
31
+ </span>
32
+ )
33
+ }
@@ -0,0 +1,45 @@
1
+ import React from "react"
2
+ import { Radio } from "./Radio"
3
+ import "./radio.scss"
4
+
5
+ export interface RadioGroupProps {
6
+ layout: string
7
+ // if radioArr is string[]
8
+ // then the string items are both the label and value for the radio buttons
9
+ radioArr: (
10
+ | string
11
+ | {
12
+ label: string
13
+ onChange?: React.MouseEventHandler<HTMLInputElement>
14
+ value: string
15
+ }
16
+ )[]
17
+ name: string
18
+ selected: string
19
+ setSelected: (value) => void
20
+ }
21
+
22
+ const get = (obj, property) => (typeof obj === "object" ? obj[property] : obj)
23
+
24
+ export const RadioGroup = ({
25
+ radioArr,
26
+ layout,
27
+ name,
28
+ selected,
29
+ setSelected,
30
+ }: RadioGroupProps) => {
31
+ return (
32
+ <div className={"on-radio-wrapper" + " " + layout}>
33
+ {radioArr.map((item, index) => (
34
+ <Radio
35
+ key={index}
36
+ name={name}
37
+ value={get(item, "value")}
38
+ label={get(item, "label")}
39
+ checked={selected === get(item, "value")}
40
+ onChange={(e) => setSelected(e.target.value)}
41
+ />
42
+ ))}
43
+ </div>
44
+ )
45
+ }
@@ -0,0 +1,31 @@
1
+ import { vi } from "vitest"
2
+ import React from "react"
3
+ import { fireEvent, render, screen } from "@testing-library/react"
4
+ import { RadioGroup } from "../RadioGroup"
5
+
6
+ export const datasetType_available = [
7
+ { label: "All Public", value: "All Public" },
8
+ { label: "Following", value: "Following" },
9
+ { label: "My Datasets", value: "My Datasets" },
10
+ { label: "My Bookmarks", value: "My Bookmarks" },
11
+ ]
12
+
13
+ describe("RadioGroup component", () => {
14
+ it("has selectable options", async () => {
15
+ const setSelected = vi.fn()
16
+ render(
17
+ <RadioGroup
18
+ setSelected={setSelected}
19
+ selected={"All Public"}
20
+ name="name"
21
+ radioArr={datasetType_available}
22
+ layout="row"
23
+ />,
24
+ )
25
+ // Check an option is rendered
26
+ expect(await screen.getByText(/Following/)).toBeInTheDocument()
27
+ const followingRadio = screen.getByText("Following")
28
+ fireEvent.click(followingRadio)
29
+ expect(setSelected).toHaveBeenCalledWith("Following")
30
+ })
31
+ })