@databiosphere/findable-ui 21.4.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 (208) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/.storybook/main.ts +7 -1
  3. package/CHANGELOG.md +17 -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/ExportMethod/exportMethod.stories.d.ts +22 -5
  51. package/lib/components/Export/components/ExportMethod/exportMethod.stories.js +9 -9
  52. package/lib/components/Filter/components/Filter/filter.stories.d.ts +25 -5
  53. package/lib/components/Filter/components/Filter/filter.stories.js +25 -24
  54. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +31 -5
  55. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +10 -8
  56. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.d.ts +38 -5
  57. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.js +107 -104
  58. package/lib/components/Filter/components/FilterTag/filterTag.stories.d.ts +16 -5
  59. package/lib/components/Filter/components/FilterTag/filterTag.stories.js +8 -7
  60. package/lib/components/Filter/components/FilterTags/filterTags.stories.d.ts +18 -5
  61. package/lib/components/Filter/components/FilterTags/filterTags.stories.js +40 -39
  62. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.d.ts +8 -5
  63. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.js +9 -6
  64. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.d.ts +13 -5
  65. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.js +11 -11
  66. package/lib/components/Index/components/Hero/hero.stories.d.ts +23 -5
  67. package/lib/components/Index/components/Hero/hero.stories.js +8 -6
  68. package/lib/components/Index/components/NTagCell/nTagCell.stories.d.ts +16 -5
  69. package/lib/components/Index/components/NTagCell/nTagCell.stories.js +8 -8
  70. package/lib/components/Index/index.stories.js +2 -1
  71. package/lib/components/Layout/components/BackPage/backPageView.stories.d.ts +31 -5
  72. package/lib/components/Layout/components/BackPage/backPageView.stories.js +27 -18
  73. package/lib/components/Layout/components/Footer/footer.stories.d.ts +24 -3
  74. package/lib/components/Layout/components/Footer/footer.stories.js +4 -3
  75. package/lib/components/Layout/components/Header/header.stories.js +1 -1
  76. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.d.ts +13 -5
  77. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.js +6 -6
  78. package/lib/components/Layout/components/Sidebar/sidebar.stories.js +2 -0
  79. package/lib/components/Links/links.stories.d.ts +13 -5
  80. package/lib/components/Links/links.stories.js +14 -14
  81. package/lib/components/Loading/loading.stories.d.ts +34 -5
  82. package/lib/components/Loading/loading.stories.js +8 -6
  83. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.d.ts +13 -5
  84. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.js +20 -20
  85. package/lib/components/Project/components/Contacts/contacts.stories.d.ts +13 -5
  86. package/lib/components/Project/components/Contacts/contacts.stories.js +18 -18
  87. package/lib/components/Project/components/Contributors/contributors.stories.d.ts +8 -5
  88. package/lib/components/Project/components/Contributors/contributors.stories.js +27 -27
  89. package/lib/components/Project/components/DataCurators/dataCurators.stories.d.ts +13 -5
  90. package/lib/components/Project/components/DataCurators/dataCurators.stories.js +7 -7
  91. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.d.ts +8 -5
  92. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.js +3 -4
  93. package/lib/components/Project/components/Description/description.stories.d.ts +8 -5
  94. package/lib/components/Project/components/Description/description.stories.js +6 -6
  95. package/lib/components/Project/components/Details/details.stories.d.ts +16 -5
  96. package/lib/components/Project/components/Details/details.stories.js +7 -7
  97. package/lib/components/Project/components/Publications/publications.stories.d.ts +8 -5
  98. package/lib/components/Project/components/Publications/publications.stories.js +17 -17
  99. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.d.ts +8 -5
  100. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.js +18 -18
  101. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.d.ts +16 -33
  102. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.js +10 -9
  103. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.js +26 -14
  104. package/lib/components/Support/components/ViewSupport/types.d.ts +6 -0
  105. package/lib/components/Support/components/ViewSupport/types.js +1 -0
  106. package/lib/components/Support/components/ViewSupport/viewSupport.d.ts +2 -9
  107. package/lib/components/Support/components/ViewSupport/viewSupport.js +7 -3
  108. package/lib/components/Table/components/Pagination/pagination.stories.d.ts +28 -5
  109. package/lib/components/Table/components/Pagination/pagination.stories.js +11 -7
  110. package/lib/components/common/Accordion/accordion.stories.d.ts +6 -3
  111. package/lib/components/common/Accordion/accordion.stories.js +2 -1
  112. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.d.ts +10 -7
  113. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.js +42 -43
  114. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.d.ts +9 -6
  115. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.js +13 -15
  116. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.d.ts +19 -2
  117. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.js +2 -2
  118. package/lib/components/common/Card/card.stories.d.ts +6 -3
  119. package/lib/components/common/Card/card.stories.js +2 -1
  120. package/lib/components/common/Code/code.stories.d.ts +5 -3
  121. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.d.ts +11 -3
  122. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.js +2 -1
  123. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.d.ts +13 -5
  124. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.js +6 -6
  125. package/lib/components/common/Socials/socials.stories.d.ts +11 -3
  126. package/lib/components/common/Socials/socials.stories.js +2 -1
  127. package/lib/components/common/StaticImage/staticImage.stories.d.ts +22 -5
  128. package/lib/components/common/StaticImage/staticImage.stories.js +8 -8
  129. package/lib/components/common/StatusIcon/statusIcon.stories.d.ts +19 -5
  130. package/lib/components/common/StatusIcon/statusIcon.stories.js +7 -7
  131. package/lib/components/common/Tag/tag.stories.d.ts +15 -5
  132. package/lib/components/common/Tag/tag.stories.js +7 -5
  133. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.d.ts +18 -5
  134. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.js +19 -19
  135. package/lib/styles/common/mui/typography.js +1 -0
  136. package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -0
  137. package/lib/views/DataDictionaryView/dataDictionaryView.js +5 -0
  138. package/package.json +13 -13
  139. package/src/components/DataDictionary/components/Entities/constants.ts +8 -0
  140. package/src/components/DataDictionary/components/Entities/entities.tsx +15 -0
  141. package/src/components/DataDictionary/components/Entities/types.ts +5 -0
  142. package/src/components/DataDictionary/components/Entity/constants.ts +7 -0
  143. package/src/components/DataDictionary/components/Entity/entity.tsx +28 -0
  144. package/src/components/DataDictionary/components/Entity/types.ts +5 -0
  145. package/src/components/DataDictionary/components/Table/columns/columnDef.ts +47 -0
  146. package/src/components/DataDictionary/components/Table/columns/columnIdentifier.ts +5 -0
  147. package/src/components/DataDictionary/components/Table/columns/types.ts +3 -0
  148. package/src/components/DataDictionary/components/Table/components/BasicCell/basicCell.tsx +8 -0
  149. package/src/components/DataDictionary/components/Table/components/BasicCell/types.ts +5 -0
  150. package/src/components/DataDictionary/components/Table/hook.ts +13 -0
  151. package/src/components/DataDictionary/components/Table/options/core/constants.ts +12 -0
  152. package/src/components/DataDictionary/components/Table/options/hook.ts +14 -0
  153. package/src/components/DataDictionary/components/Table/options/sorting/constants.ts +9 -0
  154. package/src/components/DataDictionary/components/Table/table.styles.ts +6 -0
  155. package/src/components/DataDictionary/components/Table/table.tsx +35 -0
  156. package/src/components/DataDictionary/components/Table/types.ts +6 -0
  157. package/src/components/DataDictionary/dataDictionary.styles.ts +8 -0
  158. package/src/components/DataDictionary/dataDictionary.tsx +16 -0
  159. package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +9 -0
  160. package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +5 -0
  161. package/src/components/Detail/detail.stories.tsx +41 -36
  162. package/src/components/Export/components/ExportMethod/exportMethod.stories.tsx +13 -13
  163. package/src/components/Filter/components/Filter/filter.stories.tsx +29 -28
  164. package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +14 -12
  165. package/src/components/Filter/components/FilterMenu/filterMenu.stories.tsx +111 -108
  166. package/src/components/Filter/components/FilterTag/filterTag.stories.tsx +12 -11
  167. package/src/components/Filter/components/FilterTags/filterTags.stories.tsx +44 -43
  168. package/src/components/Index/components/AzulFileDownload/azulFileDownload.stories.tsx +13 -10
  169. package/src/components/Index/components/Hero/components/Summaries/summaries.stories.tsx +15 -15
  170. package/src/components/Index/components/Hero/hero.stories.tsx +12 -8
  171. package/src/components/Index/components/NTagCell/nTagCell.stories.tsx +12 -12
  172. package/src/components/Index/index.stories.tsx +2 -1
  173. package/src/components/Layout/components/BackPage/backPageView.stories.tsx +42 -36
  174. package/src/components/Layout/components/Footer/footer.stories.tsx +6 -4
  175. package/src/components/Layout/components/Header/header.stories.tsx +1 -1
  176. package/src/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.tsx +10 -10
  177. package/src/components/Layout/components/Sidebar/sidebar.stories.tsx +2 -0
  178. package/src/components/Links/links.stories.tsx +18 -18
  179. package/src/components/Loading/loading.stories.tsx +12 -10
  180. package/src/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.tsx +24 -25
  181. package/src/components/Project/components/Contacts/contacts.stories.tsx +22 -22
  182. package/src/components/Project/components/Contributors/contributors.stories.tsx +31 -31
  183. package/src/components/Project/components/DataCurators/dataCurators.stories.tsx +11 -11
  184. package/src/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.tsx +7 -8
  185. package/src/components/Project/components/Description/description.stories.tsx +11 -11
  186. package/src/components/Project/components/Details/details.stories.tsx +11 -11
  187. package/src/components/Project/components/Publications/publications.stories.tsx +23 -23
  188. package/src/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.tsx +22 -22
  189. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.ts +10 -9
  190. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.tsx +44 -15
  191. package/src/components/Support/components/ViewSupport/types.ts +9 -0
  192. package/src/components/Support/components/ViewSupport/viewSupport.tsx +6 -10
  193. package/src/components/Table/components/Pagination/pagination.stories.tsx +15 -11
  194. package/src/components/common/Accordion/accordion.stories.tsx +4 -2
  195. package/src/components/common/Breadcrumbs/breadcrumbs.stories.tsx +46 -47
  196. package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx +17 -20
  197. package/src/components/common/Button/components/HelpIconButton/helpIconButton.stories.tsx +4 -4
  198. package/src/components/common/Card/card.stories.tsx +4 -2
  199. package/src/components/common/Code/code.stories.tsx +1 -1
  200. package/src/components/common/CopyToClipboard/copyToClipboard.stories.tsx +4 -2
  201. package/src/components/common/Section/components/SectionTitle/sectionTitle.stories.tsx +10 -10
  202. package/src/components/common/Socials/socials.stories.tsx +4 -2
  203. package/src/components/common/StaticImage/staticImage.stories.tsx +12 -12
  204. package/src/components/common/StatusIcon/statusIcon.stories.tsx +11 -11
  205. package/src/components/common/Tag/tag.stories.tsx +11 -9
  206. package/src/components/common/ToggleButtonGroup/toggleButtonGroup.stories.tsx +23 -23
  207. package/src/styles/common/mui/typography.ts +1 -0
  208. package/src/views/DataDictionaryView/dataDictionaryView.tsx +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@databiosphere/findable-ui",
