Skip to content

fix: improve chat layout for landscape mobile viewports#503

Merged
AnthonyRonning merged 1 commit intomasterfrom
devin/1777918021-landscape-mobile-layout
May 5, 2026
Merged

fix: improve chat layout for landscape mobile viewports#503
AnthonyRonning merged 1 commit intomasterfrom
devin/1777918021-landscape-mobile-layout

Conversation

@devin-ai-integration
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot commented May 4, 2026

Summary

Fixes cramped landscape mobile layout by detecting landscape orientation on short screens and applying a compact layout. Portrait mobile keeps the original two-row header (wordmark + title on separate lines). Desktop is unchanged.

Detection: New useIsLandscapeMobile() hook using (orientation: landscape) and (max-height: 500px) — catches phones but not tablets/laptops.

Layout behavior:

Viewport Sidebar Header
Desktop (1280×800) Open, pushes content Single-row centered title
Landscape mobile (850×400) Closed, overlays Single-row: toggle + wordmark + title + new chat
Portrait mobile (375×812) Closed, overlays Two-row: toggle + wordmark + new chat (row 1), title (row 2)

Compact layout shared behavior (landscape + portrait mobile): sidebar defaults closed/overlays as drawer, Enter inserts newline, virtual keyboard auto-focus suppressed, touch features in sidebar.

Landscape-only spacing (via landscape-short: Tailwind classes): compact message padding, smaller empty-state title, reduced textarea heights, tighter vertical spacing.

Review & Testing Checklist for Human

  • Portrait mobile (375×812): Verify two-row header renders correctly — wordmark + hamburger on first row, title on second row. This is the main fix from the latest commits.
  • Landscape mobile (850×400): Verify single-row header with wordmark + title. Sidebar should auto-close and overlay when opened. Check that small phones (e.g. iPhone SE ~667×319) also get the single-row landscape header (not two-row).
  • Desktop (1280×800): Verify no regression — sidebar open, standard centered title header.
  • Archived chat view: Open an archived chat, rotate to landscape — sidebar should auto-close.

Recommended test plan: Open the preview deploy on a real phone, test in both portrait and landscape orientations. Alternatively, use Chrome DevTools device toolbar (Ctrl+Shift+M) at the viewport sizes listed above.

Notes

  • just build fails locally on master due to a pre-existing ESM/CJS mismatch in tailwind.config.js. CI/Cloudflare Pages builds pass fine.
  • Header conditional checks isLandscapeMobile before isMobile to ensure small phones in landscape get the compact single-row header (more specific condition first).

Link to Devin session: https://app.devin.ai/sessions/5f78b75e83a94439904d641d034eda8c
Requested by: @AnthonyRonning


Open in Devin Review

Summary by CodeRabbit

  • Improvements

    • Enhanced landscape orientation support on mobile devices with automatic sidebar collapse and optimized responsive layouts for better usability.
  • Style

    • Updated message containers, spacing, and responsive breakpoints for improved landscape mobile experience.

@devin-ai-integration
Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 4, 2026

Deploying maple with  Cloudflare Pages  Cloudflare Pages

Latest commit: 63b7ed2
Status: ✅  Deploy successful!
Preview URL: https://83cf30b1.maple-ca8.pages.dev
Branch Preview URL: https://devin-1777918021-landscape-m.maple-ca8.pages.dev

View logs

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

🐛 1 issue in files not directly in the diff

🐛 ProjectDetailView not updated with landscape mobile detection, causing sidebar to open as fixed overlay on landscape phones (frontend/src/components/ProjectDetailView.tsx:148-152)

