From 4ad05bf137232866033cb1f4afb1a98c8ec2f76a Mon Sep 17 00:00:00 2001 From: debu-2 Date: Tue, 6 Oct 2026 20:36:39 +0530 Subject: [PATCH] responsiveness fix --- frontend/src/components/ComposeDock.jsx | 2 +- frontend/src/components/DashboardPage.jsx | 65 ++- frontend/src/components/MailboxView.jsx | 24 +- frontend/src/components/MobileChrome.jsx | 101 +++++ frontend/src/main.jsx | 1 + frontend/src/responsive.css | 473 ++++++++++++++++++++++ frontend/src/shellMode.js | 10 + 7 files changed, 671 insertions(+), 5 deletions(-) create mode 100644 frontend/src/components/MobileChrome.jsx create mode 100644 frontend/src/responsive.css create mode 100644 frontend/src/shellMode.js 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 ( -
+ +
-
@@ -525,7 +562,31 @@ export default function DashboardPage() { }} /> )} + {sheet && sheet !== "more" && ( +
+
); } diff --git a/frontend/src/components/MailboxView.jsx b/frontend/src/components/MailboxView.jsx index 18ac6c1..a3e082f 100644 --- a/frontend/src/components/MailboxView.jsx +++ b/frontend/src/components/MailboxView.jsx @@ -11,6 +11,7 @@ import { RefreshCw, Search, Settings, + Sparkles, Sun, Tag, Users, @@ -37,6 +38,8 @@ import MailRow from "./MailRow"; import MailboxEmptyState from "./MailboxEmptyState"; import MailboxSelectionBar from "./MailboxSelectionBar"; import StickyNotesPanel from "./StickyNotesPanel"; +import { useShellMode } from "../shellMode"; +import { shellTitle } from "./MobileChrome"; import { categoryCounts, emailCategory, @@ -118,6 +121,7 @@ export default function MailboxView({ onStats, }) { const token = sessionStorage.getItem("agmail_access_token"); + const { sheet, setSheet } = useShellMode(); const [emails, setEmails] = useState([]); const [nextCursor, setNextCursor] = useState(null); const [total, setTotal] = useState(0); @@ -679,6 +683,14 @@ export default function MailboxView({ +
@@ -840,7 +852,7 @@ export default function MailboxView({
)} -
+
0 ? " selecting" : ""}`} aria-busy={status.loading}> {status.loading &&
Loading messages…
} {status.error && (
@@ -916,7 +928,15 @@ export default function MailboxView({
-