"use client"; import { useCallback, type ReactNode } from "react"; import { cn } from "@kandev/ui/lib/utils"; import { Button } from "@kandev/ui/button"; import { Tooltip, TooltipTrigger, TooltipContent } from "@kandev/ui/tooltip"; import { IconCopy, IconTextWrap, IconLayoutRows, IconLayoutColumns, IconPencil, IconArrowBackUp, } from "@tabler/icons-react"; import type { RenderHeaderMetadataProps } from "@pierre/diffs"; import type { ViewMode } from "@/hooks/use-global-view-mode"; interface DiffHeaderToolbarOptions { filePath: string; diff?: string; wordWrap: boolean; onToggleWordWrap: () => void; viewMode: ViewMode; onToggleViewMode: () => void; onOpenFile?: (filePath: string) => void; onRevert?: (filePath: string) => void; } export function useDiffHeaderToolbar({ filePath, diff, wordWrap, onToggleWordWrap, viewMode, onToggleViewMode, onOpenFile, onRevert, }: DiffHeaderToolbarOptions) { const renderHeaderMetadata = useCallback( (props: RenderHeaderMetadataProps): ReactNode => { const resolvedPath = props.fileDiff?.name || filePath; return (
Copy diff {onRevert && ( Revert changes )} Toggle word wrap {viewMode === "split" ? "Switch to unified view" : "Switch to split view"} {onOpenFile && ( Edit )}
); }, [filePath, diff, wordWrap, onToggleWordWrap, viewMode, onToggleViewMode, onOpenFile, onRevert], ); return renderHeaderMetadata; }