| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| 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; |
|
|