The PR updates UnifiedChat.tsx, Sidebar.tsx, and _auth.chat.$chatId.tsx to use isCompactLayout = isMobile || isLandscapeMobile for landscape mobile handling, but ProjectDetailView.tsx was missed. It still only uses useIsMobile() at frontend/src/components/ProjectDetailView.tsx:148. On landscape phones (width > 768px, height < 500px), isMobile is false, so isSidebarOpen initializes to true at line 152. However, the Sidebar component was universally updated to use landscape-short:fixed (frontend/src/components/Sidebar.tsx:203), meaning the sidebar renders as a fixed-position overlay on landscape phones. This creates a broken initial state where the sidebar covers the content as a fixed overlay that the user didn't request. In contrast, UnifiedChat.tsx:1471 correctly starts the sidebar closed on landscape phones and has a dedicated effect (UnifiedChat.tsx:1514-1518) to close it when rotating to landscape.

View 6 additional findings in Devin Review.

Open in Devin Review

@devin-ai-integration
Copy link
Copy Markdown
Contributor Author

Fixed ProjectDetailView.tsx in d24f98f — now uses isCompactLayout for sidebar default state and has the same landscape-rotation effect to close the sidebar. Good catch on the missed file.

@devin-ai-integration
Copy link
Copy Markdown
Contributor Author

Testing Results — Landscape Mobile Layout

Tested locally (localhost:5173) with Chrome DevTools device toolbar across three viewport sizes. All tests passed.

Landscape Mobile (850×400) — Primary Flow
Sidebar closed (empty state) Sidebar overlay (opened)
Landscape empty Sidebar overlay
Sidebar hidden, full-width content Sidebar overlays as fixed drawer
After click-outside dismiss Compact header in conversation
Dismissed Compact header
Sidebar closes on click-outside Single-row: toggle + title + new chat. NO wordmark.
  • Sidebar defaults closed at 850×400 — passed
  • Sidebar overlays content (fixed position) — passed
  • Click-outside dismisses sidebar — passed
  • Compact header: toggle + title + new chat, no wordmarkpassed
Regression: Desktop (1280×800)
Desktop layout
Desktop
Sidebar open, large title, standard spacing — unchanged
  • Sidebar open by default — passed
  • Desktop header and layout unchangedpassed
Regression: Portrait Mobile (375×812)
Portrait mobile header
Portrait
Compact header WITH Maple wordmark (key difference from landscape)
  • Sidebar closed by default — passed
  • Compact header WITH wordmark visible — passed

Devin session

devin-ai-integration[bot]

This comment was marked as resolved.

@devin-ai-integration
Copy link
Copy Markdown
Contributor Author

Test Results — Portrait Mobile Header Fix (commit 9bcd610)

Tested on localhost:5173 with Playwright CDP viewport resizing.

Portrait Mobile (375×812) — PRIMARY TEST — PASSED

Portrait mobile two-row header

Row 1: Hamburger toggle + MAPLE wordmark + new-chat pencil icon
Row 2: "Test Message Discussion" title on its own line
Sidebar closed. Matches the request to "go back to new row for title on mobile view."

Landscape Mobile (850×400) — PASSED

Landscape mobile single-row header

Single row: hamburger + MAPLE wordmark + title + pencil icon all on one line. Sidebar closed, compact spacing.

Desktop Regression (1280×800) — PASSED

Desktop standard layout

Sidebar open, centered title, standard desktop layout — unchanged from master.


Devin session

- Add useIsLandscapeMobile hook to detect landscape orientation on short
  screens (orientation: landscape, max-height: 500px)
- Add landscape-short Tailwind screen for CSS-only responsive overrides
- Default sidebar to closed in landscape mobile (was auto-opening since
  viewport width > 768px, consuming ~300px of limited screen space)
- Use compact single-row header in landscape mobile to save vertical space
- Reduce message padding, input area size, and spacing in landscape mode
- Sidebar overlays content instead of pushing it in landscape mode
- Normal mobile portrait and desktop layouts are unaffected

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: use isCompactLayout for auto-focus and ChatHistoryList isMobile prop

- Skip auto-focus on landscape mobile to prevent virtual keyboard popup
- Pass isCompactLayout to ChatHistoryList so touch features (long-press,
  context menus) work correctly on landscape phones

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: use isCompactLayout in handleKeyDown to prevent Enter-submit on landscape phones

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: use isCompactLayout for New Chat button in archived chat view

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: add landscape mobile handling to ProjectDetailView

