diff --git a/src/Components/Tab/index.jsx b/src/Components/Tab/index.jsx new file mode 100644 index 000000000..97bb25c7f --- /dev/null +++ b/src/Components/Tab/index.jsx @@ -0,0 +1,36 @@ +import { Box, useTheme } from "@mui/material"; +import { TabList } from "@mui/lab"; +import PropTypes from "prop-types"; + +/** + * CustomTabList component + * @param {string} value - The currently selected tab's value. + * @param {function} onChange - Callback when a different tab is selected. + * @param {React.ReactNode} children - Tab components to render inside the TabList. + * @param {object} props - Additional props passed to the TabList component. + */ + +const CustomTabList = ({ value, onChange, children, ...props }) => { + const theme = useTheme(); + + return ( + + + {children} + + + ); +}; + +CustomTabList.propTypes = { + value: PropTypes.string, + onChange: PropTypes.func, + children: PropTypes.node, +}; + +export default CustomTabList; diff --git a/src/Pages/Account/index.jsx b/src/Pages/Account/index.jsx index 48b0984f5..c3e2be2f1 100644 --- a/src/Pages/Account/index.jsx +++ b/src/Pages/Account/index.jsx @@ -3,8 +3,8 @@ import PropTypes from "prop-types"; import { useNavigate } from "react-router"; import { useSelector } from "react-redux"; import { Box, Tab, useTheme } from "@mui/material"; +import CustomTabList from "../../Components/Tab"; import TabContext from "@mui/lab/TabContext"; -import TabList from "@mui/lab/TabList"; import ProfilePanel from "../../Components/TabPanels/Account/ProfilePanel"; import PasswordPanel from "../../Components/TabPanels/Account/PasswordPanel"; import TeamPanel from "../../Components/TabPanels/Account/TeamPanel"; @@ -59,29 +59,18 @@ const Account = ({ open = "profile" }) => { py={theme.spacing(12)} > - - - {tabList.map((label, index) => ( - handleFocus(label.toLowerCase())} - tabIndex={index} - /> - ))} - - + + {tabList.map((label, index) => ( + handleFocus(label.toLowerCase())} + tabIndex={index} + /> + ))} + {user.role.includes("superadmin") && } {!hideTeams && } diff --git a/src/Pages/StatusPage/Create/Components/Tabs/index.jsx b/src/Pages/StatusPage/Create/Components/Tabs/index.jsx index da2da9acf..5f5433bb6 100644 --- a/src/Pages/StatusPage/Create/Components/Tabs/index.jsx +++ b/src/Pages/StatusPage/Create/Components/Tabs/index.jsx @@ -1,11 +1,12 @@ // Components -import { TabContext, TabList } from "@mui/lab"; -import { Box, Tab, useTheme } from "@mui/material"; +import { TabContext } from "@mui/lab"; +import { Tab, useTheme } from "@mui/material"; import Settings from "./Settings"; import Content from "./Content"; // Utils import PropTypes from "prop-types"; +import CustomTabList from "../../../../../Components/Tab"; const Tabs = ({ isCreate, @@ -26,28 +27,20 @@ const Tabs = ({ const theme = useTheme(); return ( - { + setTab(TAB_LIST.indexOf(selected)); }} + aria-label="status page tabs" > - { - setTab(TAB_LIST.indexOf(tab)); - }} - > - {TAB_LIST.map((tab, idx) => { - return ( - - ); - })} - - + {TAB_LIST.map((tabLabel, idx) => ( + + ))} + {tab === 0 ? ( ({ root: ({ theme }) => ({ fontSize: theme.typography.fontSize - 1, color: theme.palette.tertiary.contrastText, - backgroundColor: theme.palette.primary.main, height: '34px', minHeight: '34px', borderRadius: 0, @@ -376,21 +375,13 @@ const baseTheme = (palette) => ({ minWidth: "fit-content", padding: `${theme.spacing(6)}px ${theme.spacing(4)}px`, fontWeight: 400, - borderBottom: `${theme.shape.borderThick}px solid transparent`, - borderRight: `${theme.shape.borderRadius / 2}px solid ${theme.palette.primary.lowContrast}`, - "&:first-of-type": { borderTopLeftRadius: theme.shape.borderRadius * 4 }, - "&:last-child": { borderTopRightRadius: theme.shape.borderRadius * 4, borderRight: 0 }, "&:focus-visible": { color: theme.palette.primary.contrastText, borderColor: theme.palette.tertiary.contrastText, borderRightColor: theme.palette.primary.lowContrast, }, "&.Mui-selected": { - backgroundColor: theme.palette.secondary.main, color: theme.palette.secondary.contrastText, - borderColor: theme.palette.secondary.contrastText, - borderRightColor: theme.palette.primary.lowContrast, - borderRadius: 0, }, "&:hover": { borderColor: theme.palette.primary.lowContrast, @@ -442,11 +433,7 @@ const baseTheme = (palette) => ({ styleOverrides: { root: ({ theme }) => ({ display: 'inline-flex', - borderTop: '1px solid', - borderLeft: '1px solid', - borderRight: '1px solid', - borderColor: theme.palette.primary.lowContrast, - borderRadius: `${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0 0`, + borderRadius: 0, "& .MuiTabs-indicator": { backgroundColor: theme.palette.tertiary.contrastText, },