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 }, );