@@ -22,7 +22,7 @@ import {
2222 resolveSupervisorRetryOnTimeout ,
2323} from "@coder-studio/core" ;
2424import { useAtom , useAtomValue , useSetAtom } from "jotai" ;
25- import { Check , ChevronRight } from "lucide-react" ;
25+ import { Check , ChevronLeft , ChevronRight } from "lucide-react" ;
2626import { useEffect , useId , useRef , useState } from "react" ;
2727import { useNavigate } from "react-router-dom" ;
2828import { localeAtom , themeAtom } from "../../../atoms/app-ui" ;
@@ -464,12 +464,40 @@ export function SettingsPage() {
464464 return (
465465 < div className = { `settings-page ${ isMobile ? "settings-page--mobile" : "" } ` } >
466466 < header className = "settings-header" >
467- < MobilePageHeader
468- title = { headerTitle }
469- titleAs = "div"
470- onBack = { handleBack }
471- backLabel = { t ( "action.back" ) }
472- />
467+ { isMobile ? (
468+ < MobilePageHeader
469+ title = { headerTitle }
470+ titleAs = "div"
471+ onBack = { handleBack }
472+ backLabel = { t ( "action.back" ) }
473+ />
474+ ) : (
475+ < div className = "settings-header__desktop" >
476+ < button
477+ type = "button"
478+ className = "page-header__back settings-header__back"
479+ onClick = { handleBack }
480+ >
481+ < ChevronLeft size = { 16 } />
482+ < span > { t ( "action.back" ) } </ span >
483+ </ button >
484+ < div className = "settings-header__copy" >
485+ < div className = "page-kicker settings-header__kicker" > { t ( "app.name" ) } </ div >
486+ < h1 className = "page-title settings-header__title" > { t ( "settings.title" ) } </ h1 >
487+ < p className = "settings-header__summary meta-text" >
488+ < span > { t ( activeSectionMeta . labelKey ) } </ span >
489+ < span className = "settings-header__summary-separator" aria-hidden = "true" >
490+ •
491+ </ span >
492+ < span > { t ( "settings.autosave_hint" ) } </ span >
493+ </ p >
494+ </ div >
495+ < div className = "settings-header__section-pill" >
496+ < ThemedIcon semantic = { activeSectionMeta . iconSemantic } size = { 14 } />
497+ < span > { t ( activeSectionMeta . labelKey ) } </ span >
498+ </ div >
499+ </ div >
500+ ) }
473501 </ header >
474502
475503 { shouldShowMobileRoot ? (
@@ -497,31 +525,35 @@ export function SettingsPage() {
497525 < main
498526 className = { `settings-content ${ isMobile ? "settings-content--mobile" : "" } ${ isMobileDetailView ? "settings-content--mobile-detail" : "" } ${ contentLayoutMode === "fill-height" ? "settings-content--fill-height" : "" } ` }
499527 >
500- { settingsLoadError && (
501- < Notice
502- role = "alert"
503- tone = "error"
504- title = { t ( "settings.load_failed" ) }
505- message = { settingsLoadError }
506- action = {
507- < button
508- type = "button"
509- className = "settings-link"
510- onClick = { ( ) => setSettingsRefreshKey ( ( value ) => value + 1 ) }
511- >
512- { t ( "action.refresh" ) }
513- </ button >
514- }
515- />
516- ) }
517- { renderContent ( ) }
528+ < div className = "settings-content-surface" >
529+ { settingsLoadError && (
530+ < Notice
531+ role = "alert"
532+ tone = "error"
533+ title = { t ( "settings.load_failed" ) }
534+ message = { settingsLoadError }
535+ action = {
536+ < button
537+ type = "button"
538+ className = "settings-link"
539+ onClick = { ( ) => setSettingsRefreshKey ( ( value ) => value + 1 ) }
540+ >
541+ { t ( "action.refresh" ) }
542+ </ button >
543+ }
544+ />
545+ ) }
546+ { renderContent ( ) }
547+ </ div >
518548 </ main >
519549 </ div >
520550 ) }
521551
522552 < footer className = { `settings-footer ${ isMobile ? "settings-footer--mobile" : "" } ` } >
523- < span className = "settings-autosave" > { t ( "settings.autosave_hint" ) } </ span >
524- < span className = "settings-version" > v{ serverInfo ?. version ?? "0.0.0" } </ span >
553+ < div className = "settings-footer__meta" >
554+ < span className = "settings-autosave" > { t ( "settings.autosave_hint" ) } </ span >
555+ < span className = "settings-version" > v{ serverInfo ?. version ?? "0.0.0" } </ span >
556+ </ div >
525557 </ footer >
526558 </ div >
527559 ) ;
0 commit comments