3
- "version": "21.4.0",
3
+ "version": "22.0.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
@@ -26,15 +26,15 @@
26
26
  "@commitlint/config-conventional": "^17.4.2",
27
27
  "@mui/types": "^7.2.18",
28
28
  "@next/eslint-plugin-next": "^14.1.0",
29
- "@storybook/addon-actions": "^7.6.17",
30
- "@storybook/addon-essentials": "^7.6.17",
31
- "@storybook/addon-interactions": "^7.6.17",
32
- "@storybook/addon-links": "^7.6.17",
33
- "@storybook/addon-mdx-gfm": "^7.6.17",
34
- "@storybook/nextjs": "^7.6.17",
35
- "@storybook/react": "^7.6.17",
36
- "@storybook/testing-library": "^0.2.2",
37
- "@storybook/types": "^7.6.17",
29
+ "@storybook/addon-actions": "^8.6.4",
30
+ "@storybook/addon-essentials": "^8.6.4",
31
+ "@storybook/addon-interactions": "^8.6.4",
32
+ "@storybook/addon-links": "^8.6.4",
33
+ "@storybook/addon-mdx-gfm": "^8.6.4",
34
+ "@storybook/nextjs": "^8.6.4",
35
+ "@storybook/react": "^8.6.4",
36
+ "@storybook/test": "^8.6.4",
37
+ "@storybook/types": "^8.6.4",
38
38
  "@testing-library/react": "^16.0.1",
