import { Button, CircularProgress, Divider, TextField, Typography } from "@material-ui/core"; import { AvailableExternalAuthentications_shop_availableExternalAuthentications } from "@saleor/auth/types/AvailableExternalAuthentications"; import { FormSpacer } from "@saleor/components/FormSpacer"; import { SubmitPromise } from "@saleor/hooks/useForm"; import { commonMessages } from "@saleor/intl"; import { makeStyles } from "@saleor/theme"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import LoginForm, { LoginFormData } from "./form"; const useStyles = makeStyles( theme => ({ buttonContainer: { display: "flex", justifyContent: "flex-end" }, link: { color: theme.palette.primary.main, cursor: "pointer", textDecoration: "underline" }, loading: { alignItems: "center", display: "flex", height: "100vh", justifyContent: "center" }, loginButton: { width: 140 }, panel: { "& span": { color: theme.palette.error.contrastText }, background: theme.palette.error.main, borderRadius: theme.spacing(), marginBottom: theme.spacing(3), padding: theme.spacing(1.5) } }), { name: "LoginCard" } ); export interface LoginCardProps { error: boolean; externalError: boolean; disabled: boolean; loading: boolean; externalAuthentications?: AvailableExternalAuthentications_shop_availableExternalAuthentications[]; onExternalAuthentication: (pluginId: string) => void; onPasswordRecovery: () => void; onSubmit?: (event: LoginFormData) => SubmitPromise; } const LoginCard: React.FC = props => { const { error, externalError, disabled, loading, externalAuthentications = [], onExternalAuthentication, onPasswordRecovery, onSubmit } = props; const classes = useStyles(props); const intl = useIntl(); if (loading) { return (
); } return ( {({ change: handleChange, data, submit: handleSubmit }) => ( <> {error && (
)} {externalError && (
)}
) }} /> {externalAuthentications.length > 0 && ( <> )} {externalAuthentications.map(externalAuthentication => ( ))} )}
); }; LoginCard.displayName = "LoginCard"; export default LoginCard;