@@ -275,6 +275,8 @@ function RootLayout() {
275275 }
276276 } , [ flagsLoaded , homeTabEnabled , view . type ] ) ;
277277
278+ // Settings is a full-page route — drop the app chrome (header/sidebar/
279+ // space-switcher) so the panel occupies the full window.
278280 const isSettingsRoute = useRouterState ( {
279281 select : ( s ) => s . matches . some ( ( m ) => m . routeId . startsWith ( "/settings" ) ) ,
280282 } ) ;
@@ -309,6 +311,31 @@ function RootLayout() {
309311 const activeTabBlank = useActiveTabIsBlank ( ) ;
310312 const showBlankTab = onChannelsIndex && activeTabBlank ;
311313
314+ if ( isSettingsRoute ) {
315+ return (
316+ < Flex direction = "column" height = "100%" >
317+ < ConnectivityBanner />
318+ < Outlet />
319+ < CommandMenu open = { commandMenuOpen } onOpenChange = { setCommandMenuOpen } />
320+ < GlobalFilePicker />
321+ < KeyboardShortcutsSheet
322+ open = { shortcutsSheetOpen }
323+ onOpenChange = { ( open ) => ( open ? null : closeShortcutsSheet ( ) ) }
324+ />
325+ < GlobalEventHandlers
326+ onToggleCommandMenu = { toggleCommandMenu }
327+ onToggleShortcutsSheet = { toggleShortcutsSheet }
328+ />
329+ { billingEnabled && < UsageLimitModal /> }
330+ < UsageBillingAnnouncementModal />
331+ < UpdateAvailableModal />
332+ < WhatsNewModal />
333+ < RemoteBranchCheckoutDialog />
334+ < ExistingWorktreeDialog />
335+ </ Flex >
336+ ) ;
337+ }
338+
312339 return (
313340 // DnD scope for the tab strip's drag-to-reorder (pill sortables live in
314341 // the title bar; the provider must sit above them).
@@ -338,17 +365,12 @@ function RootLayout() {
338365 // over- or under-shoots; the env var fallback covers hosts
339366 // without Window Controls Overlay.
340367 paddingLeft : isMac ? "env(titlebar-area-x, 78px)" : "78px" ,
341- width : sidebarOpen
342- ? isSettingsRoute
343- ? "256px"
344- : channelsSidebarWidth
345- : undefined ,
368+ width : sidebarOpen ? channelsSidebarWidth : undefined ,
346369 // Same curve/duration as ResizableSidebar's SLIDE_EASING so the
347370 // title bar tracks the sidebar edge.
348- transition :
349- isSettingsRoute || sidebarIsResizing
350- ? "none"
351- : "width 0.2s cubic-bezier(0, 0, 0.2, 1)" ,
371+ transition : sidebarIsResizing
372+ ? "none"
373+ : "width 0.2s cubic-bezier(0, 0, 0.2, 1)" ,
352374 } }
353375 >
354376 < Flex align = "center" gap = "2" className = "no-drag" >
@@ -361,7 +383,7 @@ function RootLayout() {
361383 aria-label = "Toggle sidebar"
362384 onClick = { handleToggleSidebar }
363385 onMouseEnter = { ( ) => {
364- if ( ! isSettingsRoute && ! sidebarOpen ) beginSidebarPeek ( ) ;
386+ if ( ! sidebarOpen ) beginSidebarPeek ( ) ;
365387 } }
366388 >
367389 { sidebarOpen ? (
@@ -422,48 +444,42 @@ function RootLayout() {
422444 ) }
423445 </ Flex >
424446 < ConnectivityBanner />
425- { isSettingsRoute ? (
426- < Box flexGrow = "1" className = "overflow-hidden bg-background" >
427- < Outlet />
428- </ Box >
429- ) : (
430- < Flex flexGrow = "1" overflow = "hidden" className = "relative" >
431- { /* Scrim under the peeked nav: dims the content while the overlay is
432- out. Purely visual (pointer-transparent) and paired with the
433- panel's slide — same 200ms ease-out — so they read as one unit. */ }
434- { ! sidebarOpen && (
435- < Box
436- aria-hidden
437- // The radix preset replaces Tailwind's palette, so plain
438- // `bg-black/*` doesn't exist — use the radix black-alpha scale
439- // (--black-a2 = 10%, --black-a5 = 30%).
440- className = { `pointer-events-none absolute inset-0 z-40 bg-blackA-2 transition-opacity duration-200 ease-out motion-reduce:transition-none dark:bg-blackA-5 ${
441- sidebarPeek ? "opacity-100" : "opacity-0"
442- } `}
443- />
444- ) }
445- < ChannelsSidebar />
446- { /* Content sits in a bordered, rounded card inset from the window
447- edges — the framed pane from the design. */ }
448- < Box flexGrow = "1" className = "overflow-hidden" >
449- < Box
450- className = { `h-full overflow-hidden border-border border-t border-l bg-background ${
451- sidebarOpen ? "rounded-tl-sm" : ""
452- } `}
453- >
454- < Flex direction = "column" height = "100%" >
455- { /* The /website space renders its own header (WebsiteLayout);
456- everywhere else the shared header carries the view title
457- and, on a task, its action row. */ }
458- { ! onWebsitePath && < ContentHeader /> }
459- < Box flexGrow = "1" overflow = "hidden" >
460- { showBlankTab ? < BlankTabView /> : < Outlet /> }
461- </ Box >
462- </ Flex >
463- </ Box >
447+ < Flex flexGrow = "1" overflow = "hidden" className = "relative" >
448+ { /* Scrim under the peeked nav: dims the content while the overlay is
449+ out. Purely visual (pointer-transparent) and paired with the
450+ panel's slide — same 200ms ease-out — so they read as one unit. */ }
451+ { ! sidebarOpen && (
452+ < Box
453+ aria-hidden
454+ // The radix preset replaces Tailwind's palette, so plain
455+ // `bg-black/*` doesn't exist — use the radix black-alpha scale
456+ // (--black-a2 = 10%, --black-a5 = 30%).
457+ className = { `pointer-events-none absolute inset-0 z-40 bg-blackA-2 transition-opacity duration-200 ease-out motion-reduce:transition-none dark:bg-blackA-5 ${
458+ sidebarPeek ? "opacity-100" : "opacity-0"
459+ } `}
460+ />
461+ ) }
462+ < ChannelsSidebar />
463+ { /* Content sits in a bordered, rounded card inset from the window
464+ edges — the framed pane from the design. */ }
465+ < Box flexGrow = "1" className = "overflow-hidden" >
466+ < Box
467+ className = { `h-full overflow-hidden border-border border-t border-l bg-background ${
468+ sidebarOpen ? "rounded-tl-sm" : ""
469+ } `}
470+ >
471+ < Flex direction = "column" height = "100%" >
472+ { /* The /website space renders its own header (WebsiteLayout);
473+ everywhere else the shared header carries the view title
474+ and, on a task, its action row. */ }
475+ { ! onWebsitePath && < ContentHeader /> }
476+ < Box flexGrow = "1" overflow = "hidden" >
477+ { showBlankTab ? < BlankTabView /> : < Outlet /> }
478+ </ Box >
479+ </ Flex >
464480 </ Box >
465- </ Flex >
466- ) }
481+ </ Box >
482+ </ Flex >
467483 < CommandMenu open = { commandMenuOpen } onOpenChange = { setCommandMenuOpen } />
468484 < GlobalFilePicker />
469485 < KeyboardShortcutsSheet
0 commit comments