diff --git a/app/src/components/Card.js b/app/src/components/Card.js
index 8ea47064..562da836 100644
--- a/app/src/components/Card.js
+++ b/app/src/components/Card.js
@@ -7,8 +7,6 @@ import { useTheme } from "@mui/material/styles";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import NextLink from "next/link";
-import Chip from "../components/Chip";
-
import {
Button,
Card as MuiCard,
@@ -21,8 +19,13 @@ import {
ListItemText as MuiListItemText,
Typography as MuiTypography,
useMediaQuery,
+ IconButton,
+ Chip as MuiChip,
+ Snackbar,
} from "@mui/material";
+import { faXmark } from "@fortawesome/free-solid-svg-icons";
+
const Card = styled(MuiCard)`
${spacing};
position: relative;
@@ -76,19 +79,6 @@ const ListIcon = styled(FontAwesomeIcon)`
margin-right: 10;
`;
-const CardItem = ({ link, icon, color, text }) => {
- return (
-
-
-
-
-
- {text}
-
-
- );
-};
-
const TitleIcon = styled(FontAwesomeIcon)`
padding-right: 15px;
`;
@@ -107,6 +97,91 @@ const ButtonImage = styled.img`
}
`;
+const Chip = styled(MuiChip)`
+ padding: 4px 4px;
+ margin-right: 16px;
+ margin-bottom: 16px;
+ font-size: 100%;
+`;
+
+const CardItem = ({ link, icon, color, text }) => {
+ return (
+
+
+
+
+
+ {text}
+
+
+ );
+};
+
+export const ActionChip = ({
+ link,
+ icon,
+ text,
+ target,
+ copytext,
+ copymessage,
+}) => {
+ const [open, setOpen] = React.useState(false);
+
+ const handleClick = () => {
+ setOpen(true);
+ };
+
+ const handleClose = (even, reason) => {
+ if (reason === "clickaway") {
+ return;
+ }
+ setOpen(false);
+ };
+
+ const action = (
+
+
+
+
+
+ );
+
+ const copyText = (text) => {
+ if (text !== undefined) {
+ navigator.clipboard.writeText(text);
+ setOpen(true);
+ }
+ };
+
+ return (
+
+ }
+ component="a"
+ href={link}
+ label={text}
+ target={target}
+ onClick={() => copyText(copytext)}
+ clickable
+ color="primary"
+ //variant="outlined"
+ />
+
+
+ );
+};
+
const InfoCard = ({ info }) => {
const theme = useTheme();
const { t } = useTranslation();
@@ -160,7 +235,7 @@ const InfoCard = ({ info }) => {
))}
{info.chips?.map((chip, i) => (
- {
- const [open, setOpen] = React.useState(false);
-
- const handleClick = () => {
- setOpen(true);
- };
-
- const handleClose = (even, reason) => {
- if (reason === "clickaway") {
- return;
- }
- setOpen(false);
- };
-
- const action = (
-
-
-
-
-
- );
-
- const copyText = (text) => {
- if (text !== undefined) {
- navigator.clipboard.writeText(text);
- setOpen(true);
- }
- };
-
- return (
-
- }
- component="a"
- href={link}
- label={text}
- target={target}
- onClick={() => copyText(copytext)}
- clickable
- color="primary"
- //variant="outlined"
- />
-
-
- );
-};
-
-export default ContactChip;
diff --git a/app/src/components/MetaItems.js b/app/src/components/MetaItems.js
index 10219cea..aefe27a9 100644
--- a/app/src/components/MetaItems.js
+++ b/app/src/components/MetaItems.js
@@ -14,6 +14,7 @@ import {
faFlag,
faHeart,
faIdBadge,
+ faQuestion,
faStar,
faTable,
faThumbsDown,
diff --git a/app/src/components/Property.js b/app/src/components/Property.js
new file mode 100644
index 00000000..337e35c8
--- /dev/null
+++ b/app/src/components/Property.js
@@ -0,0 +1,27 @@
+import React from "react";
+import styled from "@emotion/styled";
+import { Tooltip } from "@mui/material";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+
+const Icon = styled(FontAwesomeIcon)`
+ padding-right: 0.5em;
+`;
+
+const Property = ({ label, value, color, icon }) => {
+ return (
+
+
+ {icon && }
+ {value}
+
+
+ );
+};
+
+export default Property;
diff --git a/app/src/components/pages/apis/SwaggerUI.js b/app/src/components/apis/SwaggerUI.js
similarity index 100%
rename from app/src/components/pages/apis/SwaggerUI.js
rename to app/src/components/apis/SwaggerUI.js
diff --git a/app/src/components/pages/apis/javaCodeExamples.js b/app/src/components/apis/javaCodeExamples.js
similarity index 100%
rename from app/src/components/pages/apis/javaCodeExamples.js
rename to app/src/components/apis/javaCodeExamples.js
diff --git a/app/src/components/pages/apis/juliaCodeExamples.js b/app/src/components/apis/juliaCodeExamples.js
similarity index 100%
rename from app/src/components/pages/apis/juliaCodeExamples.js
rename to app/src/components/apis/juliaCodeExamples.js
diff --git a/app/src/components/pages/apis/pythonCodeExamples.js b/app/src/components/apis/pythonCodeExamples.js
similarity index 100%
rename from app/src/components/pages/apis/pythonCodeExamples.js
rename to app/src/components/apis/pythonCodeExamples.js
diff --git a/app/src/components/pages/apis/rCodeExamples.js b/app/src/components/apis/rCodeExamples.js
similarity index 100%
rename from app/src/components/pages/apis/rCodeExamples.js
rename to app/src/components/apis/rCodeExamples.js
diff --git a/app/src/components/pages/data/CroissantMetaData.js b/app/src/components/data/CroissantMetaData.js
similarity index 100%
rename from app/src/components/pages/data/CroissantMetaData.js
rename to app/src/components/data/CroissantMetaData.js
diff --git a/app/src/components/pages/data/FeatureTable.js b/app/src/components/data/FeatureTable.js
similarity index 100%
rename from app/src/components/pages/data/FeatureTable.js
rename to app/src/components/data/FeatureTable.js
diff --git a/app/src/components/pages/data/QualityTable.js b/app/src/components/data/QualityTable.js
similarity index 100%
rename from app/src/components/pages/data/QualityTable.js
rename to app/src/components/data/QualityTable.js
diff --git a/app/src/components/pages/flow/DependencyTable.js b/app/src/components/flow/DependencyTable.js
similarity index 100%
rename from app/src/components/pages/flow/DependencyTable.js
rename to app/src/components/flow/DependencyTable.js
diff --git a/app/src/components/pages/flow/ParameterTable.js b/app/src/components/flow/ParameterTable.js
similarity index 100%
rename from app/src/components/pages/flow/ParameterTable.js
rename to app/src/components/flow/ParameterTable.js
diff --git a/app/src/components/pages/landing/FAQ.js b/app/src/components/landing/FAQ.js
similarity index 100%
rename from app/src/components/pages/landing/FAQ.js
rename to app/src/components/landing/FAQ.js
diff --git a/app/src/components/pages/landing/Integrations.js b/app/src/components/landing/Integrations.js
similarity index 100%
rename from app/src/components/pages/landing/Integrations.js
rename to app/src/components/landing/Integrations.js
diff --git a/app/src/components/pages/landing/Introduction.js b/app/src/components/landing/Introduction.js
similarity index 100%
rename from app/src/components/pages/landing/Introduction.js
rename to app/src/components/landing/Introduction.js
diff --git a/app/src/components/pages/landing/Lifecycle.js b/app/src/components/landing/Lifecycle.js
similarity index 94%
rename from app/src/components/pages/landing/Lifecycle.js
rename to app/src/components/landing/Lifecycle.js
index 0ccb913d..0a017dbd 100644
--- a/app/src/components/pages/landing/Lifecycle.js
+++ b/app/src/components/landing/Lifecycle.js
@@ -4,7 +4,7 @@ import { useTranslation } from "next-i18next";
import { spacing } from "@mui/system";
import { Grid, Container, Typography } from "@mui/material";
-import InfoCard from "../../Card";
+import InfoCard from "../Card";
import { faCogs, faDatabase, faFlask } from "@fortawesome/free-solid-svg-icons";
import { purple, blue, red, yellow, green, orange } from "@mui/material/colors";
diff --git a/app/src/components/pages/landing/Testimonial.js b/app/src/components/landing/Testimonial.js
similarity index 100%
rename from app/src/components/pages/landing/Testimonial.js
rename to app/src/components/landing/Testimonial.js
diff --git a/app/src/pages/about.js b/app/src/pages/about.js
index eeb5e045..8ff61ba6 100644
--- a/app/src/pages/about.js
+++ b/app/src/pages/about.js
@@ -53,7 +53,7 @@ import {
} from "@fortawesome/free-brands-svg-icons";
import { purple, blue, red, green, pink, grey } from "@mui/material/colors";
-import Chip from "../components/Chip";
+import { ActionChip } from "../components/Card";
// Server-side translation
import { useTranslation } from "next-i18next";
@@ -501,7 +501,7 @@ function About() {
-
@@ -173,52 +246,26 @@ function Dataset({ data, error }) {
-
+
-
+
{data.name}
+
-
-
-
-
+
+ {/* Left-aligned Properties */}
-
-
-
-
-
-
-
-
-
- {data.date.split(" ")[0]}
+ {dataProps1.map((tag) => (
+
+ ))}
+
+ {/* Right-aligned Version Chip */}
-
-
-
-
}
- href={
- "search?type=data&sort=version&status=any&order=asc&exact_name=" +
- data.name
- }
+ href={`search?type=data&sort=version&status=any&order=asc&exact_name=${data.name}`}
component="a"
clickable
/>
-
+ {/* User Chip and Second Row of Properties */}
+
}
label={data.uploader}
- href={"search?type=user&id=" + data.uploader_id}
+ href={`search?type=user&id=${data.uploader_id}`}
component="a"
clickable
/>
-
-
-
-
-
-
-
+ {dataProps2.map((tag) => (
+
+ ))}
-
-
- {/* Tags */}
-
-
- {" "}
- {data.tags.map((element) =>
- element.tag.toString().startsWith("study") ? (
- ""
- ) : (
- updateTag(element.tag)}
- />
- ),
- )}
+ {/* Tags */}
+
+
+
+ {data.tags.map(
+ (element) =>
+ !element.tag.toString().startsWith("study") && (
+ updateTag(element.tag)}
+ />
+ ),
+ )}
+
+
diff --git a/app/src/pages/f/[flowId].js b/app/src/pages/f/[flowId].js
index 7ca37e33..f74309b6 100644
--- a/app/src/pages/f/[flowId].js
+++ b/app/src/pages/f/[flowId].js
@@ -18,8 +18,8 @@ import { CollapsibleDataTable, StringLimiter } from "../api/sizeLimiter";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faCogs, faTags } from "@fortawesome/free-solid-svg-icons";
import Wrapper from "../../components/Wrapper";
-import DependencyTable from "../../components/pages/flow/DependencyTable";
-import ParameterTable from "../../components/pages/flow/ParameterTable";
+import DependencyTable from "../../components/flow/DependencyTable";
+import ParameterTable from "../../components/flow/ParameterTable";
export async function getStaticPaths() {
// No paths are pre-rendered
diff --git a/app/src/pages/index.js b/app/src/pages/index.js
index 033e2f17..ced60934 100644
--- a/app/src/pages/index.js
+++ b/app/src/pages/index.js
@@ -4,9 +4,9 @@ import { useTranslation } from "next-i18next";
import DashboardLayout from "../layouts/Dashboard";
import { Helmet } from "react-helmet-async";
-import Integrations from "../components/pages/landing/Integrations";
-import Lifecycle from "../components/pages/landing/Lifecycle";
-import FAQ from "../components/pages/landing/FAQ";
+import Integrations from "../components/landing/Integrations";
+import Lifecycle from "../components/landing/Lifecycle";
+import FAQ from "../components/landing/FAQ";
import Wrapper from "../components/Wrapper";
import { Grid } from "@mui/material";
@@ -25,7 +25,7 @@ export async function getStaticProps({ locale }) {
// Avoids a (dev-only) hydration warning for the svg diagram
import dynamic from "next/dynamic";
const Introduction = dynamic(
- () => import("../components/pages/landing/Introduction"),
+ () => import("../components/landing/Introduction"),
{ ssr: false },
);