68c94dfa3a
* 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
74 lines
2.1 KiB
TypeScript
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}
|
|
/>
|
|
</>
|
|
);
|
|
}
|