import {
  Container,
  ContainerProps,
  createStyles,
  makeStyles,
  Paper,
  useMediaQuery,
} from "@material-ui/core";
import { ReactNode } from "react";
import { PRIMARY_GRADIENT, Theme } from "../theme";

const useStyles = makeStyles((theme: Theme) =>
  createStyles({
    root: {
      width: "100vw",
      height: "100vh",
      backgroundImage: PRIMARY_GRADIENT,
      display: "flex",
      alignItems: "center",
      justifyContent: "center",
    },
    paper: {
      width: "100%",
      [theme.breakpoints.down("xs")]: {
        width: "100vw",
        height: "100vh",
        borderRadius: 0,
      },
      overflowY: "auto",
      padding: 0,
      opacity: 0.9,
    },
  })
);

type AuthContainerProps = {
  children: ReactNode;
  maxWidth?: ContainerProps["maxWidth"];
};

const AuthContainer = ({ children, maxWidth = "lg" }: AuthContainerProps) => {
  const classes = useStyles();

  const isXs = useMediaQuery((theme: Theme) => theme.breakpoints.down("xs"));

  return (
    <div className={classes.root}>
      <Container maxWidth={maxWidth} disableGutters={isXs}>
        <Paper elevation={0} className={classes.paper}>
          {children}
        </Paper>
      </Container>
    </div>
  );
};

export default AuthContainer;