"use client"; import { FC, useState, useEffect } from "react"; import { Box, Grid, Container, IconButton, Typography, TextField, } from "@mui/material"; import { Apple as AppleIcon, Google as GoogleIcon, Key as KeyIcon, } from "@mui/icons-material"; import { signIn, getProviders } from "next-auth/react"; import Image from "next/image"; import LinkLogo from "public/link-logo-small.png"; import { colors, fonts } from "@link-stack/ui"; import { useSearchParams } from "next/navigation"; type LoginProps = { session: any; }; export const Login: FC = ({ session }) => { const origin = typeof window !== "undefined" && window.location.origin ? window.location.origin : ""; const [provider, setProvider] = useState(undefined); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const params = useSearchParams(); const error = params.get("error"); const { darkGray, cdrLinkOrange, white } = colors; const { poppins } = fonts; const buttonStyles = { borderRadius: 500, width: "100%", fontSize: "16px", fontWeight: "bold", backgroundColor: white, "&:hover": { color: white, backgroundColor: cdrLinkOrange, }, }; const fieldStyles = { "& label.Mui-focused": { color: cdrLinkOrange, }, "& .MuiInput-underline:after": { borderBottomColor: cdrLinkOrange, }, "& .MuiFilledInput-underline:after": { borderBottomColor: cdrLinkOrange, }, "& .MuiOutlinedInput-root": { "&.Mui-focused fieldset": { borderColor: cdrLinkOrange, }, }, }; useEffect(() => { const fetchProviders = async () => { const providers = await getProviders(); setProvider(Object.keys(providers)?.pop()); }; fetchProviders(); }, []); return ( Link logo CDR Link {!session ? ( {error ? ( {`${error} error`} ) : null} {provider === "google" && ( signIn("google", { callbackUrl: `${origin}`, }) } > Sign in with Google )} {provider === "apple" && ( signIn("apple", { callbackUrl: `${window.location.origin}`, }) } > Sign in with Apple )} {provider === "credentials" && ( setEmail(e.target.value)} label="Email" variant="filled" size="small" fullWidth sx={{ ...fieldStyles, backgroundColor: white }} /> setPassword(e.target.value)} label="Password" variant="filled" size="small" fullWidth sx={{ backgroundColor: white }} type="password" /> signIn("credentials", { email, password, callbackUrl: `${origin}/setup`, }) } > Sign in with Zammad credentials )} ) : null} {session ? ( {` ${session.user.name ?? session.user.email}.`} ) : null} ); };