fashionAvenue / client / src / pages / Login.jsx
Login.jsx
Raw
import { Grid, Input, Typography } from '@mui/material';
import { makeStyles } from '@mui/styles';
import React, { useContext, useRef } from 'react';
import { Link } from 'react-router-dom';
import AuthContext from '../context/AuthContext';

const useStyles = makeStyles({
  root: { margin: '8% 38%' },
  loginTitle: { fontSize: '24px', marginBottom: '20px' },
  input: {
    marginBottom: '15px',
    fontSize: '16px',
    padding: '0 15px',
    height: '50px',
    borderBottom: '1px solid #c0c0c0',
  },
  loginbutton: {
    margin: '10px 0',
    height: '55px',
    width: '100%',
    backgroundColor: '#333',
    color: '#ffffff',
    fontWeight: 600,
    fontSize: '18px',
    border: '1px solid #333',
    '&:hover': {
      backgroundColor: 'black',
    },
  },
  facebookbutton: {
    margin: '10px 0',
    height: '55px',
    width: '100%',
    backgroundColor: '#4267b2',
    color: '#ffffff',
    fontSize: '16px',
    border: 'none',
    '&:hover': {
      backgroundColor: '#324e87',
    },
  },
  link: {
    fontSize: '14px',
    fontFamily: 'Noto Sans KR',
    textDecoration: 'none',
    color: '#333',
  },
  registerButton: {
    margin: '10px 0',
  },
});

const Login = () => {
  const classes = useStyles();
  const username = useRef('');
  const password = useRef('');
  const { login } = useContext(AuthContext);

  const loginSubmit = async (e) => {
    e.preventDefault();
    let payload = {
      username: username.current.value,
      password: password.current.value,
    };
    await login(payload);
  };

  return (
    <div className={classes.root}>
      <Grid container direction="column" alignItems="center">
        <Grid item>
          <Typography className={classes.loginTitle}>Sign in</Typography>
        </Grid>
        <Grid item>
          <form onSubmit={loginSubmit}>
            <Input
              className={classes.input}
              inputRef={username}
              name="username"
              type="text"
              fullWidth
              placeholder="Username"
              disableUnderline
            />
            <Input
              className={classes.input}
              inputRef={password}
              name="password"
              type="password"
              fullWidth
              placeholder="Password"
              disableUnderline
            />
            <button type="submit" className={classes.loginbutton}>
              Login
            </button>
          </form>
          <button className={classes.facebookbutton}>
            Log in with Facebook
          </button>
        </Grid>
        <Grid item>
          <div className={classes.registerButton}>
            <Link to="/register" className={classes.link}>
              Create your account
            </Link>
          </div>
        </Grid>
      </Grid>
    </div>
  );
};

export default Login;