import { useEffect, useState } from 'react';
import { InventoryPage } from './pages/InventoryPage';
import { LoginPage } from './pages/LoginPage';
import { getToken, clearSession } from './lib/session';
import './app-shell.css';
type TabKey = 'overview' | 'inventory' | 'discovery' | 'topology' | 'options';
const tabs = [
{ key: 'overview', label: 'Overview', description: 'Stato generale del workspace NetMapper.' },
{ key: 'inventory', label: 'Inventory', description: 'Tree fisico/logico e navigazione tra oggetti.' },
{ key: 'discovery', label: 'Discovery', description: 'Pipeline e job di raccolta dati.' },
{ key: 'topology', label: 'Topology', description: 'Vista futura della mappa multilivello.' },
{ key: 'options', label: 'Options', description: 'Utenti, impostazioni, servizi di sistema e sicurezza.' },
] as const;
function ShellCard({ title, children, tone = 'default' }: { title: string; children: React.ReactNode; tone?: 'default' | 'accent' | 'warning' }) {
return ;
}
function OverviewTab() { return
- Frontend inventory collegato al backend.
- Tree gerarchico e context panel attivi.
- Navigazione tra parent, children e relazioni disponibile.
- Reintegro layout persistente completato.
- Roadmap di security e options introdotta.
- Preparazione vista topology multilivello.
- I moduli servizi confluiranno nel menu Options.
- L'accesso dovrà essere autenticato prima delle integrazioni remote.
- Serve hardening progressivo di sessione e permessi.
; }
function DiscoveryTab() { return - Seed scan subnet.
- Classificazione host e object binding.
- Correlazione con relazioni inventory.
- SNMP collector.
- LLDP ingestion.
- Port mapping inference.
; }
function TopologyTab() { return - Vista fisica dispositivi.
- Vista logica host / VM / container / app.
- Layer networking e dipendenze.
- Drag & drop dei contenitori.
- Link fisici e logici cliccabili.
- Focus node e highlight dei vicini.
; }
function OptionsTab() { return - Utenti locali e ruoli applicativi.
- Disattivazione account inattivi o non più autorizzati.
- Storico accessi e audit trail amministrativo.
- Parametri workspace e branding dell'istanza.
- Configurazione discovery, inventory e policy future.
- Feature flags per moduli sperimentali.
- La sezione Servizi viene assorbita nel menu Options.
- Qui confluiranno terminale remoto, job runner e integrazioni di sistema.
- Ogni funzione sensibile dovrà essere protetta da permessi espliciti.
- Login obbligatorio per tutte le viste non pubbliche.
- MFA per admin e per funzioni ad alto impatto.
- Controlli server-side su ogni richiesta, deny-by-default e audit centralizzato.
; }
function AppShell() {
const [activeTab, setActiveTab] = useState('inventory');
const currentTab = tabs.find((t) => t.key === activeTab)!;
return {currentTab.label}
{currentTab.description}
Book of truthAuth active
;
}
export default function App() {
const [loggedIn, setLoggedIn] = useState(false);
useEffect(() => {
const t = getToken();
if (t) setLoggedIn(true);
}, []);
const handleLogin = () => setLoggedIn(true);
const handleLogout = () => {
clearSession();
setLoggedIn(false);
};
if (!loggedIn) return ;
return <>>;
}