Files
Stirling-PDF/frontend/src/core/components/shared/AllToolsNavButton.tsx
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

72 lines
2.3 KiB
TypeScript
Raw Normal View History

2025-08-19 13:31:09 +01:00
import React from 'react';
import { useTranslation } from 'react-i18next';
import AppsIcon from '@mui/icons-material/AppsRounded';
import { useToolWorkflow } from '@app/contexts/ToolWorkflowContext';
import { useNavigationState, useNavigationActions } from '@app/contexts/NavigationContext';
import { useSidebarNavigation } from '@app/hooks/useSidebarNavigation';
import { handleUnlessSpecialClick } from '@app/utils/clickHandlers';
2025-12-10 17:21:07 +00:00
import QuickAccessButton from '@app/components/shared/quickAccessBar/QuickAccessButton';
2025-08-19 13:31:09 +01:00
interface AllToolsNavButtonProps {
activeButton: string;
setActiveButton: (id: string) => void;
}
2025-11-24 16:57:36 +00:00
const AllToolsNavButton: React.FC<AllToolsNavButtonProps> = ({
activeButton,
setActiveButton,
}) => {
2025-08-19 13:31:09 +01:00
const { t } = useTranslation();
const { handleReaderToggle, handleBackToTools, selectedToolKey, leftPanelView } = useToolWorkflow();
const { hasUnsavedChanges } = useNavigationState();
const { actions: navigationActions } = useNavigationActions();
const { getHomeNavigation } = useSidebarNavigation();
2025-08-19 13:31:09 +01:00
const performNavigation = () => {
2025-08-19 13:31:09 +01:00
setActiveButton('tools');
// Preserve existing behavior used in QuickAccessBar header
handleReaderToggle();
handleBackToTools();
};
const handleClick = () => {
if (hasUnsavedChanges) {
navigationActions.requestNavigation(performNavigation);
return;
}
performNavigation();
};
2025-08-19 13:31:09 +01:00
// Do not highlight All Tools when a specific tool is open (indicator is shown)
const isActive = activeButton === 'tools' && !selectedToolKey && leftPanelView === 'toolPicker';
const navProps = getHomeNavigation();
const handleNavClick = (e: React.MouseEvent) => {
if (hasUnsavedChanges) {
e.preventDefault();
navigationActions.requestNavigation(performNavigation);
return;
}
handleUnlessSpecialClick(e, handleClick);
};
2025-08-19 13:31:09 +01:00
return (
2025-12-16 15:52:47 +00:00
<div className="mt-4 mb-2">
<QuickAccessButton
icon={<AppsIcon sx={{ fontSize: isActive ? '1.875rem' : '1.5rem' }} />}
label={t("quickAccess.allTools", "Tools")}
isActive={isActive}
onClick={handleNavClick}
href={navProps.href}
ariaLabel={t("quickAccess.allTools", "Tools")}
textClassName="all-tools-text"
component="a"
/>
</div>
2025-08-19 13:31:09 +01:00
);
};
export default AllToolsNavButton;