- Use isCompactLayout for sidebar default state
- Add effect to close sidebar when rotating to landscape

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: restore two-row header for portrait mobile, keep single-row for landscape

- Portrait mobile: two-row header (toggle + wordmark on first row, title on second)
- Landscape mobile: single-row header with wordmark + title (has enough room)
- Desktop: unchanged single-row centered header

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>

fix: check landscape before portrait in header, add sidebar auto-close to archived view

- Reorder header conditional to check isLandscapeMobile first so small
  phones in landscape get the single-row compact header
- Add missing useEffect to auto-close sidebar on rotation in archived
  chat view, matching UnifiedChat and ProjectDetailView

Co-Authored-By: tony@opensecret.cloud <TonyGiorgio@protonmail.com>
@AnthonyRonning AnthonyRonning force-pushed the devin/1777918021-landscape-mobile-layout branch from 9bcd610 to 63b7ed2 Compare May 5, 2026 05:51
@AnthonyRonning
Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 5, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 5, 2026

📝 Walkthrough

Walkthrough

A new landscape-mobile detection hook and Tailwind breakpoint enable responsive layout adjustments across the chat UI. Components now combine mobile and landscape-mobile states into a unified compact-layout flag, automatically closing sidebars during orientation changes and applying spacing/height adjustments via new landscape-short classes.

Changes

Landscape-Mobile Responsive Layout

Layer / File(s) Summary
Foundation: Detection Hook & Breakpoint
frontend/src/utils/utils.ts, frontend/tailwind.config.js
useIsLandscapeMobile hook detects landscape orientation with max-height 500px; landscape-short Tailwind breakpoint added for responsive styling.
Core Logic: Compact Layout Detection
frontend/src/components/ProjectDetailView.tsx, frontend/src/components/Sidebar.tsx, frontend/src/components/UnifiedChat.tsx, frontend/src/routes/_auth.chat.$chatId.tsx
Components import and combine useIsMobile and useIsLandscapeMobile into isCompactLayout flag; sidebar state initialization and auto-close effects updated to respond to landscape-mobile transitions.
State Management: Sidebar Auto-Close
frontend/src/components/ProjectDetailView.tsx, frontend/src/components/UnifiedChat.tsx, frontend/src/routes/_auth.chat.$chatId.tsx
Effects close sidebar when isLandscapeMobile becomes true while sidebar is open; click-outside and route-change logic now depend on combined isCompactLayout.
UI: Responsive Spacing & Layout
frontend/src/components/UnifiedChat.tsx
Message containers, composer elements, and header/toggle areas updated with landscape-short classes for adjusted padding, height, and spacing on short landscape screens.

Sequence Diagram

sequenceDiagram
    participant Device as Mobile Device
    participant Hook as useIsLandscapeMobile Hook
    participant Component as Component Logic
    participant UI as UI Render Layer

    Device->>Hook: Screen rotates to landscape<br/>(orientation: landscape,<br/>max-height: 500px)
    Hook->>Hook: MediaQueryList "change" event fires
    Hook->>Component: Hook state updates to true
    Component->>Component: isCompactLayout = true<br/>(isMobile || isLandscapeMobile)
    Component->>Component: Effect detects landscape-mobile<br/>with open sidebar
    Component->>Component: Sidebar auto-closes
    Component->>UI: Re-render with updated state
    UI->>UI: Apply landscape-short classes<br/>(padding, spacing, height)
    UI->>Device: Display adjusted layout
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–25 minutes

Possibly related PRs

  • OpenSecretCloud/Maple#333: Both PRs modify sidebar open-state behavior and click-outside logic in Sidebar and UnifiedChat, extending mobile responsiveness to landscape-mobile detection.
  • OpenSecretCloud/Maple#101: Both PRs update mobile/compact-layout detection logic in the chat route, affecting new-chat visibility and sidebar toggle behavior.
  • OpenSecretCloud/Maple#502: Both PRs modify sidebar/chat layout, responsive breakpoints, and update the same component files (Sidebar, UnifiedChat, ProjectDetailView, chat route, and Tailwind config).

