page.tsx 1,32 ko
Newer Older
Adrien Delmastro's avatar
Adrien Delmastro a validé
'use client'

import { useState } from 'react'
Adrien Delmastro's avatar
Adrien Delmastro a validé
import Sidebar, { type TabKey } from './components/molecules/Sidebar'
import Header from './components/molecules/Header'
Adrien Delmastro's avatar
Adrien Delmastro a validé
import Temporal from './components/tabs/temporal'
import Points from './components/tabs/points'
import Diagram from './components/tabs/diagram'

const tabComponents: Record<TabKey, React.ComponentType> = {
    temporal: Temporal,
    points: Points,
    diagram: Diagram,
}

Adrien Delmastro's avatar
Adrien Delmastro a validé
    const [activeTab, setActiveTab] = useState<TabKey>('temporal')
Adrien Delmastro's avatar
Adrien Delmastro a validé
    const [sidebarOpen, setSidebarOpen] = useState(false)
Adrien Delmastro's avatar
Adrien Delmastro a validé
    const ActiveComponent = tabComponents[activeTab]

    return (
Adrien Delmastro's avatar
Adrien Delmastro a validé
        <main className="flex h-screen relative">
            <Sidebar activeTab={activeTab} onTabChange={setActiveTab} open={sidebarOpen} />
            {sidebarOpen && (
                <div
                    className="fixed inset-0 bg-black/50 z-10 md:hidden"
                    onClick={() => setSidebarOpen(false)}
                />
            )}
            <div className="w-full flex flex-col min-w-0">
Adrien Delmastro's avatar
Adrien Delmastro a validé
                <Header onToggleSidebar={() => setSidebarOpen(prev => !prev)} />
                <div className="w-full flex-1 bg-[#181C1F] overflow-auto">
Adrien Delmastro's avatar
Adrien Delmastro a validé
                    <ActiveComponent />
                </div>
            </div>
        </main>
    )