diff --git a/frontend/src/components/ComposeDock.jsx b/frontend/src/components/ComposeDock.jsx index c84c902..053c7d5 100644 --- a/frontend/src/components/ComposeDock.jsx +++ b/frontend/src/components/ComposeDock.jsx @@ -25,7 +25,7 @@ export default function ComposeDock({ account, onSent, agentOpen = true }) { const focusRef = useRef(null); const viewport = useViewport(); - const agentReserve = agentOpen && viewport.width >= 960 ? AGENT_PANEL_WIDTH + MAIL_GAP : 0; + const agentReserve = agentOpen && viewport.width >= 1200 ? AGENT_PANEL_WIDTH + MAIL_GAP : 0; const dockRight = agentReserve + 16; const expandedWindows = useMemo( diff --git a/frontend/src/components/DashboardPage.jsx b/frontend/src/components/DashboardPage.jsx index 8d49a1d..45b4d81 100644 --- a/frontend/src/components/DashboardPage.jsx +++ b/frontend/src/components/DashboardPage.jsx @@ -28,6 +28,8 @@ import { import { useCallback, useEffect, useState } from "react"; import { getCurrentAccount, getMyCompanyDomain } from "../api"; import Brand from "./Brand"; +import MobileChrome from "./MobileChrome"; +import { ShellModeContext } from "../shellMode"; import CompanyDnsSetup from "./CompanyDnsSetup"; import CompanyDomains from "./CompanyDomains"; import CompanyAdministrators from "./CompanyAdministrators"; @@ -110,6 +112,7 @@ export default function DashboardPage() { const [domainError, setDomainError] = useState(""); const [active, setActive] = useState("Inbox"); const [menuOpen, setMenuOpen] = useState(false); + const [sheet, setSheet] = useState(null); const [notice, setNotice] = useState(""); const [loading, setLoading] = useState(true); const [mailRefreshKey, setMailRefreshKey] = useState(0); @@ -174,6 +177,7 @@ export default function DashboardPage() { setCompanyActive(label); setAgentNav(null); setMenuOpen(false); + setSheet(null); } function selectMailItem(item) { @@ -190,6 +194,7 @@ export default function DashboardPage() { setLens("all"); } setMenuOpen(false); + setSheet(null); } function selectLabel(name) { @@ -198,6 +203,7 @@ export default function DashboardPage() { setActive("Inbox"); setLens(name); setMenuOpen(false); + setSheet(null); } function selectAgentItem(item, actionKey) { @@ -206,6 +212,32 @@ export default function DashboardPage() { setLens("all"); setAgentNav(actionKey); setMenuOpen(false); + const compact = window.matchMedia("(max-width: 1199px)").matches; + setSheet(actionKey === "handoff" || !compact ? null : "agent"); + } + + function openAgentDestination(actionKey) { + setCompanyActive(null); + setActive("Inbox"); + setLens("all"); + setAgentNav(actionKey); + setMenuOpen(false); + setSheet("agent"); + } + + function showMailboxForSheet() { + setCompanyActive(null); + setActive("Inbox"); + setLens("all"); + setMenuOpen(false); + } + + function openSheet(next) { + if (next === "agent" || next === "calendar" || next === "notes") { + showMailboxForSheet(); + setAgentNav(next === "agent" ? "ask" : null); + } + setSheet(next); } function openCompose(context = null) { @@ -277,10 +309,15 @@ export default function DashboardPage() { : active; return ( -