feat: mobile-responsive layout

- Mobile (<md): single-panel view, sidebar/chat/members as overlays
- Hamburger button toggles sidebar overlay (ServerBar + ChannelList)
- Members button toggles MemberList overlay
- ← back button in ChatArea and DMChat headers returns to sidebar
- Auto-switch to chat view when channel or DM is selected
- Tap empty area to dismiss overlays
- Desktop layout unchanged (all panels side by side)
- Status/settings buttons hidden on small screens to save space
This commit is contained in:
2026-07-02 13:58:15 -04:00
parent 0b645fe765
commit b6d4614881
4 changed files with 144 additions and 33 deletions
+6
View File
@@ -1,11 +1,17 @@
import { create } from 'zustand';
export type MobileView = 'sidebar' | 'chat' | 'members';
interface LayoutState {
isDM: boolean;
setDM: (value: boolean) => void;
mobileView: MobileView;
setMobileView: (view: MobileView) => void;
}
export const useLayoutStore = create<LayoutState>((set) => ({
isDM: false,
setDM: (value) => set({ isDM: value }),
mobileView: 'chat',
setMobileView: (view) => set({ mobileView: view }),
}));