39
39
  "@types/jest": "^29.4.0",
40
40
  "@types/react": "^18.3.5",
@@ -60,7 +60,7 @@
60
60
  "jest-fetch-mock": "^3.0.3",
61
61
  "prettier": "^2.8.3",
62
62
  "prettier-plugin-organize-imports": "^3.2.2",
63
- "storybook": "^7.6.17",
63
+ "storybook": "^8.6.4",
64
64
  "ts-jest": "^29.2.5",
65
65
  "typescript": "^5.5.4"
66
66
  },
@@ -72,7 +72,7 @@
72
72
  "@tanstack/react-table": "^8.19.2",
73
73
  "@tanstack/react-virtual": "^3.0.0-beta.59",
74
74
  "copy-to-clipboard": "3.3.1",
75
- "isomorphic-dompurify": "0.24.0",
75
+ "isomorphic-dompurify": "^2.22.0",
76
76
  "ky": "^1.7.2",
77
77
  "next": "^14.1.0",
78
78
  "next-auth": "^4.24.7",
@@ -83,7 +83,7 @@
83
83
  "react-idle-timer": "^5.7.2",
84
84
  "react-window": "1.8.9",
85
85
  "uuid": "8.3.2",
86
- "validate.js": "^0.13.1"
86
+ "yup": "^1.6.1"
87
87
  },
