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