import { Download, ExternalLinkIcon, FileText } from 'lucide-react';
import { FunctionComponent } from 'react';
import { ImageOCR } from '@/common/components/molecules/ImageOCR/ImageOCR';
import { ImageViewer } from '@/common/components/organisms/ImageViewer/ImageViewer';
import { ctw } from '@/common/utils/ctw/ctw';
import { isCsv } from '@/common/utils/is-csv/is-csv';
import { isPdf } from '@/common/utils/is-pdf/is-pdf';
import { useDocumentsToolbarLogic } from '@/pages/Entity/components/Case/hooks/useDocumentsToolbarLogic/useDocumentsToolbarLogic';
import { Tooltip } from '@/common/components/atoms/Tooltip/Tooltip';
import { TooltipContent } from '@/common/components/atoms/Tooltip/Tooltip.Content';
import { TooltipTrigger } from '@/common/components/atoms/Tooltip/Tooltip.Trigger';
import { TooltipProvider } from '@/common/components/atoms/Tooltip/Tooltip.Provider';
// Custom tooltip wrapper to avoid repetition
const ToolbarTooltip: FunctionComponent<{
label: string;
description?: string;
children: React.ReactNode;
}> = ({ label, description, children }) => (
{children}
{label}
{description && {description}
}
);
// Button style to ensure consistency
const toolbarButtonClass = `
relative btn btn-circle btn-ghost btn-sm
bg-base-300/30 hover:bg-base-300/70
text-[0.688rem]
focus:outline-primary
backdrop-filter backdrop-blur-sm
transition-all duration-200
transform hover:scale-105
shadow-sm hover:shadow-md
`;
export const DocumentsToolbar: FunctionComponent<{
image: { id: string; imageUrl: string; fileType: string; fileName: string };
isLoading?: boolean;
hideOpenExternalButton?: boolean;
onRotateDocument: () => void;
onOpenDocumentInNewTab: (id: string) => void;
shouldDownload: boolean;
onOcrPressed?: () => void;
isOCREnabled: boolean;
isLoadingOCR: boolean;
fileToDownloadBase64: string;
}> = ({
image,
isLoading,
hideOpenExternalButton,
onRotateDocument,
onOpenDocumentInNewTab,
onOcrPressed,
shouldDownload,
isLoadingOCR,
isOCREnabled,
fileToDownloadBase64,
}) => {
const { onOpenInNewTabClick } = useDocumentsToolbarLogic({
imageId: image?.id,
hideOpenExternalButton,
onOpenDocumentInNewTab,
});
return (
{/* Toolbar Button Group */}
{/* OCR Button */}
AI OCR
{/* Open in New Tab Button */}
{!hideOpenExternalButton && !isLoading && image?.id && (
Open
)}
{/* Rotate Document Button */}
{!isPdf(image) && !isCsv(image) && !isLoading && (
Rotate
)}
{/* Download Document Button */}
{/* Zoom Document Button */}
{!isLoading && (
Zoom
)}
{/* Subtle bounce indicator to draw attention */}
);
};