tokenFactory/web/src/components/layout/headerbar/ActionButtons.jsx

81 lines
2.0 KiB
JavaScript

/*
Copyright (C) 2025 QuantumNous
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
For commercial licensing, please contact support@quantumnous.com
*/
import React from 'react';
import NotificationButton from './NotificationButton';
import ThemeToggle from './ThemeToggle';
import LanguageSelector from './LanguageSelector';
import UserArea from './UserArea';
const ActionButtons = ({
isNewYear,
unreadCount,
onNoticeOpen,
theme,
onThemeToggle,
currentLang,
onLanguageChange,
userState,
isLoading,
isMobile,
isSelfUseMode,
showThemeToggle = true,
showLanguageSelector = false,
logout,
navigate,
t,
}) => {
const shouldShowNoticeButton = Boolean(userState?.user?.id);
return (
<div className="flex items-center gap-1 md:gap-1.5">
{shouldShowNoticeButton && (
<NotificationButton
unreadCount={unreadCount}
onNoticeOpen={onNoticeOpen}
t={t}
/>
)}
{showThemeToggle && (
<ThemeToggle theme={theme} onThemeToggle={onThemeToggle} t={t} />
)}
{showLanguageSelector && (
<LanguageSelector
currentLang={currentLang}
onLanguageChange={onLanguageChange}
/>
)}
<UserArea
userState={userState}
isLoading={isLoading}
isMobile={isMobile}
isSelfUseMode={isSelfUseMode}
logout={logout}
navigate={navigate}
t={t}
/>
</div>
);
};
export default ActionButtons;