import { z } from "zod/v4"; import { useForm } from "@mantine/form"; import { zod4Resolver } from "mantine-form-zod-resolver"; import useAuth from "@/features/auth/hooks/use-auth"; import { Container, Title, TextInput, Button, PasswordInput, Box, Anchor, Group, } from "@mantine/core"; import classes from "./auth.module.css"; import { useRedirectIfAuthenticated } from "@/features/auth/hooks/use-redirect-if-authenticated.ts"; import { Link } from "react-router-dom"; import APP_ROUTE from "@/lib/app-route.ts"; import { useTranslation } from "react-i18next"; import SsoLogin from "@/ee/components/sso-login.tsx"; import { useWorkspacePublicDataQuery } from "@/features/workspace/queries/workspace-query.ts"; import { Error404 } from "@/components/ui/error-404.tsx"; import React from "react"; import { AuthLayout } from "./auth-layout.tsx"; const formSchema = z.object({ email: z .email() .min(1, { message: "email is required" }), password: z.string().min(1, { message: "Password is required" }), }); type FormValues = z.infer; export function LoginForm() { const { t } = useTranslation(); const { signIn, isLoading } = useAuth(); useRedirectIfAuthenticated(); const { data, isLoading: isDataLoading, isError, error, } = useWorkspacePublicDataQuery(); const form = useForm({ validate: zod4Resolver(formSchema), initialValues: { email: "", password: "", }, }); async function onSubmit(data: FormValues) { await signIn(data); } if (isDataLoading) { return null; } if (isError && error?.["response"]?.status === 404) { return ; } return ( {t("Login")} {!data?.enforceSso && ( <>
{t("Forgot your password?")} )}
); }