Add login page layout
This commit is contained in:
		
							
								
								
									
										28
									
								
								geneit_app/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										28
									
								
								geneit_app/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -11,6 +11,8 @@
 | 
				
			|||||||
        "@emotion/react": "^11.11.0",
 | 
					        "@emotion/react": "^11.11.0",
 | 
				
			||||||
        "@emotion/styled": "^11.11.0",
 | 
					        "@emotion/styled": "^11.11.0",
 | 
				
			||||||
        "@fontsource/roboto": "^5.0.2",
 | 
					        "@fontsource/roboto": "^5.0.2",
 | 
				
			||||||
 | 
					        "@mdi/js": "^7.2.96",
 | 
				
			||||||
 | 
					        "@mdi/react": "^1.6.1",
 | 
				
			||||||
        "@mui/icons-material": "^5.11.16",
 | 
					        "@mui/icons-material": "^5.11.16",
 | 
				
			||||||
        "@mui/material": "^5.13.4",
 | 
					        "@mui/material": "^5.13.4",
 | 
				
			||||||
        "@testing-library/jest-dom": "^5.16.5",
 | 
					        "@testing-library/jest-dom": "^5.16.5",
 | 
				
			||||||
@@ -3310,6 +3312,19 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
 | 
					      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/@mdi/js": {
 | 
				
			||||||
 | 
					      "version": "7.2.96",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.2.96.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-paR9M9ZT7rKbh2boksNUynuSZMHhqRYnEZOm/KrZTjQ4/FzyhjLHuvw/8XYzP+E7fS4+/Ms/82EN1pl/OFsiIA=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/@mdi/react": {
 | 
				
			||||||
 | 
					      "version": "1.6.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.6.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-4qZeDcluDFGFTWkHs86VOlHkm6gnKaMql13/gpIcUQ8kzxHgpj31NuCkD8abECVfbULJ3shc7Yt4HJ6Wu6SN4w==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "prop-types": "^15.7.2"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/@mui/base": {
 | 
					    "node_modules/@mui/base": {
 | 
				
			||||||
      "version": "5.0.0-beta.4",
 | 
					      "version": "5.0.0-beta.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.4.tgz",
 | 
				
			||||||
@@ -20005,6 +20020,19 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
 | 
					      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@mdi/js": {
 | 
				
			||||||
 | 
					      "version": "7.2.96",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.2.96.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-paR9M9ZT7rKbh2boksNUynuSZMHhqRYnEZOm/KrZTjQ4/FzyhjLHuvw/8XYzP+E7fS4+/Ms/82EN1pl/OFsiIA=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "@mdi/react": {
 | 
				
			||||||
 | 
					      "version": "1.6.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.6.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-4qZeDcluDFGFTWkHs86VOlHkm6gnKaMql13/gpIcUQ8kzxHgpj31NuCkD8abECVfbULJ3shc7Yt4HJ6Wu6SN4w==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "prop-types": "^15.7.2"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@mui/base": {
 | 
					    "@mui/base": {
 | 
				
			||||||
      "version": "5.0.0-beta.4",
 | 
					      "version": "5.0.0-beta.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.4.tgz",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,8 @@
 | 
				
			|||||||
    "@emotion/react": "^11.11.0",
 | 
					    "@emotion/react": "^11.11.0",
 | 
				
			||||||
    "@emotion/styled": "^11.11.0",
 | 
					    "@emotion/styled": "^11.11.0",
 | 
				
			||||||
    "@fontsource/roboto": "^5.0.2",
 | 
					    "@fontsource/roboto": "^5.0.2",
 | 
				
			||||||
 | 
					    "@mdi/js": "^7.2.96",
 | 
				
			||||||
 | 
					    "@mdi/react": "^1.6.1",
 | 
				
			||||||
    "@mui/icons-material": "^5.11.16",
 | 
					    "@mui/icons-material": "^5.11.16",
 | 
				
			||||||
    "@mui/material": "^5.13.4",
 | 
					    "@mui/material": "^5.13.4",
 | 
				
			||||||
    "@testing-library/jest-dom": "^5.16.5",
 | 
					    "@testing-library/jest-dom": "^5.16.5",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,93 @@
 | 
				
			|||||||
 | 
					import { mdiFamilyTree } from "@mdi/js";
 | 
				
			||||||
 | 
					import Icon from "@mdi/react";
 | 
				
			||||||
 | 
					import Avatar from "@mui/material/Avatar";
 | 
				
			||||||
 | 
					import Box from "@mui/material/Box";
 | 
				
			||||||
 | 
					import CssBaseline from "@mui/material/CssBaseline";
 | 
				
			||||||
 | 
					import Grid from "@mui/material/Grid";
 | 
				
			||||||
 | 
					import Link from "@mui/material/Link";
 | 
				
			||||||
 | 
					import Paper from "@mui/material/Paper";
 | 
				
			||||||
 | 
					import Typography from "@mui/material/Typography";
 | 
				
			||||||
 | 
					import * as React from "react";
 | 
				
			||||||
import { Outlet } from "react-router-dom";
 | 
					import { Outlet } from "react-router-dom";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function BaseLoginPage(): React.ReactElement {
 | 
					function Copyright(props: any) {
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <>
 | 
					    <Typography
 | 
				
			||||||
      <Outlet />
 | 
					      variant="body2"
 | 
				
			||||||
    </>
 | 
					      color="text.secondary"
 | 
				
			||||||
 | 
					      align="center"
 | 
				
			||||||
 | 
					      style={{ marginTop: "20px" }}
 | 
				
			||||||
 | 
					      {...props}
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      {"Copyright © "}
 | 
				
			||||||
 | 
					      <Link color="inherit" href="https://0ph.fr/" target="_blank">
 | 
				
			||||||
 | 
					        Pierre HUBERT
 | 
				
			||||||
 | 
					      </Link>{" "}
 | 
				
			||||||
 | 
					      {new Date().getFullYear()}
 | 
				
			||||||
 | 
					      {"."}
 | 
				
			||||||
 | 
					    </Typography>
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function BaseLoginPage() {
 | 
				
			||||||
 | 
					  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
 | 
				
			||||||
 | 
					    event.preventDefault();
 | 
				
			||||||
 | 
					    const data = new FormData(event.currentTarget);
 | 
				
			||||||
 | 
					    console.log({
 | 
				
			||||||
 | 
					      email: data.get("email"),
 | 
				
			||||||
 | 
					      password: data.get("password"),
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <Grid container component="main" sx={{ height: "100vh" }}>
 | 
				
			||||||
 | 
					      <CssBaseline />
 | 
				
			||||||
 | 
					      <Grid
 | 
				
			||||||
 | 
					        item
 | 
				
			||||||
 | 
					        xs={false}
 | 
				
			||||||
 | 
					        sm={4}
 | 
				
			||||||
 | 
					        md={7}
 | 
				
			||||||
 | 
					        sx={{
 | 
				
			||||||
 | 
					          backgroundImage: "url(/login_splash.jpg)",
 | 
				
			||||||
 | 
					          backgroundRepeat: "no-repeat",
 | 
				
			||||||
 | 
					          backgroundColor: (t) =>
 | 
				
			||||||
 | 
					            t.palette.mode === "light"
 | 
				
			||||||
 | 
					              ? t.palette.grey[50]
 | 
				
			||||||
 | 
					              : t.palette.grey[900],
 | 
				
			||||||
 | 
					          backgroundSize: "cover",
 | 
				
			||||||
 | 
					          backgroundPosition: "center",
 | 
				
			||||||
 | 
					        }}
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <Grid item xs={12} sm={8} md={5} component={Paper} elevation={6} square>
 | 
				
			||||||
 | 
					        <Box
 | 
				
			||||||
 | 
					          sx={{
 | 
				
			||||||
 | 
					            my: 8,
 | 
				
			||||||
 | 
					            mx: 4,
 | 
				
			||||||
 | 
					            display: "flex",
 | 
				
			||||||
 | 
					            flexDirection: "column",
 | 
				
			||||||
 | 
					            alignItems: "center",
 | 
				
			||||||
 | 
					          }}
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <Avatar sx={{ m: 1, bgcolor: "secondary.main" }}>
 | 
				
			||||||
 | 
					            <Icon path={mdiFamilyTree} size={1} />
 | 
				
			||||||
 | 
					          </Avatar>
 | 
				
			||||||
 | 
					          <Typography component="h1" variant="h5">
 | 
				
			||||||
 | 
					            GeneIT
 | 
				
			||||||
 | 
					          </Typography>
 | 
				
			||||||
 | 
					          <Typography
 | 
				
			||||||
 | 
					            component="h1"
 | 
				
			||||||
 | 
					            variant="h6"
 | 
				
			||||||
 | 
					            style={{ margin: "10px 0px 30px 0px" }}
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            La généalogie de votre famille
 | 
				
			||||||
 | 
					          </Typography>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          {/* inner page */}
 | 
				
			||||||
 | 
					          <Outlet />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <Copyright sx={{ mt: 5 }} />
 | 
				
			||||||
 | 
					        </Box>
 | 
				
			||||||
 | 
					      </Grid>
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user