'use client'; import { AuthCard } from '@/components/auth/AuthCard'; import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks'; import { AuthForm } from '@/components/auth/AuthForm'; import { EnhancedFormError } from '@/components/errors/EnhancedFormError'; import { FormState } from '@/lib/builders/view-data/types/FormState'; import { LoginViewData } from '@/lib/builders/view-data/types/LoginViewData'; import { routes } from '@/lib/routing/RouteConfig'; import { Box } from '@/ui/Box'; import { Button } from '@/ui/Button'; import { Icon } from '@/ui/Icon'; import { Input } from '@/ui/Input'; import { Link } from '@/ui/Link'; import { LoadingSpinner } from '@/ui/LoadingSpinner'; import { PasswordField } from '@/ui/PasswordField'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { AlertCircle, LogIn, Mail } from 'lucide-react'; import React from 'react'; interface LoginTemplateProps { viewData: LoginViewData; formActions: { handleChange: (e: React.ChangeEvent) => void; handleSubmit: (e: React.FormEvent) => Promise; setFormState: React.Dispatch>; setShowPassword: (show: boolean) => void; setShowErrorDetails: (show: boolean) => void; }; mutationState: { isPending: boolean; error: string | null; }; } export function LoginTemplate({ viewData, formActions, mutationState }: LoginTemplateProps) { const isSubmitting = viewData.formState.isSubmitting || mutationState.isPending; return ( } /> formActions.setShowPassword(!viewData.showPassword)} /> Forgot password? Keep me signed in {viewData.hasInsufficientPermissions && ( Insufficient Permissions Please log in with an account that has the required role. )} {viewData.submitError && ( { formActions.setFormState((prev: FormState) => ({ ...prev, submitError: undefined })); }} showDeveloperDetails={viewData.showErrorDetails} /> )} Don't have an account?{' '} Create one By signing in, you agree to our{' '} Terms {' '}and{' '} Privacy ); }