Poem

🐰 A rabbit hops through landscape wide,
Short screens now know which side to hide,
The sidebar slides when screens rotate,
Responsive spacing—landscape feels great!
Mobile and tall, one compact fate.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: improve chat layout for landscape mobile viewports' directly and specifically summarizes the main change: detecting landscape mobile viewports and improving the chat layout accordingly.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch devin/1777918021-landscape-mobile-layout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@frontend/src/components/ProjectDetailView.tsx`:
- Around line 156-160: The effect currently only watches isLandscapeMobile;
change it to key off isCompactLayout so the sidebar auto-closes for any compact
layout. In the useEffect (function surrounding
isLandscapeMobile/isSidebarOpen/setIsSidebarOpen) replace the condition to check
isCompactLayout (e.g., if (isCompactLayout && isSidebarOpen)
setIsSidebarOpen(false)) and update the dependency array to [isCompactLayout]
(and include isSidebarOpen if you prefer explicitness) instead of
[isLandscapeMobile]; keep useEffect and setIsSidebarOpen as the referenced
symbols.

In `@frontend/src/components/UnifiedChat.tsx`:
- Around line 1514-1518: The useEffect that auto-closes the sidebar only checks
isLandscapeMobile; update it to also consider the compact layout flag so
portrait-mobile transitions close the sidebar too: change the conditional inside
the useEffect to if ((isLandscapeMobile || isCompactLayout) && isSidebarOpen)
setIsSidebarOpen(false), and update the dependency array to [isLandscapeMobile,
isCompactLayout, isSidebarOpen] (remove the eslint-disable-line) so the effect
runs when either layout flag or sidebar state changes; modify the effect
surrounding function name useEffect and the referenced symbols
isLandscapeMobile, isCompactLayout, isSidebarOpen, and setIsSidebarOpen
accordingly.

In `@frontend/src/routes/_auth.chat`.$chatId.tsx:
- Around line 173-177: The sidebar auto-close effect currently only watches
isLandscapeMobile; update the useEffect that contains isLandscapeMobile to also
consider isCompactLayout and change the condition to close the sidebar when the
layout becomes compact (e.g., if (isCompactLayout && isSidebarOpen)
setIsSidebarOpen(false)). Modify the dependency array to include isCompactLayout
(and keep isLandscapeMobile if still needed) so transitions like
desktop→portrait-mobile trigger the overlay-close behavior; reference the
useEffect, isLandscapeMobile, isCompactLayout, isSidebarOpen, and
setIsSidebarOpen identifiers when making the change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8ad9d7e4-d062-445c-9734-a65257cf3e46

📥 Commits

Reviewing files that changed from the base of the PR and between 2e0035b and 63b7ed2.

📒 Files selected for processing (6)
  • frontend/src/components/ProjectDetailView.tsx
  • frontend/src/components/Sidebar.tsx
  • frontend/src/components/UnifiedChat.tsx
  • frontend/src/routes/_auth.chat.$chatId.tsx
  • frontend/src/utils/utils.ts
  • frontend/tailwind.config.js

