diff --git a/Client/src/Components/Link/index.css b/Client/src/Components/Link/index.css new file mode 100644 index 000000000..e69de29bb diff --git a/Client/src/Components/Link/index.jsx b/Client/src/Components/Link/index.jsx new file mode 100644 index 000000000..e8d26a7c7 --- /dev/null +++ b/Client/src/Components/Link/index.jsx @@ -0,0 +1,47 @@ +import { Link as MuiLink, useTheme } from "@mui/material"; +import PropTypes from "prop-types"; + +const Link = ({ level, label, url }) => { + const theme = useTheme(); + + const levelConfig = { + primary: {}, + secondary: {}, + tertiary: { + color: theme.palette.tertiary.main, + sx: { + textDecoration: "underline", + textDecorationStyle: "dashed", + textDecorationColor: theme.palette.primary.main, + ":hover": { + color: theme.palette.tertiary.main, + textDecorationColor: theme.palette.primary.main, + backgroundColor: theme.palette.tertiary.linkHover, + }, + }, + }, + error: {}, + }; + + /** + * @typedef {Object} Props + * @property {'primary' | 'secondary' | 'tertiary' | 'error'} level - The level of the link + * @property {string} label - The label of the link + * @property {string} url - The URL of the link + */ + + const { sx, color } = levelConfig[level]; + return ( + + {label} + + ); +}; + +Link.propTypes = { + url: PropTypes.string.isRequired, + level: PropTypes.oneOf(["primary", "secondary", "tertiary", "error"]), + label: PropTypes.string.isRequired, +}; + +export default Link; diff --git a/Client/src/Pages/Home/index.jsx b/Client/src/Pages/Home/index.jsx index 40e062399..b3f9b7207 100644 --- a/Client/src/Pages/Home/index.jsx +++ b/Client/src/Pages/Home/index.jsx @@ -1,6 +1,7 @@ import DropdownTeamMember from "../../Components/DropdownTeamMember"; import "./index.css"; import Button from "../../Components/Button"; +import Link from "../../Components/Link"; import ColoredLabel from "../../Components/Label/ColoredLabel"; import { useTheme } from "@mui/material"; import StatusLabel from "../../Components/Label/StautsLabel"; @@ -26,6 +27,13 @@ const Home = () => {