import "./styles.scss"; import {JSX} from "preact"; import {useState, useContext} from "preact/hooks"; import style from "./style.module.scss"; import {Container} from "./components/container"; import {Topics} from "./components/topics"; import {Topic as TopicComponent} from "./components/topic"; import {Settings} from "./components/settings"; import {Layout} from "./components/layout"; import {routeCtx, routes} from "@/contexts/route"; import {topicsCtx} from "@/contexts/topics"; export function App(): JSX.Element { const [route, setRoute] = useContext(routeCtx); const [topicsContext] = useContext(topicsCtx); // Router switch let routeComponent: JSX.Element; let breadcrumbs: JSX.Element; let title: string; switch (route.name) { case "home": routeComponent = setRoute(routes.home(n))}/> breadcrumbs = ( { e.preventDefault(); setRoute(routes.home(0)); }} > accueil ); title = "Liste des sujets"; break; case "topic": const topic = topicsContext.topics.find(t => t.id === route.args[0]); if (topic) { routeComponent = setRoute(routes.topic(topic.id, n + 1))} topic={topic}/> breadcrumbs = ( <> { e.preventDefault(); setRoute(routes.home(0)); }} > accueil / {topic.title} ) title = `Sujet : ${topic.title}` } else { routeComponent =
breadcrumbs = <>410 title = `410 :)` } break; case "settings": routeComponent = breadcrumbs = ( <> { e.preventDefault(); setRoute(routes.home(0)); }} > accueil / paramètres ) title = "Paramètres" break; } return ( <>

{ e.preventDefault(); setRoute(routes.home(0)); }}> JVCGPT

{routeComponent}
); }