Even cleaner header and auth pages

This commit is contained in:
2025-04-12 02:06:48 +02:00
parent b6f1e3eb8e
commit ab3947b4a9
3 changed files with 96 additions and 6 deletions

View File

@@ -8,6 +8,7 @@ import {
import CssBaseline from "@mui/material/CssBaseline"; import CssBaseline from "@mui/material/CssBaseline";
import GlobalStyles from "@mui/material/GlobalStyles"; import GlobalStyles from "@mui/material/GlobalStyles";
import { ThemeProvider } from "@mui/material/styles"; import { ThemeProvider } from "@mui/material/styles";
import HistoryEduIcon from '@mui/icons-material/HistoryEdu';
import routerBindings, { import routerBindings, {
CatchAllNavigate, CatchAllNavigate,
DocumentTitleHandler, DocumentTitleHandler,
@@ -40,6 +41,10 @@ function App() {
notificationProvider={useNotificationProvider} notificationProvider={useNotificationProvider}
routerProvider={routerBindings} routerProvider={routerBindings}
options={{ options={{
title: {
text: "Roleplay Contracts",
icon: <HistoryEduIcon />
},
syncWithLocation: true, syncWithLocation: true,
warnWhenUnsavedChanges: true, warnWhenUnsavedChanges: true,
useNewQueryKeys: true, useNewQueryKeys: true,
@@ -72,13 +77,13 @@ function App() {
<Route path="hub/*" element={<HubRoutes />} /> <Route path="hub/*" element={<HubRoutes />} />
<Route path="firm/*" element={<FirmRoutes />} /> <Route path="firm/*" element={<FirmRoutes />} />
</Route> </Route>
<Route path="auth/*" element={<><Header /><Outlet /></>}> <Route path="auth/*" element={<Outlet />}>
<Route path="login" element={<Login />} /> <Route path="login" element={<Login />} />
<Route path="register" element={<Register />} /> <Route path="register" element={<Register />} />
<Route path="forgot-password" element={<ForgotPassword />} /> <Route path="forgot-password" element={<ForgotPassword />} />
<Route path="update-password" element={<UpdatePassword />} /> <Route path="update-password" element={<UpdatePassword />} />
</Route> </Route>
<Route index element={<><Header /><h1>HOME&nbsp;</h1></>} /> <Route index element={<><Header /><h1>HOME</h1></>} />
</Routes> </Routes>
<UnsavedChangesNotifier /> <UnsavedChangesNotifier />
<DocumentTitleHandler /> <DocumentTitleHandler />

View File

@@ -2,7 +2,12 @@ import { AuthPage } from "@refinedev/mui";
import GoogleIcon from "@mui/icons-material/Google"; import GoogleIcon from "@mui/icons-material/Google";
import DiscordIcon from "../../components/DiscordIcon"; import DiscordIcon from "../../components/DiscordIcon";
import { useSearchParams, Navigate } from "react-router"; import {useSearchParams, Navigate, Link} from "react-router";
import MuiLink from "@mui/material/Link";
import * as React from "react";
import Typography from "@mui/material/Typography";
import Box from "@mui/material/Box";
import Stack from "@mui/material/Stack";
export const Login = () => { export const Login = () => {
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
@@ -16,6 +21,7 @@ export const Login = () => {
<AuthPage <AuthPage
type="login" type="login"
formProps={{ defaultValues: { email: "test@test.te", password: "test" }, }} formProps={{ defaultValues: { email: "test@test.te", password: "test" }, }}
rememberMe={false}
providers={[{ providers={[{
name: "google", name: "google",
label: "Sign in with Google", label: "Sign in with Google",
@@ -27,6 +33,58 @@ export const Login = () => {
icon: (<DiscordIcon style={{ fontSize: 24, }} />), icon: (<DiscordIcon style={{ fontSize: 24, }} />),
}, },
]} ]}
forgotPasswordLink={
<Stack
sx={{
direction: "row",
display: "flex",
justifyContent: "flex-end",
alignItems: "center",
}}
>
<MuiLink
variant="body2"
color="primary"
fontSize="12px"
component={Link}
underline="none"
to="/auth/forgot-password"
>
Forgot password?
</MuiLink>
</Stack>
}
registerLink={
<Box
sx={{
mt: "24px",
display: "flex",
justifyContent: "center",
alignItems: "center",
}}
>
<Typography
textAlign="center"
variant="body2"
component="span"
fontSize="12px"
>
Dont have an account?
</Typography>
<MuiLink
ml="4px"
fontSize="12px"
variant="body2"
color="primary"
component={Link}
underline="none"
to="/auth/register"
fontWeight="bold"
>
Sign up
</MuiLink>
</Box>
}
/> />
); );
}; };

View File

@@ -1,5 +1,6 @@
import DarkModeOutlined from "@mui/icons-material/DarkModeOutlined"; import DarkModeOutlined from "@mui/icons-material/DarkModeOutlined";
import LightModeOutlined from "@mui/icons-material/LightModeOutlined"; import LightModeOutlined from "@mui/icons-material/LightModeOutlined";
import BusinessIcon from '@mui/icons-material/Business';
import HubIcon from '@mui/icons-material/Hub'; import HubIcon from '@mui/icons-material/Hub';
import { Button, Menu, MenuItem } from "@mui/material"; import { Button, Menu, MenuItem } from "@mui/material";
import AppBar from "@mui/material/AppBar"; import AppBar from "@mui/material/AppBar";
@@ -11,15 +12,17 @@ import Typography from "@mui/material/Typography";
import React, { useContext } from "react"; import React, { useContext } from "react";
import { Link } from "react-router"; import { Link } from "react-router";
import { useGetIdentity } from "@refinedev/core"; import { useGetIdentity } from "@refinedev/core";
import { HamburgerMenu, RefineThemedLayoutV2HeaderProps } from "@refinedev/mui"; import { HamburgerMenu, RefineThemedLayoutV2HeaderProps, ThemedTitleV2 } from "@refinedev/mui";
import { ColorModeContext } from "../../contexts/color-mode"; import { ColorModeContext } from "../../contexts/color-mode";
import { FirmContext } from "../../contexts/FirmContext"; import { FirmContext } from "../../contexts/FirmContext";
import { Logout } from "../auth/Logout"; import { Logout } from "../auth/Logout";
import { IUser } from "../../interfaces"; import { IUser } from "../../interfaces";
import MuiLink from "@mui/material/Link";
export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
sticky = true, sticky = true,
}) => { }) => {
const collapsed = false;
const { mode, setMode } = useContext(ColorModeContext); const { mode, setMode } = useContext(ColorModeContext);
const { currentFirm } = useContext(FirmContext); const { currentFirm } = useContext(FirmContext);
@@ -45,10 +48,34 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
> >
<HamburgerMenu /> <HamburgerMenu />
{currentFirm && ( {currentFirm && (
<Link to={`/firm/${currentFirm.instance}/${currentFirm.firm}`} ><Typography variant="h4" >{currentFirm.instance}&nbsp;/&nbsp;{currentFirm.firm}</Typography></Link> <MuiLink
to={`/firm/${currentFirm.instance}/${currentFirm.firm}`}
component={Link}
underline="none"
sx={{
display: "flex",
alignItems: "center",
gap: "12px",
}}
>
<BusinessIcon height="24px" width="24px" color="primary" />
{!collapsed && (
<Typography
variant="h6"
fontWeight={700}
color="text.primary"
fontSize="inherit"
textOverflow="ellipsis"
overflow="hidden"
>
{currentFirm.instance}&nbsp;/&nbsp;{currentFirm.firm}
</Typography>
)}
</MuiLink>
)} )}
{!currentFirm && ( {!currentFirm && (
<Link to="/" ><Typography variant="h4">Roleplay&nbsp;Contracts</Typography></Link> <ThemedTitleV2 collapsed={collapsed}/>
)} )}
{(user?.email) && ( {(user?.email) && (
<Link to="/hub"><HubIcon /></Link> <Link to="/hub"><HubIcon /></Link>