import type { KeyboardEventHandler, MouseEventHandler } from "react"; type CommitView = { oid: string; shortOid: string; firstLine: string; authorName: string; when: string; }; type CommitRowProps = { owner: string; repo: string; commit: CommitView; compact?: boolean; isMerge?: boolean; rowClass?: string; mergeOf?: string; toggleOid?: string; mergeExpanded?: boolean; onToggle?: MouseEventHandler; }; export function CommitRow({ owner, repo, commit, compact, isMerge, rowClass, mergeOf, toggleOid, mergeExpanded, onToggle, }: CommitRowProps) { const classes = [ compact ? "text-sm subrow bg-accent-50/20 dark:bg-accent-900/10 border-l-2 border-b border-b-zinc-200 border-l-accent-400 dark:border-b-zinc-800 dark:border-l-accent-700" : "", rowClass || "", ] .filter(Boolean) .join(" "); const onKeyDown: KeyboardEventHandler | undefined = onToggle ? (event) => { if (event.key !== "Enter" && event.key !== " ") { return; } event.preventDefault(); onToggle(event as unknown as Parameters>[0]); } : undefined; return ( {commit.shortOid} {isMerge ? ( Merge ) : null} {commit.firstLine} {commit.authorName} {commit.when} ); }