import { useState } from 'preact/hooks'; import { ArrowLeft, Eye, EyeOff, LogIn, LogOut, Unlock, UserPlus } from 'lucide-preact'; import StandalonePageFrame from '@/components/StandalonePageFrame'; import { t } from '@/lib/i18n'; interface LoginValues { email: string; password: string; } interface RegisterValues { name: string; email: string; password: string; password2: string; passwordHint: string; inviteCode: string; } interface AuthViewsProps { mode: 'login' | 'register' | 'locked'; pendingAction: 'login' | 'register' | 'unlock' | null; unlockReady: boolean; unlockPreparing: boolean; loginValues: LoginValues; registerValues: RegisterValues; unlockPassword: string; emailForLock: string; loginHintLoading: boolean; onChangeLogin: (next: LoginValues) => void; onChangeRegister: (next: RegisterValues) => void; onChangeUnlock: (password: string) => void; onSubmitLogin: () => void; onSubmitRegister: () => void; onSubmitUnlock: () => void; onGotoLogin: () => void; onGotoRegister: () => void; onLogout: () => void; onTogglePasswordHint: () => void; onShowLockedPasswordHint: () => void; } function PasswordField(props: { label: string; value: string; onInput: (v: string) => void; autoFocus?: boolean; autoComplete?: string; }) { const [show, setShow] = useState(false); return ( ); } export default function AuthViews(props: AuthViewsProps) { const loginBusy = props.pendingAction === 'login'; const registerBusy = props.pendingAction === 'register'; const unlockBusy = props.pendingAction === 'unlock'; if (props.mode === 'locked') { return (
{ e.preventDefault(); props.onSubmitUnlock(); }} >

{props.emailForLock}

{props.unlockPreparing ? (

{t('txt_loading')}

) : null}
{t('txt_or')}
); } if (props.mode === 'register') { return (
{ e.preventDefault(); props.onSubmitRegister(); }} > props.onChangeRegister({ ...props.registerValues, password: v })} /> props.onChangeRegister({ ...props.registerValues, password2: v })} />
{t('txt_or')}
); } return (
{ e.preventDefault(); props.onSubmitLogin(); }} > props.onChangeLogin({ ...props.loginValues, password: v })} autoFocus />
{t('txt_or')}
); }