diff --git a/frontend/src/components/QuickAccessBar.tsx b/frontend/src/components/QuickAccessBar.tsx new file mode 100644 index 000000000..bfd5dd2ea --- /dev/null +++ b/frontend/src/components/QuickAccessBar.tsx @@ -0,0 +1,70 @@ +import React from "react"; +import { ActionIcon, Stack, Tooltip } from "@mantine/core"; +import AddToPhotosIcon from "@mui/icons-material/AddToPhotos"; +import ContentCutIcon from "@mui/icons-material/ContentCut"; +import ZoomInMapIcon from "@mui/icons-material/ZoomInMap"; +import MenuBookIcon from "@mui/icons-material/MenuBook"; +import AppsIcon from "@mui/icons-material/Apps"; +import { useRainbowThemeContext } from "./RainbowThemeProvider"; +import rainbowStyles from '../styles/rainbow.module.css'; + +interface QuickAccessBarProps { + onToolsClick: () => void; + onReaderToggle: () => void; + selectedToolKey?: string; + toolRegistry: any; + leftPanelView: 'toolPicker' | 'toolContent'; + readerMode: boolean; +} + +const QuickAccessBar: React.FC = ({ + onToolsClick, + onReaderToggle, + selectedToolKey, + toolRegistry, + leftPanelView, + readerMode, +}) => { + const { isRainbowMode } = useRainbowThemeContext(); + + return ( +
+ + {/* All Tools Button */} +
+ + + + Tools +
+ + {/* Reader Mode Button */} +
+ + + + Read +
+ + {/* Spacer */} +
+ +
+ ); +}; + +export default QuickAccessBar; \ No newline at end of file diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx index 90ff48329..18a49835c 100644 --- a/frontend/src/pages/HomePage.tsx +++ b/frontend/src/pages/HomePage.tsx @@ -18,6 +18,7 @@ import PageEditor from "../components/PageEditor"; import Viewer from "../components/Viewer"; import TopControls from "../components/TopControls"; import ToolRenderer from "../components/ToolRenderer"; +import QuickAccessBar from "../components/QuickAccessBar"; type ToolRegistryEntry = { icon: React.ReactNode; @@ -52,6 +53,8 @@ export default function HomePage() { const [files, setFiles] = useState([]); const [downloadUrl, setDownloadUrl] = useState(null); const [sidebarsVisible, setSidebarsVisible] = useState(true); + const [leftPanelView, setLeftPanelView] = useState<'toolPicker' | 'toolContent'>('toolPicker'); + const [readerMode, setReaderMode] = useState(false); // URL parameter management const { toolParams, updateParams } = useToolParams(selectedToolKey, currentView); @@ -68,10 +71,23 @@ export default function HomePage() { (id: string) => { setSelectedToolKey(id); if (toolRegistry[id]?.view) setCurrentView(toolRegistry[id].view); + setLeftPanelView('toolContent'); // Switch to tool content view when a tool is selected + setReaderMode(false); // Exit reader mode when selecting a tool }, [toolRegistry] ); + // Handle quick access actions + const handleQuickAccessTools = useCallback(() => { + setLeftPanelView('toolPicker'); + setReaderMode(false); + }, []); + + + const handleReaderToggle = useCallback(() => { + setReaderMode(!readerMode); + }, [readerMode]); + const selectedTool = toolRegistry[selectedToolKey]; return ( @@ -80,22 +96,78 @@ export default function HomePage() { gap={0} className="min-h-screen w-screen overflow-hidden flex-nowrap flex" > - {/* Left: Tool Picker */} - {sidebarsVisible && ( + {/* Quick Access Bar */} + + + {/* Left: Tool Picker OR Selected Tool Panel */} + {sidebarsVisible && !readerMode && (
- + {leftPanelView === 'toolPicker' ? ( + // Tool Picker View +
+ +
+ ) : ( + // Selected Tool Content View +
+ {/* Back button */} +
+ +
+ + {/* Tool title */} +
+

{selectedTool?.name}

+
+ + {/* Tool content */} +
+ +
+
+ )}
)} - {/* Middle: Main View */} - + {/* Main View */} + {/* Top Controls */} - - {/* Right: Tool Interaction */} - {sidebarsVisible && ( -
- -
- )} ); }