import { useState } from "react";
import * as React from "react";
import {} from "react-router-dom";
import { useLocation, Link } from "react-router-dom";

import {
    useMediaQuery,
    useTheme,
    Button,
    Dialog,
    ListItem,
    AppBar,
    List,
    Toolbar,
    IconButton,
    Box,
    Slide,
} from "@mui/material";
import { TransitionProps } from "@mui/material/transitions";

import SectionStyled from "./SectionStyled";
import CloseIcon from "./images/icons/CloseIcon";
import MenuIcon from "./images/icons/MenuIcon";

import Logotip from "./images/icons/QuizLogo";
// import logotipBlack from "../Icons/Logo/black_logo_PenaHab.svg";
// import logotipBlackMobile from "../Icons/Logo/black_logo_PenaHab_mobile.svg";

const buttonMenu: { path: string; title: string }[] = [
    { path: "/", title: "Меню 1" },
    { path: "/", title: "Меню 2" },
    { path: "/", title: "Меню 3" },
    { path: "/", title: "Меню 4" },
    { path: "/", title: "Меню 5" },
    { path: "/", title: "Меню 6" },
    { path: "/", title: "Меню 7" },
    { path: "/", title: "Меню 8" },
];

interface Props {
    theme?: "dark" | "light";
    bgColor?: string;
}

const Transition = React.forwardRef(function Transition(
    props: TransitionProps & {
        children: React.ReactElement;
    },

    ref: React.Ref<unknown>
) {
    return <Slide direction={"left"} ref={ref} {...props} />;
});

const height = "80px";
export default function FullScreenDialog({
                                             theme = "dark",
                                             bgColor = "#F2F3F7",
                                         }: Props) {
    const [open, setOpen] = useState(false);
    const location = useLocation();
    const themeMUI = useTheme();
    const isMobile = useMediaQuery(themeMUI.breakpoints.down("md"));

    const handleClickOpen = () => {
        setOpen(true);
    };

    const handleClose = () => {
        setOpen(false);
    };

    return (
        <>
            <SectionStyled
                tag="header"
                bg={bgColor}
                mwidth={"1200px"}
                sxsect={{
                    minHeight: isMobile? "50px" : {height},
                    position: "fixed",
                    zIndex: 11

                }}
                sxcont={{
                    display: "flex",
                    justifyContent: "space-between",
                    alignItems: "center",
                    svg: { color: "#000000" },
                }}
            >
                <Box sx={{ bgcolor: "none", paddingTop: isMobile? "6px" : 0 }}>
                    <Logotip width={150}/>
                </Box>
                {!isMobile && (
                    <Button
                        // onClick={() => setIsContactFormOpen(true)}
                        disableRipple
                        sx={{
                            color: "black",
                            border: "1px solid black",
                            ml: "auto",
                            mr: "38px",
                            textTransform: "none",
                            fontWeight: "400",
                            fontSize: "18px",
                            lineHeight: "24px",
                            borderRadius: "8px",
                            padding: "8px 17px",
                            "&:hover": {
                                background: "rgba(126, 42, 234, 0.07)",
                                bgcolor: "#7E2AEA",
                            },
                        }}
                    >
                        Предрегистрация
                    </Button>
                )}

                <Button disableRipple variant="text" onClick={handleClickOpen}>
                    <MenuIcon />
                </Button>
                <Dialog
                    fullScreen
                    sx={{ width: isMobile ? "100%" : "320px", ml: "auto", height: "100%" }}
                    open={open}
                    onClose={handleClose}
                    TransitionComponent={Transition}
                >
                    <AppBar
                        sx={{
                            position: "relative",
                            background: theme === "dark" ? "#252734" : "#F2F3F7",
                            boxShadow: "none",
                            height: isMobile ? "66px" : "100px",
                        }}
                    >
                        <Toolbar
                            sx={{
                                display: "flex",
                                justifyContent: "space-between",
                                svg: { color: theme === "dark" ? "#ffffff" : "#000000" },
                                pt: "12px",
                            }}
                        >
                            {isMobile && (
                                <Logotip width={150}/>
                            )}
                            <IconButton
                                sx={{ ml: "auto" }}
                                edge="start"
                                color="inherit"
                                onClick={handleClose}
                                aria-label="close"
                            >
                                <CloseIcon />
                            </IconButton>
                        </Toolbar>
                    </AppBar>
                    <List
                        sx={{
                            background: theme === "dark" ? "#252734" : "#F2F3F7",
                            height: "100vh",
                            p: "0",
                        }}
                    >
                        <ListItem
                            sx={{
                                pl: "40px",
                                flexDirection: "column",
                                alignItems: isMobile ? "stretch" : "end",
                            }}
                        >
                            {buttonMenu.map(({ path, title }) => (
                                <Link
                                    key={path}
                                    to={path}
                                    style={{
                                        textDecoration: "none",
                                        height: "20px",
                                        marginBottom: "25px",
                                    }}
                                >
                                    <Button
                                        disableRipple
                                        variant="text"
                                        sx={{
                                            color:
                                                location.pathname === path
                                                    ? "#7E2AEA"
                                                    : theme === "dark"
                                                        ? "white"
                                                        : "black",
                                            height: "20px",
                                            textTransform: "none",
                                            fontSize: "16px",
                                            "&:hover": {
                                                background: "none",
                                                color: "#7E2AEA",
                                            },
                                        }}
                                    >
                                        {title}
                                    </Button>
                                </Link>
                            ))}
                        </ListItem>
                        {isMobile ? (
                            <Button
                                // onClick={() => setIsContactFormOpen(true)}
                                variant="outlined"
                                sx={{
                                    position: "absolute",
                                    bottom: 0,
                                    mb: "60px",
                                    width: "188px",
                                    color: theme === "dark" ? "white" : "black",
                                    border: "1px solid black",
                                    ml: "40px",
                                    mt: "180px",
                                    textTransform: "none",
                                    fontWeight: "400",
                                    fontSize: "18px",
                                    lineHeight: "24px",
                                    borderRadius: "8px",
                                    padding: "8px 17px",
                                }}
                            >
                                Предрегистрация
                            </Button>
                        ) : (
                            <Box
                                sx={{
                                    position: "absolute",
                                    right: "40px",
                                    bottom: "60px",
                                }}
                            >
                                <Logotip width={150}/>
                            </Box>
                        )}
                    </List>
                </Dialog>
            </SectionStyled>
            <Box sx={{height: isMobile ? "50px" : {height}}} />
        </>
    );
}
