@@ -16,6 +16,7 @@ import { useLanguage } from "@/context/language"
1616import { useLayout } from "@/context/layout"
1717import { usePlatform } from "@/context/platform"
1818import { useServer } from "@/context/server"
19+ import { useSettings } from "@/context/settings"
1920import { useSync } from "@/context/sync"
2021import { useTerminal } from "@/context/terminal"
2122import { focusTerminalById } from "@/pages/session/helpers"
@@ -134,6 +135,7 @@ export function SessionHeader() {
134135 const server = useServer ( )
135136 const platform = usePlatform ( )
136137 const language = useLanguage ( )
138+ const settings = useSettings ( )
137139 const sync = useSync ( )
138140 const terminal = useTerminal ( )
139141 const { params, view } = useSessionLayout ( )
@@ -151,6 +153,10 @@ export function SessionHeader() {
151153 } )
152154 const hotkey = createMemo ( ( ) => command . keybind ( "file.open" ) )
153155 const os = createMemo ( ( ) => detectOS ( platform ) )
156+ const search = createMemo ( ( ) => platform . platform !== "desktop" || settings . general . showSearch ( ) )
157+ const tree = createMemo ( ( ) => platform . platform !== "desktop" || settings . general . showFileTree ( ) )
158+ const term = createMemo ( ( ) => platform . platform !== "desktop" || settings . general . showTerminal ( ) )
159+ const status = createMemo ( ( ) => platform . platform !== "desktop" || settings . general . showStatus ( ) )
154160
155161 const [ exists , setExists ] = createStore < Partial < Record < OpenApp , boolean > > > ( {
156162 finder : true ,
@@ -267,35 +273,37 @@ export function SessionHeader() {
267273
268274 return (
269275 < >
270- < Show when = { centerMount ( ) } >
271- { ( mount ) => (
272- < Portal mount = { mount ( ) } >
273- < Button
274- type = "button"
275- variant = "ghost"
276- size = "small"
277- class = "hidden md:flex w-[240px] max-w-full min-w-0 items-center gap-2 justify-between rounded-md border border-border-weak-base bg-surface-panel shadow-none cursor-default"
278- onClick = { ( ) => command . trigger ( "file.open" ) }
279- aria-label = { language . t ( "session.header.searchFiles" ) }
280- >
281- < div class = "flex min-w-0 flex-1 items-center overflow-visible" >
282- < span class = "flex-1 min-w-0 text-12-regular text-text-weak truncate text-left" >
283- { language . t ( "session.header.search.placeholder" , {
284- project : name ( ) ,
285- } ) }
286- </ span >
287- </ div >
276+ < Show when = { search ( ) } >
277+ < Show when = { centerMount ( ) } >
278+ { ( mount ) => (
279+ < Portal mount = { mount ( ) } >
280+ < Button
281+ type = "button"
282+ variant = "ghost"
283+ size = "small"
284+ class = "hidden md:flex w-[240px] max-w-full min-w-0 items-center gap-2 justify-between rounded-md border border-border-weak-base bg-surface-panel shadow-none cursor-default"
285+ onClick = { ( ) => command . trigger ( "file.open" ) }
286+ aria-label = { language . t ( "session.header.searchFiles" ) }
287+ >
288+ < div class = "flex min-w-0 flex-1 items-center overflow-visible" >
289+ < span class = "flex-1 min-w-0 text-12-regular text-text-weak truncate text-left" >
290+ { language . t ( "session.header.search.placeholder" , {
291+ project : name ( ) ,
292+ } ) }
293+ </ span >
294+ </ div >
288295
289- < Show when = { hotkey ( ) } >
290- { ( keybind ) => (
291- < Keybind class = "shrink-0 !border-0 !bg-transparent !shadow-none px-0 text-text-weaker" >
292- { keybind ( ) }
293- </ Keybind >
294- ) }
295- </ Show >
296- </ Button >
297- </ Portal >
298- ) }
296+ < Show when = { hotkey ( ) } >
297+ { ( keybind ) => (
298+ < Keybind class = "shrink-0 !border-0 !bg-transparent !shadow-none px-0 text-text-weaker" >
299+ { keybind ( ) }
300+ </ Keybind >
301+ ) }
302+ </ Show >
303+ </ Button >
304+ </ Portal >
305+ ) }
306+ </ Show >
299307 </ Show >
300308 < Show when = { rightMount ( ) } >
301309 { ( mount ) => (
@@ -415,24 +423,28 @@ export function SessionHeader() {
415423 </ div >
416424 </ Show >
417425 < div class = "flex items-center gap-1" >
418- < Tooltip placement = "bottom" value = { language . t ( "status.popover.trigger" ) } >
419- < StatusPopover />
420- </ Tooltip >
421- < TooltipKeybind
422- title = { language . t ( "command.terminal.toggle" ) }
423- keybind = { command . keybind ( "terminal.toggle" ) }
424- >
425- < Button
426- variant = "ghost"
427- class = "group/terminal-toggle titlebar-icon w-8 h-6 p-0 box-border shrink-0"
428- onClick = { toggleTerminal }
429- aria-label = { language . t ( "command.terminal.toggle" ) }
430- aria-expanded = { view ( ) . terminal . opened ( ) }
431- aria-controls = "terminal-panel"
426+ < Show when = { status ( ) } >
427+ < Tooltip placement = "bottom" value = { language . t ( "status.popover.trigger" ) } >
428+ < StatusPopover />
429+ </ Tooltip >
430+ </ Show >
431+ < Show when = { term ( ) } >
432+ < TooltipKeybind
433+ title = { language . t ( "command.terminal.toggle" ) }
434+ keybind = { command . keybind ( "terminal.toggle" ) }
432435 >
433- < Icon size = "small" name = { view ( ) . terminal . opened ( ) ? "terminal-active" : "terminal" } />
434- </ Button >
435- </ TooltipKeybind >
436+ < Button
437+ variant = "ghost"
438+ class = "group/terminal-toggle titlebar-icon w-8 h-6 p-0 box-border shrink-0"
439+ onClick = { toggleTerminal }
440+ aria-label = { language . t ( "command.terminal.toggle" ) }
441+ aria-expanded = { view ( ) . terminal . opened ( ) }
442+ aria-controls = "terminal-panel"
443+ >
444+ < Icon size = "small" name = { view ( ) . terminal . opened ( ) ? "terminal-active" : "terminal" } />
445+ </ Button >
446+ </ TooltipKeybind >
447+ </ Show >
436448
437449 < div class = "hidden md:flex items-center gap-1 shrink-0" >
438450 < TooltipKeybind
@@ -451,30 +463,32 @@ export function SessionHeader() {
451463 </ Button >
452464 </ TooltipKeybind >
453465
454- < TooltipKeybind
455- title = { language . t ( "command.fileTree.toggle" ) }
456- keybind = { command . keybind ( "fileTree.toggle" ) }
457- >
458- < Button
459- variant = "ghost"
460- class = "titlebar-icon w-8 h-6 p-0 box-border"
461- onClick = { ( ) => layout . fileTree . toggle ( ) }
462- aria-label = { language . t ( "command.fileTree.toggle" ) }
463- aria-expanded = { layout . fileTree . opened ( ) }
464- aria-controls = "file-tree-panel"
466+ < Show when = { tree ( ) } >
467+ < TooltipKeybind
468+ title = { language . t ( "command.fileTree.toggle" ) }
469+ keybind = { command . keybind ( "fileTree.toggle" ) }
465470 >
466- < div class = "relative flex items-center justify-center size-4" >
467- < Icon
468- size = "small"
469- name = { layout . fileTree . opened ( ) ? "file-tree-active" : "file-tree" }
470- classList = { {
471- "text-icon-strong" : layout . fileTree . opened ( ) ,
472- "text-icon-weak" : ! layout . fileTree . opened ( ) ,
473- } }
474- />
475- </ div >
476- </ Button >
477- </ TooltipKeybind >
471+ < Button
472+ variant = "ghost"
473+ class = "titlebar-icon w-8 h-6 p-0 box-border"
474+ onClick = { ( ) => layout . fileTree . toggle ( ) }
475+ aria-label = { language . t ( "command.fileTree.toggle" ) }
476+ aria-expanded = { layout . fileTree . opened ( ) }
477+ aria-controls = "file-tree-panel"
478+ >
479+ < div class = "relative flex items-center justify-center size-4" >
480+ < Icon
481+ size = "small"
482+ name = { layout . fileTree . opened ( ) ? "file-tree-active" : "file-tree" }
483+ classList = { {
484+ "text-icon-strong" : layout . fileTree . opened ( ) ,
485+ "text-icon-weak" : ! layout . fileTree . opened ( ) ,
486+ } }
487+ />
488+ </ div >
489+ </ Button >
490+ </ TooltipKeybind >
491+ </ Show >
478492 </ div >
479493 </ div >
480494 </ div >
0 commit comments