'use client';
import { memo, useEffect, useState } from 'react';
import { AnimatePresence, motion } from 'motion/react';
import { useTranslations } from 'next-intl';
import { Button } from '@/components/ui/button';
import {
Bell,
Info,
Maximize2,
Minimize2,
Moon,
Search,
Settings,
Sun,
} from 'lucide-react';
import { useUser } from '@/contexts/user-context';
import { useBellRing } from '@/contexts/bell-ring-context';
import { useNotificationSettings } from '@/contexts/notification-settings-context';
import { SidebarTrigger } from '@/components/ui/sidebar';
import { useTheme } from 'next-themes';
import { useRouter } from 'next/navigation';
import { SearchDialog } from '@/components/layout/search-dialog';
import { LanguageSwitcher } from '@/components/common/language-switcher';
import { Kbd } from '@/components/ui/kbd';
/**
* 铃铛按钮组件
*/
const BellButton = memo(function BellButton() {
const { isRinging } = useBellRing();
const { showBell, isMounted } = useNotificationSettings();
const t = useTranslations('layout.header');
const [isClickAnimating, setIsClickAnimating] = useState(false);
if (!isMounted) return null;
if (!showBell) return null;
const handleClick = () => {
setIsClickAnimating(true);
setTimeout(() => setIsClickAnimating(false), 600);
};
return (
);
});
/**
* 站点头部组件
* 用于显示站点头部
*
* @example
* ```tsx
*
{t('bannerTitle')} {t('bannerLink')}