Comment on lines +156 to +160
useEffect(() => {
if (isLandscapeMobile && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Sidebar auto-close should key off compact layout, not landscape-only.

On Line 157, the effect only reacts to isLandscapeMobile. If the viewport transitions from desktop to portrait mobile, isCompactLayout becomes true but the sidebar can remain open.

Proposed fix
-  useEffect(() => {
-    if (isLandscapeMobile && isSidebarOpen) {
-      setIsSidebarOpen(false);
-    }
-  }, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
+  useEffect(() => {
+    if (isCompactLayout && isSidebarOpen) {
+      setIsSidebarOpen(false);
+    }
+  }, [isCompactLayout, isSidebarOpen]);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
useEffect(() => {
if (isLandscapeMobile && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
useEffect(() => {
if (isCompactLayout && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isCompactLayout, isSidebarOpen]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/ProjectDetailView.tsx` around lines 156 - 160, The
effect currently only watches isLandscapeMobile; change it to key off
isCompactLayout so the sidebar auto-closes for any compact layout. In the
useEffect (function surrounding
isLandscapeMobile/isSidebarOpen/setIsSidebarOpen) replace the condition to check
isCompactLayout (e.g., if (isCompactLayout && isSidebarOpen)
setIsSidebarOpen(false)) and update the dependency array to [isCompactLayout]
(and include isSidebarOpen if you prefer explicitness) instead of
[isLandscapeMobile]; keep useEffect and setIsSidebarOpen as the referenced
symbols.

Comment on lines +1514 to +1518
useEffect(() => {
if (isLandscapeMobile && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Compact-mode sidebar behavior should include portrait mobile transitions.

On Line 1515, auto-close is tied only to isLandscapeMobile. The compact rules now include portrait mobile too (isCompactLayout), so desktop-to-portrait resize can leave the sidebar open unexpectedly.

Proposed fix
-  useEffect(() => {
-    if (isLandscapeMobile && isSidebarOpen) {
-      setIsSidebarOpen(false);
-    }
-  }, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
+  useEffect(() => {
+    if (isCompactLayout && isSidebarOpen) {
+      setIsSidebarOpen(false);
+    }
+  }, [isCompactLayout, isSidebarOpen]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/UnifiedChat.tsx` around lines 1514 - 1518, The
useEffect that auto-closes the sidebar only checks isLandscapeMobile; update it
to also consider the compact layout flag so portrait-mobile transitions close
the sidebar too: change the conditional inside the useEffect to if
((isLandscapeMobile || isCompactLayout) && isSidebarOpen)
setIsSidebarOpen(false), and update the dependency array to [isLandscapeMobile,
isCompactLayout, isSidebarOpen] (remove the eslint-disable-line) so the effect
runs when either layout flag or sidebar state changes; modify the effect
surrounding function name useEffect and the referenced symbols
isLandscapeMobile, isCompactLayout, isSidebarOpen, and setIsSidebarOpen
accordingly.

Comment on lines +173 to +177
useEffect(() => {
if (isLandscapeMobile && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use isCompactLayout for sidebar auto-close on viewport transitions.

On Line 174, the close logic only watches isLandscapeMobile. That misses desktop-to-portrait-mobile transitions where compact behavior should also close/overlay the sidebar.

Proposed fix
-  useEffect(() => {
-    if (isLandscapeMobile && isSidebarOpen) {
-      setIsSidebarOpen(false);
-    }
-  }, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
+  useEffect(() => {
+    if (isCompactLayout && isSidebarOpen) {
+      setIsSidebarOpen(false);
+    }
+  }, [isCompactLayout, isSidebarOpen]);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
useEffect(() => {
if (isLandscapeMobile && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isLandscapeMobile]); // eslint-disable-line react-hooks/exhaustive-deps
useEffect(() => {
if (isCompactLayout && isSidebarOpen) {
setIsSidebarOpen(false);
}
}, [isCompactLayout, isSidebarOpen]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/routes/_auth.chat`.$chatId.tsx around lines 173 - 177, The
sidebar auto-close effect currently only watches isLandscapeMobile; update the
useEffect that contains isLandscapeMobile to also consider isCompactLayout and
change the condition to close the sidebar when the layout becomes compact (e.g.,
if (isCompactLayout && isSidebarOpen) setIsSidebarOpen(false)). Modify the
dependency array to include isCompactLayout (and keep isLandscapeMobile if still
needed) so transitions like desktop→portrait-mobile trigger the overlay-close
behavior; reference the useEffect, isLandscapeMobile, isCompactLayout,
isSidebarOpen, and setIsSidebarOpen identifiers when making the change.

@AnthonyRonning AnthonyRonning merged commit 715b13d into master May 5, 2026
16 checks passed
@AnthonyRonning AnthonyRonning deleted the devin/1777918021-landscape-mobile-layout branch May 5, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant