import React, { useState } from "react"; import { ActionIcon, Stack, Tooltip, Divider } from "@mantine/core"; import MenuBookIcon from "@mui/icons-material/MenuBookRounded"; import AppsIcon from "@mui/icons-material/AppsRounded"; import SettingsIcon from "@mui/icons-material/SettingsRounded"; import AutoAwesomeIcon from "@mui/icons-material/AutoAwesomeRounded"; import FolderIcon from "@mui/icons-material/FolderRounded"; import PersonIcon from "@mui/icons-material/PersonRounded"; import NotificationsIcon from "@mui/icons-material/NotificationsRounded"; import { useRainbowThemeContext } from "./RainbowThemeProvider"; import rainbowStyles from '../../styles/rainbow.module.css'; import AppConfigModal from './AppConfigModal'; import './QuickAccessBar.css'; interface QuickAccessBarProps { onToolsClick: () => void; onReaderToggle: () => void; selectedToolKey?: string; toolRegistry: any; leftPanelView: 'toolPicker' | 'toolContent'; readerMode: boolean; } interface ButtonConfig { id: string; name: string; icon: React.ReactNode; tooltip: string; isRound?: boolean; size?: 'sm' | 'md' | 'lg' | 'xl'; onClick: () => void; } const actionIconStyle = { backgroundColor: 'var(--icon-user-bg)', color: 'var(--icon-user-color)', borderRadius: '50%', width: '1.5rem', height: '1.5rem', }; function NavHeader() { return ( <>
{/* Divider after top icons */} ); } const QuickAccessBar = ({ onToolsClick, onReaderToggle, selectedToolKey, toolRegistry, leftPanelView, readerMode, }: QuickAccessBarProps) => { const { isRainbowMode } = useRainbowThemeContext(); const [configModalOpen, setConfigModalOpen] = useState(false); const [activeButton, setActiveButton] = useState('tools'); const buttonConfigs: ButtonConfig[] = [ { id: 'tools', name: 'All Tools', icon: , tooltip: 'View all available tools', size: 'lg', isRound: false, onClick: () => { setActiveButton('tools'); onReaderToggle(); onToolsClick(); } }, { id: 'read', name: 'Read', icon: , tooltip: 'Read documents', size: 'lg', isRound: false, onClick: () => { setActiveButton('read'); onReaderToggle(); } }, { id: 'sign', name: 'Sign', icon: signature , tooltip: 'Sign your document', size: 'lg', isRound: false, onClick: () => setActiveButton('sign') }, { id: 'automate', name: 'Automate', icon: , tooltip: 'Automate workflows', size: 'lg', isRound: false, onClick: () => setActiveButton('automate') }, { id: 'files', name: 'Files', icon: , tooltip: 'Manage files', isRound: true, size: 'lg', onClick: () => setActiveButton('files') }, { id: 'activity', name: 'Activity', icon: vital_signs , tooltip: 'View activity and analytics', isRound: true, size: 'lg', onClick: () => setActiveButton('activity') }, { id: 'config', name: 'Config', icon: , tooltip: 'Configure settings', size: 'lg', onClick: () => { setConfigModalOpen(true); } } ]; const CIRCULAR_BORDER_RADIUS = '50%'; const ROUND_BORDER_RADIUS = '8px'; const getBorderRadius = (config: ButtonConfig): string => { return config.isRound ? CIRCULAR_BORDER_RADIUS : ROUND_BORDER_RADIUS; }; const getButtonStyle = (config: ButtonConfig) => { const isActive = activeButton === config.id; if (isActive) { return { backgroundColor: `var(--icon-${config.id}-bg)`, color: `var(--icon-${config.id}-color)`, border: 'none', borderRadius: getBorderRadius(config), }; } // Inactive state - use consistent inactive colors return { backgroundColor: 'var(--icon-inactive-bg)', color: 'var(--icon-inactive-color)', border: 'none', borderRadius: getBorderRadius(config), }; }; const getTextStyle = (config: ButtonConfig) => { const isActive = activeButton === config.id; return { marginTop: '0.75rem', fontSize: '0.75rem', color: isActive ? 'var(--text-primary)' : 'var(--color-gray-700)', fontWeight: isActive ? 'bold' : 'normal', textRendering: 'optimizeLegibility' as const, fontSynthesis: 'none' as const }; }; return (
{ // Prevent the wheel event from bubbling up to parent containers e.stopPropagation(); }} > {buttonConfigs.map((config, index) => (
{config.icon} {config.name}
{/* Add divider after Automate button (index 3) */} {index === 3 && ( )} {/* Add spacer before Config button (index 7) */} {index === 5 &&
} ))} setConfigModalOpen(false)} />
); }; export default QuickAccessBar;