2025-08-19 13:31:09 +01:00
|
|
|
import React from 'react';
|
|
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
|
import AppsIcon from '@mui/icons-material/AppsRounded';
|
2025-10-28 10:29:36 +00:00
|
|
|
import { useToolWorkflow } from '@app/contexts/ToolWorkflowContext';
|
2025-12-03 20:37:23 +00:00
|
|
|
import { useNavigationState, useNavigationActions } from '@app/contexts/NavigationContext';
|
2025-10-28 10:29:36 +00:00
|
|
|
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();
|
2025-12-03 20:37:23 +00:00
|
|
|
const { hasUnsavedChanges } = useNavigationState();
|
|
|
|
|
const { actions: navigationActions } = useNavigationActions();
|
2025-09-05 12:35:17 +01:00
|
|
|
const { getHomeNavigation } = useSidebarNavigation();
|
2025-08-19 13:31:09 +01:00
|
|
|
|
2025-12-03 20:37:23 +00:00
|
|
|
const performNavigation = () => {
|
2025-08-19 13:31:09 +01:00
|
|
|
setActiveButton('tools');
|
|
|
|
|
// Preserve existing behavior used in QuickAccessBar header
|
|
|
|
|
handleReaderToggle();
|
|
|
|
|
handleBackToTools();
|
|
|
|
|
};
|
|
|
|
|
|
2025-12-03 20:37:23 +00:00
|
|
|
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';
|
|
|
|
|
|
2025-09-05 12:35:17 +01:00
|
|
|
const navProps = getHomeNavigation();
|
|
|
|
|
|
|
|
|
|
const handleNavClick = (e: React.MouseEvent) => {
|
2025-12-03 20:37:23 +00:00
|
|
|
if (hasUnsavedChanges) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
navigationActions.requestNavigation(performNavigation);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2025-09-05 12:35:17 +01:00
|
|
|
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;
|
|
|
|
|
|