import { useState, useEffect } from 'react' import { useApp } from '../context/AppContext' import Window from './Window' import StartMenu from './StartMenu' import { Menu, LayoutGrid, ShoppingBag, Clock, BookOpen, Wifi, Shield, Power } from 'lucide-react' const APPS = [ { id: 'kanban', title: 'Collective Kanban', icon: LayoutGrid, defaultWidth: 900, defaultHeight: 600 }, { id: 'clawhub', title: 'ClawHub Marketplace', icon: ShoppingBag, defaultWidth: 1000, defaultHeight: 700 }, { id: 'session', title: 'Session Tracker', icon: Clock, defaultWidth: 500, defaultHeight: 400 }, { id: 'wiki', title: 'Agent Wiki', icon: BookOpen, defaultWidth: 800, defaultHeight: 600 } ] function Desktop() { const { windows, activeWindow, startMenuOpen, setStartMenuOpen, openWindow, restoreWindow, focusWindow, sessionActive } = useApp() const [currentTime, setCurrentTime] = useState(new Date()) useEffect(() => { const timer = setInterval(() => setCurrentTime(new Date()), 1000) return () => clearInterval(timer) }, []) return (
setStartMenuOpen(false)}> {/* Desktop Icons */}
e.stopPropagation()}> {APPS.map(app => (
openWindow(app)} > {app.title}
))}
{/* Windows */} {windows.map(window => ( !window.minimized && ( a.id === window.app)} /> ) ))} {/* Start Menu */} {startMenuOpen && ( )} {/* Taskbar */}
{windows.map(window => (
{ if (window.minimized || activeWindow !== window.id) { restoreWindow(window.id) } else { focusWindow(window.id) } }} title={window.title} > {(() => { const Icon = APPS.find(a => a.id === window.app)?.icon return Icon ? : null })()}
))}
{sessionActive && (
)}
{currentTime.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
) } export default Desktop