diff --git a/frontend/src/components/shared/QuickAccessBar.tsx b/frontend/src/components/shared/QuickAccessBar.tsx index 11b60f3c8..5722e83d1 100644 --- a/frontend/src/components/shared/QuickAccessBar.tsx +++ b/frontend/src/components/shared/QuickAccessBar.tsx @@ -16,7 +16,7 @@ import TopToolIndicator from './quickAccessBar/TopToolIndicator'; import { isNavButtonActive, getNavButtonStyle, - getActiveNavButton + getActiveNavButton, } from './quickAccessBar/QuickAccessBar'; const QuickAccessBar = forwardRef(({ @@ -24,15 +24,15 @@ const QuickAccessBar = forwardRef(({ const { t } = useTranslation(); const { isRainbowMode } = useRainbowThemeContext(); const { openFilesModal, isFilesModalOpen } = useFilesModalContext(); - const { handleReaderToggle, handleBackToTools, selectedTool, selectedToolKey, leftPanelView } = useToolWorkflow(); + const { handleReaderToggle, handleBackToTools, handleToolSelect, selectedTool, selectedToolKey, leftPanelView, toolRegistry, readerMode } = useToolWorkflow(); const [configModalOpen, setConfigModalOpen] = useState(false); const [activeButton, setActiveButton] = useState('tools'); const scrollableRef = useRef(null); const isOverflow = useIsOverflowing(scrollableRef); useEffect(() => { - setActiveButton(getActiveNavButton(leftPanelView, selectedTool, selectedToolKey)); - }, [leftPanelView, selectedTool, selectedToolKey]); + setActiveButton(getActiveNavButton(leftPanelView, selectedToolKey, toolRegistry as any, readerMode)); + }, [leftPanelView, selectedToolKey, toolRegistry, readerMode]); const handleFilesButtonClick = () => { openFilesModal(); @@ -49,9 +49,7 @@ const QuickAccessBar = forwardRef(({ type: 'navigation', onClick: () => { setActiveButton('read'); - // Clear any selected tool and return to picker so the top tool indicator hides handleBackToTools(); - // Then enter reader mode handleReaderToggle(); } }, @@ -67,8 +65,7 @@ const QuickAccessBar = forwardRef(({ type: 'navigation', onClick: () => { setActiveButton('sign'); - // Ensure any previously selected tool is cleared so indicator hides - handleBackToTools(); + handleToolSelect('sign'); } }, { @@ -83,8 +80,7 @@ const QuickAccessBar = forwardRef(({ type: 'navigation', onClick: () => { setActiveButton('automate'); - // Ensure any previously selected tool is cleared so indicator hides - handleBackToTools(); + handleToolSelect('automate'); } }, { diff --git a/frontend/src/components/shared/quickAccessBar/QuickAccessBar.ts b/frontend/src/components/shared/quickAccessBar/QuickAccessBar.ts index cafd99278..8f0fc826c 100644 --- a/frontend/src/components/shared/quickAccessBar/QuickAccessBar.ts +++ b/frontend/src/components/shared/quickAccessBar/QuickAccessBar.ts @@ -59,11 +59,7 @@ export const getTargetNavButton = ( ): string | null => { if (!selectedToolKey) return null; - const toolEntry = registry[selectedToolKey]; - if (!toolEntry) return null; - - // Use the tool's view as the nav button id - return toolEntry.view || null; + return selectedToolKey; }; /** @@ -72,8 +68,13 @@ export const getTargetNavButton = ( export const getActiveNavButton = ( leftPanelView: 'toolPicker' | 'toolContent', selectedToolKey: string | null, - registry: ReturnType + registry: ReturnType, + readerMode: boolean ): string => { + // Reader mode takes precedence and should highlight the Read nav item + if (readerMode) { + return 'read'; + } if (leftPanelView !== 'toolContent' || !selectedToolKey) { return 'tools'; } diff --git a/frontend/src/contexts/ToolWorkflowContext.tsx b/frontend/src/contexts/ToolWorkflowContext.tsx index aac35bcb4..1538b65dc 100644 --- a/frontend/src/contexts/ToolWorkflowContext.tsx +++ b/frontend/src/contexts/ToolWorkflowContext.tsx @@ -142,13 +142,22 @@ export function ToolWorkflowProvider({ children, onViewChange }: ToolWorkflowPro // Workflow actions (compound actions that coordinate multiple state changes) const handleToolSelect = useCallback((toolId: string) => { + // Special-case: if tool is a dedicated reader tool, enter reader mode and do not go to toolContent + if (toolId === 'read' || toolId === 'view-pdf') { + setReaderMode(true); + setLeftPanelView('toolPicker'); + clearToolSelection(); + setSearchQuery(''); + return; + } + selectTool(toolId); onViewChange?.('fileEditor'); setLeftPanelView('toolContent'); setReaderMode(false); // Clear search so the tool content becomes visible immediately setSearchQuery(''); - }, [selectTool, onViewChange, setLeftPanelView, setReaderMode, setSearchQuery]); + }, [selectTool, onViewChange, setLeftPanelView, setReaderMode, setSearchQuery, clearToolSelection]); const handleBackToTools = useCallback(() => { setLeftPanelView('toolPicker'); diff --git a/frontend/src/data/toolRegistry.tsx b/frontend/src/data/toolRegistry.tsx index 22c6e527e..dff31806f 100644 --- a/frontend/src/data/toolRegistry.tsx +++ b/frontend/src/data/toolRegistry.tsx @@ -670,15 +670,6 @@ export function useFlatToolRegistry(): ToolRegistry { category: "Recommended Tools", subcategory: null }, - "view-pdf": { - icon: article, - name: t("home.viewPdf.title", "View/Edit PDF"), - component: null, - view: "view", - description: t("home.viewPdf.desc", "View, annotate, draw, add text or images"), - category: "Recommended Tools", - subcategory: null - } }; }