Files
kandev/apps/web/components/kanban/kanban-header-mobile.tsx
T
José Almeida 68c94dfa3a feat: refine workbench chrome (#761)
* docs: define product and design direction

* style: establish restrained workbench primitives

* refactor: declutter board and task topbars

* style: align dockview panel chrome

* fix: align task topbar vcs control sizing

* refactor: surface integrations navigation

* fix: repair integrations and task creation workflow

* refactor: include linear in integrations navigation

* style: restore familiar workbench tones

* fix: add dockview tab breathing room

* fix: show configured integration shortcuts

* fix: hover open integrations menu

* fix: stabilize integrations hover menu

* fix: align home and dockview topbars

* fix: normalize home topbar controls

* fix: compact home topbar height

* fix: simplify home chrome and split buttons

* fix: move integrations to left chrome

* fix: restore home stats shortcut

* fix: add dockview tab breathing room

* fix: border home stats button

* fix: streamline dockview topbar actions

* fix: align task split button seam

* fix: address review feedback

* fix: restore topbar e2e affordances

* fix: stabilize workflow e2e isolation

* fix: add task topbar action overflow

* fix: address PR review feedback
2026-05-01 21:02:41 +01:00

74 lines
2.1 KiB
TypeScript

"use client";
import { Button } from "@kandev/ui/button";
import { IconMenu2 } from "@tabler/icons-react";
import { PageTopbar } from "@/components/page-topbar";
import { MobileMenuSheet } from "./mobile-menu-sheet";
import { useAppStore } from "@/components/state-provider";
type KanbanHeaderMobileProps = {
workspaceId?: string;
currentPage?: "kanban" | "tasks";
title: string;
workspaceLabel: string;
searchQuery?: string;
onSearchChange?: (query: string) => void;
isSearchLoading?: boolean;
showReleaseNotesButton: boolean;
onOpenReleaseNotes: () => void;
showHealthIndicator: boolean;
onOpenHealthDialog: () => void;
};
export function KanbanHeaderMobile({
workspaceId,
currentPage = "kanban",
title,
workspaceLabel,
searchQuery = "",
onSearchChange,
isSearchLoading = false,
showReleaseNotesButton,
onOpenReleaseNotes,
showHealthIndicator,
onOpenHealthDialog,
}: KanbanHeaderMobileProps) {
const isMenuOpen = useAppStore((state) => state.mobileKanban.isMenuOpen);
const setMenuOpen = useAppStore((state) => state.setMobileKanbanMenuOpen);
return (
<>
<PageTopbar
title={title}
subtitle={workspaceLabel}
className="h-10 px-3 py-1"
variant={title === "Home" ? "root" : "breadcrumb"}
actions={
<Button
variant="outline"
size="icon-lg"
onClick={() => setMenuOpen(true)}
className="cursor-pointer"
>
<IconMenu2 className="h-4 w-4" />
<span className="sr-only">Open menu</span>
</Button>
}
/>
<MobileMenuSheet
open={isMenuOpen}
onOpenChange={setMenuOpen}
workspaceId={workspaceId}
currentPage={currentPage}
searchQuery={searchQuery}
onSearchChange={onSearchChange}
isSearchLoading={isSearchLoading}
showReleaseNotesButton={showReleaseNotesButton}
onOpenReleaseNotes={onOpenReleaseNotes}
showHealthIndicator={showHealthIndicator}
onOpenHealthDialog={onOpenHealthDialog}
/>
</>
);
}