88
88
  "engines": {
89
89
  "node": "20.10.0"
@@ -0,0 +1,8 @@
1
+ import { Grid2Props } from "@mui/material";
2
+
3
+ export const GRID2_PROPS: Grid2Props = {
4
+ container: true,
5
+ direction: "column",
6
+ flexWrap: "nowrap",
7
+ rowGap: 8,
8
+ };
@@ -0,0 +1,15 @@
1
+ import { Grid2 } from "@mui/material";
2
+ import React from "react";
3
+ import { Entity } from "../Entity/entity";
4
+ import { GRID2_PROPS } from "./constants";
5
+ import { ClassesProps } from "./types";
6
+
7
+ export const Entities = ({ classes }: ClassesProps): JSX.Element => {
8
+ return (
9
+ <Grid2 {...GRID2_PROPS}>
10
+ {classes.map((classData) => (
11
+ <Entity key={classData.key} class={classData} />
12
+ ))}
13
+ </Grid2>
14
+ );
15
+ };
@@ -0,0 +1,5 @@
1
+ import { Class } from "../../../../common/entities";
2
+
3
+ export interface ClassesProps {
4
+ classes: Class[];
5
+ }
@@ -0,0 +1,7 @@
1
+ import { Grid2Props } from "@mui/material";
2
+
3
+ export const GRID2_PROPS: Grid2Props = {
4
+ container: true,
5
+ direction: "column",
6
+ flexWrap: "nowrap",
7
+ };
@@ -0,0 +1,28 @@
1
+ import { Grid2, Typography } from "@mui/material";
2
+ import React from "react";
3
+ import { COLOR, VARIANT } from "../../../../styles/common/mui/typography";
4
+ import { useTable } from "../Table/hook";
5
+ import { Table } from "../Table/table";
6
+ import { GRID2_PROPS } from "./constants";
7
+ import { EntityProps } from "./types";
8
+
9
+ export const Entity = ({ class: classData }: EntityProps): JSX.Element => {
10
+ const table = useTable(classData.attributes);
11
+ return (
12
+ <Grid2 {...GRID2_PROPS} rowGap={4}>
13
+ <Grid2 {...GRID2_PROPS} rowGap={1}>
14
+ <Typography component="h3" variant={VARIANT.TEXT_HEADING_SMALL}>
15
+ {classData.label}
16
+ </Typography>
17
+ <Typography
18
+ color={COLOR.INK_LIGHT}
19
+ component="div"
20
+ variant={VARIANT.TEXT_BODY_400_2_LINES}
21
+ >
22
+ {classData.description}
23
+ </Typography>
24
+ </Grid2>
25
+ <Table table={table} />
26
+ </Grid2>
27
+ );
28
+ };
@@ -0,0 +1,5 @@
1
+ import { Class } from "../../../../common/entities";
2
+
3
+ export interface EntityProps {
4
+ class: Class;
5
+ }
@@ -0,0 +1,47 @@
1
+ import { CellContext, ColumnDef } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../common/entities";
3
+ import { BasicCell } from "../components/BasicCell/basicCell";
4
+ import { COLUMN_IDENTIFIER } from "./columnIdentifier";
5
+ import { AttributeValue } from "./types";
6
+
7
+ const COLUMN_DEF_DESCRIPTION: ColumnDef<Attribute, AttributeValue> = {
8
+ accessorFn: (row) => row.description,
9
+ cell: (props: CellContext<Attribute, AttributeValue>) =>
10
+ BasicCell({ ...props }),
11
+ header: "Description",
12
+ id: COLUMN_IDENTIFIER.DESCRIPTION,
13
+ meta: { width: { max: "2fr", min: "480px" } },
14
+ };
15
+
16
+ const COLUMN_DEF_KEY: ColumnDef<Attribute, AttributeValue> = {
17
+ accessorFn: (row) => row.key,
18
+ cell: (props: CellContext<Attribute, AttributeValue>) =>
19
+ BasicCell({ ...props }),
20
+ header: "Key",
21
+ id: COLUMN_IDENTIFIER.KEY,
22
+ meta: { width: { max: "1fr", min: "180px" } },
23
+ };
24
+
25
+ const COLUMN_DEF_LABEL: ColumnDef<Attribute, AttributeValue> = {
26
+ accessorFn: (row) => row.label,
27
+ cell: (props: CellContext<Attribute, AttributeValue>) =>
28
+ BasicCell({ ...props }),
29
+ header: "Label",
30
+ id: COLUMN_IDENTIFIER.LABEL,
31
+ meta: { width: { max: "1fr", min: "200px" } },
32
+ };
33
+
34
+ export const COLUMN_DEF: Record<
35
+ keyof typeof COLUMN_IDENTIFIER,
36
+ ColumnDef<Attribute, AttributeValue>
37
+ > = {
38
+ DESCRIPTION: COLUMN_DEF_DESCRIPTION,
39
+ KEY: COLUMN_DEF_KEY,
40
+ LABEL: COLUMN_DEF_LABEL,
41
+ };
42
+
43
+ export const COLUMN_DEFS: ColumnDef<Attribute, AttributeValue>[] = [
44
+ COLUMN_DEF.LABEL,
45
+ COLUMN_DEF.KEY,
46
+ COLUMN_DEF.DESCRIPTION,
47
+ ];
@@ -0,0 +1,5 @@
1
+ export const COLUMN_IDENTIFIER = {
2
+ DESCRIPTION: "description",
3
+ KEY: "key",
4
+ LABEL: "label",
5
+ } as const;
@@ -0,0 +1,3 @@
1
+ import { Attribute } from "../../../../../common/entities";
2
+
3
+ export type AttributeValue = Attribute[keyof Attribute];
@@ -0,0 +1,8 @@
1
+ import { Typography } from "@mui/material";
2
+ import React from "react";
3
+ import { VARIANT } from "../../../../../../styles/common/mui/typography";
4
+ import { BasicCellProps } from "./types";
5
+
6
+ export const BasicCell = ({ getValue }: BasicCellProps): JSX.Element => {
7
+ return <Typography variant={VARIANT.INHERIT}>{getValue()}</Typography>;
8
+ };
@@ -0,0 +1,5 @@
1
+ import { CellContext } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ import { AttributeValue } from "../../columns/types";
4
+
5
+ export type BasicCellProps = CellContext<Attribute, AttributeValue>;
@@ -0,0 +1,13 @@
1
+ import { Table, useReactTable } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../common/entities";
3
+ import { COLUMN_DEFS } from "./columns/columnDef";
4
+ import { useTableOptions } from "./options/hook";
5
+
6
+ export const useTable = (data: Attribute[]): Table<Attribute> => {
7
+ const tableOptions = useTableOptions();
8
+ return useReactTable<Attribute>({
9
+ ...tableOptions,
10
+ columns: COLUMN_DEFS,
11
+ data,
12
+ });
13
+ };
@@ -0,0 +1,12 @@
1
+ import { CoreOptions, getCoreRowModel } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ import { ROW_POSITION } from "../../../../../Table/features/RowPosition/constants";
4
+ import { ROW_PREVIEW } from "../../../../../Table/features/RowPreview/constants";
5
+
6
+ export const CORE_OPTIONS: Pick<
7
+ CoreOptions<Attribute>,
8
+ "_features" | "getCoreRowModel"
9
+ > = {
10
+ _features: [ROW_POSITION, ROW_PREVIEW],
11
+ getCoreRowModel: getCoreRowModel(),
12
+ };
@@ -0,0 +1,14 @@
1
+ import { TableOptions } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../common/entities";
3
+ import { CORE_OPTIONS } from "./core/constants";
4
+ import { SORTING_OPTIONS } from "./sorting/constants";
5
+
6
+ export const useTableOptions = (): Omit<
7
+ TableOptions<Attribute>,
8
+ "columns" | "data"
9
+ > => {
10
+ return {
11
+ ...CORE_OPTIONS,
12
+ ...SORTING_OPTIONS,
13
+ };
14
+ };
@@ -0,0 +1,9 @@
1
+ import { SortingOptions } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+
4
+ export const SORTING_OPTIONS: Pick<
5
+ SortingOptions<Attribute>,
6
+ "enableSorting"
7
+ > = {
8
+ enableSorting: false,
9
+ };
@@ -0,0 +1,6 @@
1
+ import styled from "@emotion/styled";
2
+ import { RoundedPaper } from "../../../common/Paper/paper.styles";
3
+
4
+ export const StyledRoundedPaper = styled(RoundedPaper)`
5
+ box-shadow: none;
6
+ `;
@@ -0,0 +1,35 @@
1
+ import { TableContainer } from "@mui/material";
2
+ import React from "react";
3
+ import { TableBody } from "../../../Detail/components/Table/components/TableBody/tableBody";
4
+ import { ROW_DIRECTION } from "../../../Table/common/entities";
5
+ import { TableHead } from "../../../Table/components/TableHead/tableHead";
6
+ import { GridTable } from "../../../Table/table.styles";
7
+ import { getColumnTrackSizing } from "../../../TableCreator/options/columnTrackSizing/utils";
8
+ import { GridPaper } from "../../../common/Paper/paper.styles";
9
+ import { StyledRoundedPaper } from "./table.styles";
10
+ import { TableProps } from "./types";
11
+
12
+ export const Table = ({ table }: TableProps): JSX.Element => {
13
+ return (
14
+ <StyledRoundedPaper variant="table">
15
+ <GridPaper>
16
+ <TableContainer>
17
+ <GridTable
18
+ gridTemplateColumns={getColumnTrackSizing(
19
+ table.getVisibleFlatColumns()
20
+ )}
21
+ >
22
+ <TableHead
23
+ rowDirection={ROW_DIRECTION.DEFAULT}
24
+ tableInstance={table}
25
+ />
26
+ <TableBody
27
+ rowDirection={ROW_DIRECTION.DEFAULT}
28
+ tableInstance={table}
29
+ />
30
+ </GridTable>
31
+ </TableContainer>
32
+ </GridPaper>
33
+ </StyledRoundedPaper>
34
+ );
35
+ };
@@ -0,0 +1,6 @@
1
+ import { Table } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../common/entities";
3
+
4
+ export interface TableProps {
5
+ table: Table<Attribute>;
6
+ }
@@ -0,0 +1,8 @@
1
+ import { styled } from "@mui/material";
2
+
3
+ export const View = styled("div")`
4
+ flex: 1;
5
+ margin: 0 auto;
6
+ max-width: calc(100vw - 48px);
7
+ padding: 24px 0;
8
+ `;
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import { BaseComponentProps } from "../types";
3
+ import { Entities } from "./components/Entities/entities";
4
+ import { View } from "./dataDictionary.styles";
5
+ import { useDataDictionary } from "./hooks/UseDataDictionary/hook";
6
+
7
+ export const DataDictionary = ({
8
+ className,
9
+ }: BaseComponentProps): JSX.Element => {
10
+ const { classes } = useDataDictionary();
11
+ return (
12
+ <View className={className}>
13
+ <Entities classes={classes} />
14
+ </View>
15
+ );
16
+ };
@@ -0,0 +1,9 @@
1
+ import { useConfig } from "../../../../hooks/useConfig";
2
+ import { UseDataDictionary } from "./types";
3
+
4
+ export const useDataDictionary = (): UseDataDictionary => {
5
+ const {
6
+ config: { dataDictionary: { classes = [] } = {} },
7
+ } = useConfig();
8
+ return { classes };
9
+ };
@@ -0,0 +1,5 @@
1
+ import { Class } from "../../../../common/entities";
2
+
3
+ export interface UseDataDictionary {
4
+ classes: Class[];
5
+ }
@@ -1,17 +1,25 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
+ import { CollaboratingOrganizations } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations";
3
4
  import { CollaboratingOrganizationsStory } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories";
5
+ import { Contacts } from "../Project/components/Contacts/contacts";
4
6
  import { ContactsStory } from "../Project/components/Contacts/contacts.stories";
7
+ import { Contributors } from "../Project/components/Contributors/contributors";
5
8
  import { ContributorsStory } from "../Project/components/Contributors/contributors.stories";
9
+ import { DataCurators } from "../Project/components/DataCurators/dataCurators";
6
10
  import { DataCuratorsStory } from "../Project/components/DataCurators/dataCurators.stories";
7
- import { DataReleasePolicyStory } from "../Project/components/DataReleasePolicy/dataReleasePolicy.stories";
11
+ import { DataReleasePolicy } from "../Project/components/DataReleasePolicy/dataReleasePolicy";
12
+ import { Description } from "../Project/components/Description/description";
8
13
  import { DescriptionStory } from "../Project/components/Description/description.stories";
14
+ import { Details } from "../Project/components/Details/details";
9
15
  import { DetailsStory } from "../Project/components/Details/details.stories";
16
+ import { Publications } from "../Project/components/Publications/publications";
10
17
  import { PublicationsStory } from "../Project/components/Publications/publications.stories";
18
+ import { SupplementaryLinks } from "../Project/components/SupplementaryLinks/supplementaryLinks";
11
19
  import { SupplementaryLinksStory } from "../Project/components/SupplementaryLinks/supplementaryLinks.stories";
12
20
  import { Detail } from "./detail";
13
21
 
14
- export default {
22
+ const meta = {
15
23
  argTypes: {
16
24
  Tabs: { table: { disable: true } },
17
25
  isDetailOverview: { control: "boolean" },
@@ -24,39 +32,36 @@ export default {
24
32
  layout: "fullscreen",
25
33
  },
26
34
  title: "Views/EntityDetailView",
27
- } as ComponentMeta<typeof Detail>;
35
+ } satisfies Meta<typeof Detail>;
28
36
 
29
- const DetailTemplate: ComponentStory<typeof Detail> = (args) => (
30
- <Detail {...args} />
31
- );
37
+ export default meta;
32
38
 
33
- export const DetailStory = DetailTemplate.bind({});
34
- DetailStory.args = {
35
- isDetailOverview: true,
36
- mainColumn: (
37
- <>
38
- <DescriptionStory
39
- projectDescription={DescriptionStory.args?.projectDescription || "None"}
40
- />
41
- <ContactsStory {...ContactsStory.args} />
42
- <PublicationsStory {...PublicationsStory.args} />
43
- <ContributorsStory {...ContributorsStory.args} />
44
- <CollaboratingOrganizationsStory
45
- {...CollaboratingOrganizationsStory.args}
46
- />
47
- <DataCuratorsStory {...DataCuratorsStory.args} />
48
- {/*<CitationStory {...CitationStory.args} />*/}
49
- <SupplementaryLinksStory {...SupplementaryLinksStory.args} />
50
- <DataReleasePolicyStory />
51
- </>
52
- ),
53
- sideColumn: (
54
- <>
55
- <DetailsStory
56
- keyValuePairs={DetailsStory.args?.keyValuePairs}
57
- title={DetailsStory.args?.title ?? ""}
58
- />
59
- </>
60
- ),
61
- top: <></>,
39
+ type Story = StoryObj<typeof meta>;
40
+
41
+ export const DetailStory: Story = {
42
+ args: {
43
+ isDetailOverview: true,
44
+ mainColumn: (
45
+ <>
46
+ <Description
47
+ projectDescription={
48
+ DescriptionStory.args.projectDescription || "None"
49
+ }
50
+ />
51
+ <Contacts {...ContactsStory.args} />
52
+ <Publications {...PublicationsStory.args} />
53
+ <Contributors {...ContributorsStory.args} />
54
+ <CollaboratingOrganizations {...CollaboratingOrganizationsStory.args} />
55
+ <DataCurators {...DataCuratorsStory.args} />
56
+ <SupplementaryLinks {...SupplementaryLinksStory.args} />
57
+ <DataReleasePolicy />
58
+ </>
59
+ ),
60
+ sideColumn: (
61
+ <>
62
+ <Details {...DetailsStory.args} />
63
+ </>
64
+ ),
65
+ top: <></>,
66
+ },
62
67
  };
@@ -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 { ExportMethod } from "./exportMethod";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  argTypes: {
7
6
  buttonLabel: { control: "text" },
8
7
  description: { control: "text" },
@@ -11,16 +10,17 @@ export default {
11
10
  },
12
11
  component: ExportMethod,
13
12
  title: "Components/Section/Export/ExportMethod",
14
- } as ComponentMeta<typeof ExportMethod>;
13
+ } satisfies Meta<typeof ExportMethod>;
15
14
 
16
- const ExportMethodTemplate: ComponentStory<typeof ExportMethod> = (args) => (
17
- <ExportMethod {...args} />
18
- );
15
+ export default meta;
19
16
 
20
- export const ExportMethodStory = ExportMethodTemplate.bind({});
21
- ExportMethodStory.args = {
22
- buttonLabel: "Request curl Command",
23
- description: "Obtain a curl command for downloading the selected data.",
24
- route: "/request-curl-command",
25
- title: "Download Study Data and Metadata (Curl Command)",
17
+ type Story = StoryObj<typeof meta>;
18
+
19
+ export const ExportMethodStory: Story = {
20
+ args: {
21
+ buttonLabel: "Request curl Command",
22
+ description: "Obtain a curl command for downloading the selected data.",
23
+ route: "/request-curl-command",
24
+ title: "Download Study Data and Metadata (Curl Command)",
25
+ },
26
26
  };
@@ -1,8 +1,8 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { Filter } from "./filter";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  argTypes: {
7
7
  tags: { control: { disable: true } },
8
8
  },
@@ -15,37 +15,38 @@ export default {
15
15
  ),
16
16
  ],
17
17
  title: "Components/Filter/Filter",
18
- } as ComponentMeta<typeof Filter>;
18
+ } satisfies Meta<typeof Filter>;
19
19
 
