feat: responsive mobile layout with slide-over sidebar

On screens ≤600px the sidebar collapses off-screen. A hamburger button
in the message header opens it as a slide-over drawer with a dim
overlay; tapping a room/network or the ✕ button closes it. Desktop
layout is unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Fredrik Johansson
2026-06-29 18:52:26 +02:00
parent 1d9c9d1524
commit 32a6f46481
5 changed files with 76 additions and 8 deletions

View File

@@ -1,3 +1,4 @@
import { useState } from 'react'
import { Sidebar } from '../components/Sidebar'
import { MessagePane } from '../components/MessagePane'
import { FileBrowser } from '../components/FileBrowser'
@@ -5,10 +6,11 @@ import { useWaste } from '../store'
export function Chat() {
const { activeFilePeer } = useWaste()
const [sidebarOpen, setSidebarOpen] = useState(false)
return (
<div className={`chat-layout${activeFilePeer ? ' has-file-browser' : ''}`}>
<Sidebar />
<MessagePane />
<div className={`chat-layout${activeFilePeer ? ' has-file-browser' : ''}${sidebarOpen ? ' sidebar-open' : ''}`}>
<Sidebar onClose={() => setSidebarOpen(false)} />
<MessagePane onMenuClick={() => setSidebarOpen(v => !v)} />
{activeFilePeer && <FileBrowser />}
</div>
)