import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faBookMedical, faBookOpen, faFeather} from "@fortawesome/free-solid-svg-icons"; import {useContext, useEffect, useState} from "react"; import {BookContext} from "@/context/BookContext"; import ScribeChapterComponent from "@/components/leftbar/ScribeChapterComponent"; import PanelHeader from "@/components/PanelHeader"; import {PanelComponent} from "@/lib/models/Editor"; import AddNewBookForm from "@/components/book/AddNewBookForm"; import ShortStoryGenerator from "@/components/ShortStoryGenerator"; import {SessionContext} from "@/context/SessionContext"; import {useTranslations} from "next-intl"; import OfflineContext from "@/context/OfflineContext"; export default function ScribeLeftBar() { const {book} = useContext(BookContext); const {session} = useContext(SessionContext); const t = useTranslations(); const [panelHidden, setPanelHidden] = useState(false); const [currentPanel, setCurrentPanel] = useState(); const [showAddNewBook, setShowAddNewBook] = useState(false); const [showGenerateShortModal, setShowGenerateShortModal] = useState(false) const {isCurrentlyOffline} = useContext(OfflineContext) const editorComponents: PanelComponent[] = [ { id: 1, title: t("scribeLeftBar.editorComponents.structure.title"), description: t("scribeLeftBar.editorComponents.structure.description"), badge: t("scribeLeftBar.editorComponents.structure.badge"), icon: faBookOpen } /* { id: 2, title: 'Ligne directive', icon: faBookmark, badge: 'LD', description: 'Ligne directrice pour ce chapitre.' }, { id: 3, title: 'Statistique', icon: faChartLine, badge: 'STATS', description: 'Vérification des verbes' }*/ ] const homeComponents: PanelComponent[] = [ { id: 1, title: t("scribeLeftBar.homeComponents.addBook.title"), description: t("scribeLeftBar.homeComponents.addBook.description"), badge: t("scribeLeftBar.homeComponents.addBook.badge"), icon: faBookMedical }, { id: 2, title: t("scribeLeftBar.homeComponents.generateStory.title"), icon: faFeather, badge: t("scribeLeftBar.homeComponents.generateStory.badge"), description: t("scribeLeftBar.homeComponents.generateStory.description") }, ] function togglePanel(component: PanelComponent): void { if (panelHidden) { if (currentPanel?.id === component.id) { setPanelHidden(!panelHidden); return; } } else { setPanelHidden(true); } } useEffect(():void => { if (!book){ setCurrentPanel(undefined); setPanelHidden(false); return; } }, [book]); return (
{book ? editorComponents.map((component:PanelComponent) => ( )) : ( homeComponents .filter((component: PanelComponent):boolean => { return !(isCurrentlyOffline() && component.id === 2); }) .map((component: PanelComponent) => ( )) )}
{panelHidden && (
setPanelHidden(!panelHidden)}/> {currentPanel?.id === 1 && ( )}
)} { showAddNewBook && } { showGenerateShortModal && setShowGenerateShortModal(false)}/> }
) }