|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { useHeaderBar } from '../../../hooks/common/useHeaderBar'; |
|
|
import { useNotifications } from '../../../hooks/common/useNotifications'; |
|
|
import { useNavigation } from '../../../hooks/common/useNavigation'; |
|
|
import NoticeModal from '../NoticeModal'; |
|
|
import MobileMenuButton from './MobileMenuButton'; |
|
|
import HeaderLogo from './HeaderLogo'; |
|
|
import Navigation from './Navigation'; |
|
|
import ActionButtons from './ActionButtons'; |
|
|
|
|
|
const HeaderBar = ({ onMobileMenuToggle, drawerOpen }) => { |
|
|
const { |
|
|
userState, |
|
|
statusState, |
|
|
isMobile, |
|
|
collapsed, |
|
|
logoLoaded, |
|
|
currentLang, |
|
|
isLoading, |
|
|
systemName, |
|
|
logo, |
|
|
isNewYear, |
|
|
isSelfUseMode, |
|
|
docsLink, |
|
|
isDemoSiteMode, |
|
|
isConsoleRoute, |
|
|
theme, |
|
|
headerNavModules, |
|
|
pricingRequireAuth, |
|
|
logout, |
|
|
handleLanguageChange, |
|
|
handleThemeToggle, |
|
|
handleMobileMenuToggle, |
|
|
navigate, |
|
|
t, |
|
|
} = useHeaderBar({ onMobileMenuToggle, drawerOpen }); |
|
|
|
|
|
const { |
|
|
noticeVisible, |
|
|
unreadCount, |
|
|
handleNoticeOpen, |
|
|
handleNoticeClose, |
|
|
getUnreadKeys, |
|
|
} = useNotifications(statusState); |
|
|
|
|
|
const { mainNavLinks } = useNavigation(t, docsLink, headerNavModules); |
|
|
|
|
|
return ( |
|
|
<header className='text-semi-color-text-0 sticky top-0 z-50 transition-colors duration-300 bg-white/75 dark:bg-zinc-900/75 backdrop-blur-lg'> |
|
|
<NoticeModal |
|
|
visible={noticeVisible} |
|
|
onClose={handleNoticeClose} |
|
|
isMobile={isMobile} |
|
|
defaultTab={unreadCount > 0 ? 'system' : 'inApp'} |
|
|
unreadKeys={getUnreadKeys()} |
|
|
/> |
|
|
|
|
|
<div className='w-full px-2'> |
|
|
<div className='flex items-center justify-between h-16'> |
|
|
<div className='flex items-center'> |
|
|
<MobileMenuButton |
|
|
isConsoleRoute={isConsoleRoute} |
|
|
isMobile={isMobile} |
|
|
drawerOpen={drawerOpen} |
|
|
collapsed={collapsed} |
|
|
onToggle={handleMobileMenuToggle} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<HeaderLogo |
|
|
isMobile={isMobile} |
|
|
isConsoleRoute={isConsoleRoute} |
|
|
logo={logo} |
|
|
logoLoaded={logoLoaded} |
|
|
isLoading={isLoading} |
|
|
systemName={systemName} |
|
|
isSelfUseMode={isSelfUseMode} |
|
|
isDemoSiteMode={isDemoSiteMode} |
|
|
t={t} |
|
|
/> |
|
|
</div> |
|
|
|
|
|
<Navigation |
|
|
mainNavLinks={mainNavLinks} |
|
|
isMobile={isMobile} |
|
|
isLoading={isLoading} |
|
|
userState={userState} |
|
|
pricingRequireAuth={pricingRequireAuth} |
|
|
/> |
|
|
|
|
|
<ActionButtons |
|
|
isNewYear={isNewYear} |
|
|
unreadCount={unreadCount} |
|
|
onNoticeOpen={handleNoticeOpen} |
|
|
theme={theme} |
|
|
onThemeToggle={handleThemeToggle} |
|
|
currentLang={currentLang} |
|
|
onLanguageChange={handleLanguageChange} |
|
|
userState={userState} |
|
|
isLoading={isLoading} |
|
|
isMobile={isMobile} |
|
|
isSelfUseMode={isSelfUseMode} |
|
|
logout={logout} |
|
|
navigate={navigate} |
|
|
t={t} |
|
|
/> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default HeaderBar; |
|
|
|