20
- const FilterTemplate: ComponentStory<typeof Filter> = (args) => (
21
- <Filter {...args} />
22
- );
20
+ export default meta;
21
+
22
+ type Story = StoryObj<typeof meta>;
23
23
 
24
24
  const onFilter = (): void => {
25
25
  // onFilter function
26
26
  };
27
27
 
28
- export const FilterStory = FilterTemplate.bind({});
29
- FilterStory.args = {
30
- categoryView: {
31
- isDisabled: false,
32
- key: "genusSpecies",
33
- label: "Genus Species",
34
- values: [
35
- {
36
- count: 12,
37
- key: "homoSapiens",
38
- label: "Homo sapiens",
39
- selected: false,
40
- },
41
- {
42
- count: 6,
43
- key: "musMusculus",
44
- label: "Mus musculus",
45
- selected: false,
46
- },
47
- ],
28
+ export const FilterStory: Story = {
29
+ args: {
30
+ categoryView: {
31
+ isDisabled: false,
32
+ key: "genusSpecies",
33
+ label: "Genus Species",
34
+ values: [
35
+ {
36
+ count: 12,
37
+ key: "homoSapiens",
38
+ label: "Homo sapiens",
39
+ selected: false,
40
+ },
41
+ {
42
+ count: 6,
43
+ key: "musMusculus",
44
+ label: "Mus musculus",
45
+ selected: false,
46
+ },
47
+ ],
48
+ },
49
+ isFilterDrawer: false,
50
+ onFilter,
48
51
  },
49
- isFilterDrawer: false,
50
- onFilter,
51
52
  };
@@ -1,8 +1,8 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { FilterLabel } from "./filterLabel";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  argTypes: {
7
7
  count: { control: "number" },
8
8
  disabled: { control: "boolean" },
@@ -18,16 +18,18 @@ export default {
18
18
  ),
19
19
  ],
20
20
  title: "Components/Filter/FilterLabel",
21
- } as ComponentMeta<typeof FilterLabel>;
21
+ } satisfies Meta<typeof FilterLabel>;
22
22
 
23
- const FilterLabelTemplate: ComponentStory<typeof FilterLabel> = (args) => (
24
- <FilterLabel {...args} />
25
- );
23
+ export default meta;
26
24
 
27
- export const FilterLabelStory = FilterLabelTemplate.bind({});
28
- FilterLabelStory.args = {
29
- count: 123,
30
- disabled: false,
31
- isOpen: false,
32
- label: "Label",
25
+ type Story = StoryObj<typeof meta>;
26
+
27
+ export const FilterLabelStory: Story = {
28
+ args: {
29
+ count: 123,
30
+ disabled: false,
31
+ isOpen: false,
32
+ label: "Label",
33
+ onClick: () => {},
34
+ },
33
35
  };