import { useEffect, useState } from 'react' import { getRooms } from '../pages/storageUtils' // Added getRooms import import { useEditor } from 'tldraw' // Added useEditor import import { colors } from '../constants/theme' // Corrected path import { FolderIcon, SettingsIcon, CloseIcon } from './Icons' // Added ShareIcon import { RoomList } from './RoomList' import { SettingsMenu } from './SettingsMenu' type Tab = 'none' | 'files' | 'settings' interface NavButtonProps { children: React.ReactNode onClick: () => void active: boolean title: string theme: any } function NavButton({ children, onClick, active, title, theme }: NavButtonProps) { const [hovered, setHovered] = useState(false) return ( ) } export function NavigationDock({ roomId }: { roomId: string }) { const editor = useEditor() const [activeTab, setActiveTab] = useState('none') const [isDark, setIsDark] = useState(false) const [roomName, setRoomName] = useState('') // Check dark mode useEffect(() => { const checkDark = () => { if (!editor?.user) return const prefs = editor.user.getUserPreferences() setIsDark(prefs.colorScheme === 'dark') } checkDark() const interval = setInterval(checkDark, 1000) return () => clearInterval(interval) }, [editor]) // Monitor Room Name useEffect(() => { const updateName = () => { const rooms = getRooms() const room = rooms.find(r => r.id === roomId) setRoomName(room?.name || 'Untitled Board') } updateName() window.addEventListener('tldraw-room-update', updateName) // Also listen for storage events in case it changes in another tab window.addEventListener('storage', updateName) return () => { window.removeEventListener('tldraw-room-update', updateName) window.removeEventListener('storage', updateName) } }, [roomId]) const theme = { bg: isDark ? colors.panelBgDark : colors.panelBg, border: isDark ? colors.borderDark : colors.border, hover: isDark ? colors.hoverDark : colors.hover, text: isDark ? colors.textDark : colors.text, } const isOpen = activeTab !== 'none' const close = () => setActiveTab('none') const getTitle = () => { switch(activeTab) { case 'files': return 'My Boards' case 'settings': return 'Settings' default: return '' } } return ( <> {/* DOCK BUTTONS */}
setActiveTab(activeTab === 'files' ? 'none' : 'files')} title="Your Boards" theme={theme} > setActiveTab(activeTab === 'settings' ? 'none' : 'settings')} title="Settings" theme={theme} >
{/* BACKDROP */} {isOpen && (
)} {/* SIDEBAR PANEL */}
{/* HEADER */}

{getTitle()}

{roomName}
{/* CONTENT */} {activeTab === 'files' && ( )} {activeTab === 'settings' && ( )}
) }