@@ -275,8 +275,6 @@ 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.
280278 const isSettingsRoute = useRouterState ( {
281279 select : ( s ) => s . matches . some ( ( m ) => m . routeId . startsWith ( "/settings" ) ) ,
282280 } ) ;
@@ -311,31 +309,6 @@ function RootLayout() {
311309 const activeTabBlank = useActiveTabIsBlank ( ) ;
312310 const showBlankTab = onChannelsIndex && activeTabBlank ;
313311
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-
339312 return (
340313 // DnD scope for the tab strip's drag-to-reorder (pill sortables live in
341314 // the title bar; the provider must sit above them).
@@ -365,12 +338,17 @@ function RootLayout() {
365338 // over- or under-shoots; the env var fallback covers hosts
366339 // without Window Controls Overlay.
367340 paddingLeft : isMac ? "env(titlebar-area-x, 78px)" : "78px" ,
368- width : sidebarOpen ? channelsSidebarWidth : undefined ,
341+ width : sidebarOpen
342+ ? isSettingsRoute
343+ ? "256px"
344+ : channelsSidebarWidth
345+ : undefined ,
369346 // Same curve/duration as ResizableSidebar's SLIDE_EASING so the
370347 // title bar tracks the sidebar edge.
371- transition : sidebarIsResizing
372- ? "none"
373- : "width 0.2s cubic-bezier(0, 0, 0.2, 1)" ,
348+ transition :
349+ isSettingsRoute || sidebarIsResizing
350+ ? "none"
351+ : "width 0.2s cubic-bezier(0, 0, 0.2, 1)" ,
374352 } }
375353 >
376354 < Flex align = "center" gap = "2" className = "no-drag" >
@@ -383,7 +361,7 @@ function RootLayout() {
383361 aria-label = "Toggle sidebar"
384362 onClick = { handleToggleSidebar }
385363 onMouseEnter = { ( ) => {
386- if ( ! sidebarOpen ) beginSidebarPeek ( ) ;
364+ if ( ! isSettingsRoute && ! sidebarOpen ) beginSidebarPeek ( ) ;
387365 } }
388366 >
389367 { sidebarOpen ? (
@@ -444,42 +422,51 @@ function RootLayout() {
444422 ) }
445423 </ Flex >
446424 < ConnectivityBanner />
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 >
480- </ Box >
425+ { isSettingsRoute ? (
426+ < Box
427+ flexGrow = "1"
428+ className = "overflow-hidden border-border border-t bg-background"
429+ >
430+ < Outlet />
481431 </ Box >
482- </ Flex >
432+ ) : (
433+ < Flex flexGrow = "1" overflow = "hidden" className = "relative" >
434+ { /* Scrim under the peeked nav: dims the content while the overlay is
435+ out. Purely visual (pointer-transparent) and paired with the
436+ panel's slide — same 200ms ease-out — so they read as one unit. */ }
437+ { ! sidebarOpen && (
438+ < Box
439+ aria-hidden
440+ // The radix preset replaces Tailwind's palette, so plain
441+ // `bg-black/*` doesn't exist — use the radix black-alpha scale
442+ // (--black-a2 = 10%, --black-a5 = 30%).
443+ 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 ${
444+ sidebarPeek ? "opacity-100" : "opacity-0"
445+ } `}
446+ />
447+ ) }
448+ < ChannelsSidebar />
449+ { /* Content sits in a bordered, rounded card inset from the window
450+ edges — the framed pane from the design. */ }
451+ < Box flexGrow = "1" className = "overflow-hidden" >
452+ < Box
453+ className = { `h-full overflow-hidden border-border border-t border-l bg-background ${
454+ sidebarOpen ? "rounded-tl-sm" : ""
455+ } `}
456+ >
457+ < Flex direction = "column" height = "100%" >
458+ { /* The /website space renders its own header (WebsiteLayout);
459+ everywhere else the shared header carries the view title
460+ and, on a task, its action row. */ }
461+ { ! onWebsitePath && < ContentHeader /> }
462+ < Box flexGrow = "1" overflow = "hidden" >
463+ { showBlankTab ? < BlankTabView /> : < Outlet /> }
464+ </ Box >
465+ </ Flex >
466+ </ Box >
467+ </ Box >
468+ </ Flex >
469+ ) }
483470 < CommandMenu open = { commandMenuOpen } onOpenChange = { setCommandMenuOpen } />
484471 < GlobalFilePicker />
485472 < KeyboardShortcutsSheet
0 commit comments