diff options
| author | Adam <[email protected]> | 2025-12-22 04:37:10 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-22 05:46:07 -0600 |
| commit | 653c206688262c080cba988a237acd67da9e714f (patch) | |
| tree | e74c1d439ffe4a4ed31b318d0091dc702526c288 /packages/desktop/src/components/header.tsx | |
| parent | 580f46b589e3cfdbf21d135ee61e2e258c76e46e (diff) | |
| download | opencode-653c206688262c080cba988a237acd67da9e714f.tar.gz opencode-653c206688262c080cba988a237acd67da9e714f.zip | |
feat(desktop): mobile responsiveness
Diffstat (limited to 'packages/desktop/src/components/header.tsx')
| -rw-r--r-- | packages/desktop/src/components/header.tsx | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/packages/desktop/src/components/header.tsx b/packages/desktop/src/components/header.tsx index 69c15449a..c5ecd9871 100644 --- a/packages/desktop/src/components/header.tsx +++ b/packages/desktop/src/components/header.tsx @@ -20,6 +20,7 @@ import { iife } from "@opencode-ai/util/iife" export function Header(props: { navigateToProject: (directory: string) => void navigateToSession: (session: Session | undefined) => void + onMobileMenuToggle?: () => void }) { const globalSync = useGlobalSync() const globalSDK = useGlobalSDK() @@ -29,11 +30,19 @@ export function Header(props: { return ( <header class="h-12 shrink-0 bg-background-base border-b border-border-weak-base flex" data-tauri-drag-region> + <button + type="button" + class="xl:hidden w-12 shrink-0 flex items-center justify-center border-r border-border-weak-base hover:bg-surface-raised-base-hover active:bg-surface-raised-base-active transition-colors" + onClick={props.onMobileMenuToggle} + > + <Icon name="menu" size="small" /> + </button> <A href="/" classList={{ + "hidden xl:flex": true, "w-12 shrink-0 px-4 py-3.5": true, - "flex items-center justify-start self-stretch": true, + "items-center justify-start self-stretch": true, "border-r border-border-weak-base": true, }} style={{ width: layout.sidebar.opened() ? `${layout.sidebar.width()}px` : undefined }} @@ -51,25 +60,27 @@ export function Header(props: { const shareEnabled = createMemo(() => store().config.share !== "disabled") return ( <> - <div class="flex items-center gap-3"> - <div class="flex items-center gap-2"> - <Select - options={layout.projects.list().map((project) => project.worktree)} - current={currentDirectory()} - label={(x) => getFilename(x)} - onSelect={(x) => (x ? props.navigateToProject(x) : undefined)} - class="text-14-regular text-text-base" - variant="ghost" - > - {/* @ts-ignore */} - {(i) => ( - <div class="flex items-center gap-2"> - <Icon name="folder" size="small" /> - <div class="text-text-strong">{getFilename(i)}</div> - </div> - )} - </Select> - <div class="text-text-weaker">/</div> + <div class="flex items-center gap-3 min-w-0"> + <div class="flex items-center gap-2 min-w-0"> + <div class="hidden xl:flex items-center gap-2"> + <Select + options={layout.projects.list().map((project) => project.worktree)} + current={currentDirectory()} + label={(x) => getFilename(x)} + onSelect={(x) => (x ? props.navigateToProject(x) : undefined)} + class="text-14-regular text-text-base" + variant="ghost" + > + {/* @ts-ignore */} + {(i) => ( + <div class="flex items-center gap-2"> + <Icon name="folder" size="small" /> + <div class="text-text-strong">{getFilename(i)}</div> + </div> + )} + </Select> + <div class="text-text-weaker">/</div> + </div> <Select options={sessions()} current={currentSession()} @@ -77,12 +88,13 @@ export function Header(props: { label={(x) => x.title} value={(x) => x.id} onSelect={props.navigateToSession} - class="text-14-regular text-text-base max-w-md" + class="text-14-regular text-text-base max-w-[calc(100vw-180px)] md:max-w-md" variant="ghost" /> </div> <Show when={currentSession()}> <Tooltip + class="hidden xl:block" value={ <div class="flex items-center gap-2"> <span>New session</span> @@ -98,7 +110,7 @@ export function Header(props: { </div> <div class="flex items-center gap-4"> <Tooltip - class="shrink-0" + class="hidden md:block shrink-0" value={ <div class="flex items-center gap-2"> <span>Toggle terminal</span> |
