Initial React project

This commit is contained in:
Johan
2026-03-04 22:23:10 +01:00
parent 689c6e9e15
commit 01363820e2
13 changed files with 1550 additions and 84 deletions

View File

@@ -9,10 +9,14 @@ import { DashboardPage } from './presentation/dashboard/pages/DashboardPage';
import { JobDetailPage } from './presentation/jobs/pages/JobDetailPage';
import { JobsPage } from './presentation/jobs/pages/JobsPage';
import { MessagesPage } from './presentation/messages/pages/MessagesPage';
import { SimulatorPage } from './presentation/simulator/pages/SimulatorPage';
import {
SimulatorPage,
type SimulatorEvaluationSelection,
} from './presentation/simulator/pages/SimulatorPage';
import { SimulatorEvaluationPage } from './presentation/simulator/pages/SimulatorEvaluationPage';
import { SubscriptionPage } from './presentation/subscription/pages/SubscriptionPage';
type AppPage = DashboardNavKey | 'job-detail';
type AppPage = DashboardNavKey | 'job-detail' | 'simulator-evaluation';
interface JobDetailSelection {
id: string;
@@ -30,6 +34,7 @@ function App() {
const [theme, setTheme] = useState<'light' | 'dark'>(initialTheme);
const [activePage, setActivePage] = useState<AppPage>('dashboard');
const [jobDetailSelection, setJobDetailSelection] = useState<JobDetailSelection | null>(null);
const [evaluationSelection, setEvaluationSelection] = useState<SimulatorEvaluationSelection | null>(null);
function handleNavigate(target: DashboardNavKey) {
if (
@@ -55,10 +60,20 @@ function App() {
setActivePage(jobDetailSelection?.returnPage ?? 'jobs');
}
function handleOpenSimulatorEvaluation(selection: SimulatorEvaluationSelection) {
setEvaluationSelection(selection);
setActivePage('simulator-evaluation');
}
function handleBackFromSimulatorEvaluation() {
setActivePage('simulator');
}
async function handleLogout() {
await localStorageService.clearCredentials();
setActivePage('dashboard');
setJobDetailSelection(null);
setEvaluationSelection(null);
setIsAuthenticated(false);
}
@@ -118,7 +133,28 @@ function App() {
}
if (activePage === 'simulator') {
return <SimulatorPage onLogout={handleLogout} onNavigate={handleNavigate} theme={theme} onToggleTheme={handleToggleTheme} />;
return (
<SimulatorPage
onLogout={handleLogout}
onNavigate={handleNavigate}
onOpenEvaluation={handleOpenSimulatorEvaluation}
theme={theme}
onToggleTheme={handleToggleTheme}
/>
);
}
if (activePage === 'simulator-evaluation' && evaluationSelection) {
return (
<SimulatorEvaluationPage
interviewSelection={evaluationSelection}
onBack={handleBackFromSimulatorEvaluation}
onLogout={handleLogout}
onNavigate={handleNavigate}
theme={theme}
onToggleTheme={handleToggleTheme}
/>
);
}
if (activePage === 'subscription') {