import { Text, Group, UnstyledButton, Avatar, Tooltip, ActionIcon, Checkbox, Menu, } from "@mantine/core"; import { IconDots } from "@tabler/icons-react"; import { CustomAvatar } from "@/components/ui/custom-avatar.tsx"; import { formattedDate } from "@/lib/time"; import classes from "./css/history.module.css"; import clsx from "clsx"; import { IPageHistory } from "@/features/page-history/types/page.types"; import { memo, useCallback } from "react"; import { useTranslation } from "react-i18next"; const MAX_VISIBLE_AVATARS = 5; interface HistoryItemProps { historyItem: IPageHistory; index: number; onSelect: (id: string, index: number) => void; onHover?: (id: string, index: number) => void; onHoverEnd?: () => void; isActive: boolean; compareMode: boolean; isChecked: boolean; isCheckboxDisabled: boolean; canCompare: boolean; onToggleCompare: (id: string) => void; onStartCompare: (id: string) => void; onRestore?: (id: string, index: number) => void; } const HistoryItem = memo(function HistoryItem({ historyItem, index, onSelect, onHover, onHoverEnd, isActive, compareMode, isChecked, isCheckboxDisabled, canCompare, onToggleCompare, onStartCompare, onRestore, }: HistoryItemProps) { const { t } = useTranslation(); const date = formattedDate(new Date(historyItem.createdAt)); const handleClick = useCallback(() => { if (compareMode) { onToggleCompare(historyItem.id); } else { onSelect(historyItem.id, index); } }, [compareMode, onToggleCompare, onSelect, historyItem.id, index]); const handleMouseEnter = useCallback(() => { onHover?.(historyItem.id, index); }, [onHover, historyItem.id, index]); const contributors = historyItem.contributors; const hasContributors = contributors && contributors.length > 0; return (