/// import * as React from "react" import { Checkbox } from "../controls/Checkbox" import { Button } from "../controls/Button" import { Link } from "../controls/Link" import { Modal } from "../controls/Modal" export interface SignInModalProps { onSignIn: (provider: pxt.AppCloudProvider, rememberMe: boolean) => Promise onClose: () => void hideDismissButton?: boolean appMessage?: string dialogMessages?: { signInMessage?: string signUpMessage?: string } resolvePath?: (path: string) => string mode?: "signin" | "signup" } export const SignInModal = (props: SignInModalProps) => { const { onSignIn, onClose, appMessage, dialogMessages, hideDismissButton } = props const { signInMessage, signUpMessage } = dialogMessages || { signInMessage: lf("Sign in to save your progress and access your work anytime, anywhere."), signUpMessage: lf("Join now to save your progress and access your work anytime, anywhere.") } const resolvePath = props.resolvePath ?? (path => path) const [rememberMe, setRememberMe] = React.useState(false) const [mode, setMode] = React.useState(props.mode ?? "signin") const titleText = React.useMemo(() => (mode === "signin" ? lf("Sign in") : lf("Sign up")), [mode]) const headerText = React.useMemo( () => (mode === "signin" ? signInMessage : signUpMessage), [mode, signInMessage, signUpMessage] ) const footerFragment = React.useMemo( () => mode === "signin" ? (
{lf("Don't have an account?")}
) : (
{lf("Have an account?")}
), [mode] ) return (
{appMessage ? appMessage : undefined} {headerText}
{pxt.auth.identityProviders().map((provider, index) => { const title = mode === "signin" ? lf("Continue with {0}", provider.name) : lf("Sign up with {0}", provider.name) return (
{footerFragment}
{lf("Learn more")}
) }