import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useDispatch } from 'react-redux'; import { Box, Button, Card, CardContent, Typography, Divider, Stack } from '@mui/material'; import GoogleIcon from '@mui/icons-material/Google'; import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings'; import EngineeringIcon from '@mui/icons-material/Engineering'; import PersonIcon from '@mui/icons-material/Person'; import { useAuth } from '../../hooks/useAuth'; import { authApi } from '../../lib/api/auth'; import { setUser, setError } from '../../app/slices/authSlice'; const COGNITO_DOMAIN = import.meta.env.VITE_COGNITO_DOMAIN || ''; const CLIENT_ID = import.meta.env.VITE_COGNITO_CLIENT_ID || ''; const REDIRECT_URI = `${window.location.origin}/callback`; function buildLoginUrl(): string { const params = new URLSearchParams({ client_id: CLIENT_ID, response_type: 'code', scope: 'openid email profile', redirect_uri: REDIRECT_URI, identity_provider: 'Google', }); return `https://${COGNITO_DOMAIN}/oauth2/authorize?${params.toString()}`; } export default function LoginPage() { const navigate = useNavigate(); const dispatch = useDispatch(); const { isAuthenticated } = useAuth(); const [loading, setLoading] = useState(false); const isDevMode = !CLIENT_ID; useEffect(() => { if (isAuthenticated) { navigate('/', { replace: true }); } }, [isAuthenticated, navigate]); const handleDevLogin = async (role: string) => { setLoading(true); try { const user = await authApi.devLogin('adam@seahavenind.com', 'Adam Moussa', role); dispatch(setUser(user)); navigate('/', { replace: true }); } catch (err) { dispatch(setError(err instanceof Error ? err.message : 'Dev login failed')); } finally { setLoading(false); } }; return ( Sea Haven Industries Proposal System {isDevMode ? ( <> Development Mode — Select a role to sign in as: Dev login is only available when VITE_COGNITO_CLIENT_ID is not set ) : ( <> Sign in with your Sea Haven Google account to continue. )} Sea Haven Industries © {new Date().getFullYear()} ); }