This commit is contained in:
@@ -6,6 +6,11 @@ import { usePathname, useRouter } from 'next/navigation'
|
||||
import Link from 'next/link'
|
||||
import Image from 'next/image'
|
||||
import Script from 'next/script'
|
||||
import { useLocale } from '../contexts/LocaleContext'
|
||||
import { useTheme } from '../contexts/ThemeContext'
|
||||
import ThemeToggle from './ThemeToggle'
|
||||
import LanguageSelector from './LanguageSelector'
|
||||
import '../layout.css'
|
||||
|
||||
interface User {
|
||||
username: string
|
||||
@@ -18,6 +23,7 @@ export function LayoutWrapper({ children }: { children: ReactNode }) {
|
||||
const isDashboard = pathname === '/dashboard'
|
||||
const [user, setUser] = useState<User | null>(null)
|
||||
const router = useRouter()
|
||||
const { t } = useLocale()
|
||||
|
||||
// При монтировании пробуем загрузить профиль
|
||||
useEffect(() => {
|
||||
@@ -71,16 +77,19 @@ export function LayoutWrapper({ children }: { children: ReactNode }) {
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#navcol-1"
|
||||
title={t('common.menu')}
|
||||
/>
|
||||
<div className="collapse navbar-collapse" id="navcol-1">
|
||||
{!user && (
|
||||
<Link href="/auth/login" className="btn btn-primary ms-auto">
|
||||
<i className="fa fa-user"></i>
|
||||
<span className="d-none d-sm-inline"> Вход</span>
|
||||
<span className="d-none d-sm-inline"> {t('common.login')}</span>
|
||||
</Link>
|
||||
)}
|
||||
{user && (
|
||||
<div className="ms-auto d-flex align-items-center gap-3">
|
||||
<ThemeToggle />
|
||||
<LanguageSelector />
|
||||
<Image
|
||||
src={
|
||||
user.avatar && user.avatar.startsWith('http')
|
||||
@@ -97,14 +106,14 @@ export function LayoutWrapper({ children }: { children: ReactNode }) {
|
||||
<span>{user.username}</span>
|
||||
{!isDashboard && (
|
||||
<Link href="/dashboard" className="btn btn-outline-secondary btn-sm">
|
||||
Дашборд
|
||||
{t('dashboard.title')}
|
||||
</Link>
|
||||
)}
|
||||
<button
|
||||
onClick={handleLogout}
|
||||
className="btn btn-outline-danger btn-sm"
|
||||
>
|
||||
Выход
|
||||
{t('common.logout')}
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
@@ -114,7 +123,7 @@ export function LayoutWrapper({ children }: { children: ReactNode }) {
|
||||
)}
|
||||
|
||||
{/* отступ, чтобы контент не прятался под фиксированным хедером */}
|
||||
{!isPublicUserPage && <div style={{ height: 70 }} />}
|
||||
{!isPublicUserPage && <div className="navbar-spacing" />}
|
||||
|
||||
{children}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user