import { router } from 'expo-router'; import { useState } from 'react'; import { KeyboardAvoidingView, Platform, Pressable, ScrollView, Text, TextInput, View, } from 'react-native'; import { useDemoAccounts, useDemoLogin, useLogin } from '@/auth/session'; import { useTokens } from '@/theme/tokens'; /** Connexion mobile — mêmes règles que le web : formulaire e-mail/mot de * passe, et le sélecteur démo (< 3 s pour changer de rôle, ADR-002) * UNIQUEMENT si l'API l'expose. */ export default function PageConnexion() { const t = useTokens(); const [email, setEmail] = useState(''); const [motDePasse, setMotDePasse] = useState(''); const { data: comptes } = useDemoAccounts(); const login = useLogin(); const demo = useDemoLogin(); const entrer = () => router.replace('/(tabs)/journee'); return ( SIOP Technicien Vos ordres de travail, sur le terrain — même sans réseau. login.mutate({ email, password: motDePasse }, { onSuccess: entrer }) } style={{ backgroundColor: !email || !motDePasse ? t.bordureForte : t.primaire, borderRadius: 10, padding: 14, alignItems: 'center', }} > {login.isPending ? 'Connexion…' : 'Se connecter'} {login.isError ? ( {login.error.message} ) : null} {comptes?.length ? ( Mode démo — connexion 1 clic {comptes.map((c) => ( demo.mutate(c.id, { onSuccess: entrer })} style={{ backgroundColor: t.surface, borderColor: t.bordure, borderWidth: 1, borderRadius: 10, padding: 12, flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', }} > {c.displayName} {c.roleName} ))} ) : null} ); }