'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; }