P14: dock the session sidebar (persistent column, not a temp drawer)

- The session panel now docks as a persistent right-hand column on desktop and
  only floats as an overlay drawer on phones (md breakpoint). Open state persists
  (uiStore.sessionDockOpen). The header button opens it (idempotent); the ✕ closes.
- Players get it auto-opened on join — they live in the panel during play.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-08 17:08:13 +02:00
parent b2cf62f642
commit 4cb834ad6c
3 changed files with 33 additions and 14 deletions
+5 -5
View File
@@ -18,14 +18,14 @@ export function SessionSidebar({ open, onClose }: { open: boolean; onClose: () =
const code = role === 'gm' ? joinCode : intent?.joinCode;
const inSession = role !== 'off' || !!intent;
if (!open) return null;
return (
<>
{open && <div className="fixed inset-0 z-40 bg-black/40 print:hidden" onClick={onClose} aria-hidden />}
{/* On phones the panel floats over content with a backdrop; on desktop it docks as a column. */}
<div className="fixed inset-0 z-40 bg-black/40 md:hidden print:hidden" onClick={onClose} aria-hidden />
<aside
className={cn(
'fixed right-0 top-0 z-50 flex h-full w-80 max-w-[88vw] transform flex-col border-l border-line bg-panel shadow-2xl transition-transform print:hidden',
open ? 'translate-x-0' : 'translate-x-full',
)}
className="fixed right-0 top-0 z-50 flex h-full w-80 max-w-[88vw] flex-col border-l border-line bg-panel shadow-2xl print:hidden md:static md:z-auto md:h-auto md:w-80 md:max-w-none md:shrink-0 md:self-stretch md:shadow-none"
aria-label="Session panel"
>
<div className="flex items-center justify-between border-b border-line p-3">