import { PdfViewer } from "@samplehc/ui/components"; import { useTaskState } from "@samplehc/ui/data"; import { Button } from "@/components/ui/button"; import { useRef } from "react"; function DocumentReviewScreen({ documentUrl }) { const [highlights, setHighlights] = useTaskState("highlights", []); const [selectedPage, setSelectedPage] = useTaskState("currentPage", 1); const viewerRef = useRef(); const addHighlight = (pageNumber, region) => { const newHighlight = { pageNumber, left: region.left, top: region.top, width: region.width, height: region.height, color: "yellow" }; setHighlights([...highlights, newHighlight]); }; const goToNextPage = () => { viewerRef.current?.scrollToPage(selectedPage + 1); }; return ( <div className="flex h-full"> <div className="flex-1"> <PdfViewer url={documentUrl} pdfViewerRef={viewerRef} highlights={highlights} selectedPage={selectedPage} onPageClick={setSelectedPage} renderTextLayer={true} renderAnnotationLayer={false} /> </div> <div className="w-64 p-4 border-l"> <h3 className="font-semibold mb-4">Review Tools</h3> <Button onClick={goToNextPage} className="mb-2"> Next Page </Button> <div className="text-sm"> Current Page: {selectedPage} </div> <div className="text-sm"> Highlights: {highlights.length} </div> </div> </div> ); }
Interactive PDF viewer with annotation and highlighting capabilities
import { PdfViewer } from "@samplehc/ui/components"; import { useRef } from "react"; function DocumentViewer({ documentUrl }) { const viewerRef = useRef(); return ( <PdfViewer pdfViewerRef={viewerRef} url={documentUrl} onPageClick={(pageNumber) => { console.log("Page clicked:", pageNumber); }} renderTextLayer={true} renderAnnotationLayer={true} /> ); }
onPageClick?: (pageNumber: number) => void
scrollToPage: (pageNumber: number) => void
onSelect?: (pageNumber: number) => void
import { PdfViewer } from "@samplehc/ui/components"; import { useTaskState } from "@samplehc/ui/data"; import { useRef } from "react"; function ReviewDocument({ documentUrl }) { const [highlights, setHighlights] = useTaskState("pdfHighlights", []); const [selectedPage, setSelectedPage] = useTaskState("selectedPage", 1); const viewerRef = useRef(); return ( <PdfViewer url={documentUrl} pdfViewerRef={viewerRef} highlights={highlights} selectedPage={selectedPage} onPageClick={setSelectedPage} renderTextLayer={true} renderAnnotationLayer={true} /> ); }
import { PdfViewer } from "@samplehc/ui/components"; import { useTaskState } from "@samplehc/ui/data"; import { Button } from "@/components/ui/button"; function DocumentSplittingScreen({ documentUrl }) { const [selectedSplits, setSelectedSplits] = useTaskState("splits", []); const [selectedPage, setSelectedPage] = useTaskState("currentPage", 1); const splitterOptions = { hidePageNumber: false, selectedSplits, onSelect: (pageNumber) => { setSelectedSplits(prev => prev.includes(pageNumber) ? prev.filter(p => p !== pageNumber) : [...prev, pageNumber] ); } }; const processSplits = () => { console.log("Processing document splits:", selectedSplits); // Handle document splitting logic }; return ( <div className="h-full flex flex-col"> <div className="p-4 border-b"> <div className="flex justify-between items-center"> <h2 className="text-lg font-semibold">Split Document</h2> <Button onClick={processSplits} disabled={selectedSplits.length === 0}> Create {selectedSplits.length} Documents </Button> </div> </div> <div className="flex-1"> <PdfViewer url={documentUrl} selectedPage={selectedPage} onPageClick={setSelectedPage} splitterOptions={splitterOptions} renderTextLayer={false} renderAnnotationLayer={false} /> </div> </div> ); }