From 4d577a20a9469c687fb56e816b55faed62e9effd Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Wed, 15 Apr 2026 21:56:18 +0530 Subject: [PATCH] refactor: update PDF viewer and report card components for improved accessibility and UI consistency --- .../components/report-panel/pdf-viewer.tsx | 28 +++++++++---------- .../components/tool-ui/generate-report.tsx | 20 ++++--------- .../components/tool-ui/generate-resume.tsx | 25 +++++------------ 3 files changed, 27 insertions(+), 46 deletions(-) diff --git a/surfsense_web/components/report-panel/pdf-viewer.tsx b/surfsense_web/components/report-panel/pdf-viewer.tsx index eb79431be..d161ed27c 100644 --- a/surfsense_web/components/report-panel/pdf-viewer.tsx +++ b/surfsense_web/components/report-panel/pdf-viewer.tsx @@ -1,11 +1,12 @@ "use client"; import { ChevronLeftIcon, ChevronRightIcon, ZoomInIcon, ZoomOutIcon } from "lucide-react"; -import { useCallback, useMemo, useRef, useState } from "react"; +import { useCallback, useRef, useState } from "react"; import { Document, Page, pdfjs } from "react-pdf"; import "react-pdf/dist/Page/AnnotationLayer.css"; import "react-pdf/dist/Page/TextLayer.css"; import { Button } from "@/components/ui/button"; +import { Spinner } from "@/components/ui/spinner"; import { getAuthHeaders } from "@/lib/auth-utils"; pdfjs.GlobalWorkerOptions.workerSrc = new URL( @@ -27,8 +28,7 @@ export function PdfViewer({ pdfUrl }: PdfViewerProps) { const [scale, setScale] = useState(1); const [loadError, setLoadError] = useState(null); const containerRef = useRef(null); - - const documentOptions = useMemo(() => ({ httpHeaders: getAuthHeaders() }), []); + const documentOptionsRef = useRef({ httpHeaders: getAuthHeaders() }); const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }) => { setNumPages(numPages); @@ -109,17 +109,17 @@ export function PdfViewer({ pdfUrl }: PdfViewerProps) { )} {/* PDF content */} -
- -
-
- } +
+ + +
+ } > - {/* biome-ignore lint/a11y/useSemanticElements: can't use
+ ); } diff --git a/surfsense_web/components/tool-ui/generate-resume.tsx b/surfsense_web/components/tool-ui/generate-resume.tsx index ffd21b07b..a2c1aa5c4 100644 --- a/surfsense_web/components/tool-ui/generate-resume.tsx +++ b/surfsense_web/components/tool-ui/generate-resume.tsx @@ -56,7 +56,6 @@ function ResumeErrorState({ title, error }: { title: string; error: string }) {
-

Resume Generation Failed

@@ -74,7 +73,6 @@ function ResumeCancelledState() {
-

Resume Cancelled

Resume generation was cancelled

@@ -131,22 +129,13 @@ function ResumeCard({
- {/* biome-ignore lint/a11y/useSemanticElements: nested interactive content */} -
{ - if (e.key === "Enter" || e.key === " ") { - e.preventDefault(); - handleOpen(); - } - }} - className="w-full text-left transition-colors hover:bg-muted/50 focus:outline-none focus-visible:outline-none cursor-pointer" - > +
+
); }