129 lines
6.1 KiB
TypeScript
129 lines
6.1 KiB
TypeScript
'use client'
|
||
import Input from '@/components/Input'
|
||
import { Separator } from '@/components/ui/separator'
|
||
import { DocumentText, Home, Profile, ShoppingCart, HambergerMenu } from 'iconsax-react'
|
||
import { FC, Fragment, useEffect, useState } from 'react'
|
||
import Menu from './components/Menu'
|
||
import { useSharedStore } from './store/sharedStore'
|
||
import { getToken } from '@/config/func'
|
||
import { useGetProfile } from '@/app/profile/hooks/useProfileData'
|
||
|
||
const Header: FC = () => {
|
||
|
||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)
|
||
const { setIsLogin } = useSharedStore()
|
||
const { data: profile } = useGetProfile()
|
||
|
||
const handleSetIsLogin = async () => {
|
||
const token = await getToken()
|
||
setIsLogin(token ? true : false)
|
||
}
|
||
|
||
useEffect(() => {
|
||
handleSetIsLogin()
|
||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||
}, [])
|
||
|
||
return (
|
||
<Fragment>
|
||
<div className='fixed top-0 bg-white w-full z-[9998] border-b border-gray-100 max-w-full'>
|
||
{/* بخش بالایی هدر */}
|
||
<div className='flex items-center justify-between px-3 sm:px-4 md:px-6 py-3 sm:py-4'>
|
||
{/* منوی همبرگری موبایل */}
|
||
<div className='md:hidden'>
|
||
<button
|
||
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
|
||
className='p-2 rounded-lg hover:bg-gray-50'
|
||
>
|
||
<HambergerMenu size={24} color='#333333' />
|
||
</button>
|
||
</div>
|
||
|
||
<div className='flex gap-2 sm:gap-4 md:gap-[30px] items-center flex-1 md:flex-none'>
|
||
<div className='text-base sm:text-lg font-bold text-purple-600'>LOGO</div>
|
||
<Input
|
||
className='hidden md:block w-[300px] lg:w-[500px]'
|
||
variant='search'
|
||
placeholder='جستجو'
|
||
/>
|
||
</div>
|
||
|
||
<div className='flex items-center gap-1 sm:gap-2 md:gap-6'>
|
||
<div className='hidden md:flex h-10 border border-border py-3 px-4 rounded-[12px] items-center gap-2.5'>
|
||
<Profile size={20} color='#333333' />
|
||
{
|
||
<div className='text-sm text-[#333333]'>{profile?.results?.info?.fullName ? profile?.results?.info?.fullName : 'حساب کاربری'}</div>
|
||
}
|
||
</div>
|
||
|
||
<div className='md:hidden'>
|
||
<Profile size={24} color='#333333' />
|
||
</div>
|
||
|
||
<Separator className='hidden md:block' style={{ height: 25 }} orientation='vertical' />
|
||
|
||
<div className='h-10 p-3 rounded-[12px] border border-border flex items-center gap-2.5'>
|
||
<ShoppingCart size={20} color='#333333' />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{/* نوار جستجو موبایل */}
|
||
<div className='md:hidden px-3 sm:px-4 pb-3 sm:pb-4'>
|
||
<Input
|
||
className='w-full'
|
||
variant='search'
|
||
placeholder='جستجو'
|
||
/>
|
||
</div>
|
||
|
||
{/* بخش پایینی هدر - فقط دسکتاپ */}
|
||
<div className='hidden md:flex mt-2 text-sm px-6 pb-4 items-center gap-7'>
|
||
<Menu />
|
||
<Separator style={{ height: 20 }} orientation='vertical' />
|
||
|
||
<div className='flex items-center gap-2.5 cursor-pointer hover:text-purple-600 transition-colors'>
|
||
<Home size={20} color='#333333' />
|
||
<div className='text-[#333333]'>صفحه نخست</div>
|
||
</div>
|
||
<div className='flex items-center gap-2.5 cursor-pointer hover:text-purple-600 transition-colors'>
|
||
<DocumentText size={20} color='#333333' />
|
||
<div className='text-[#333333]'>مجله</div>
|
||
</div>
|
||
</div>
|
||
|
||
{/* منوی موبایل */}
|
||
{isMobileMenuOpen && (
|
||
<div className='md:hidden bg-white border-t border-gray-100'>
|
||
<div className='px-4 py-4 space-y-4'>
|
||
<div className='flex items-center gap-3 py-3 border-b border-gray-100'>
|
||
<Profile size={20} color='#333333' />
|
||
<span className='text-sm text-gray-800'>حساب کاربری</span>
|
||
</div>
|
||
|
||
<div className='space-y-3'>
|
||
<div className='flex items-center gap-3 py-2 cursor-pointer hover:bg-gray-50 rounded-lg px-2'>
|
||
<Home size={20} color='#333333' />
|
||
<span className='text-sm text-gray-800'>صفحه نخست</span>
|
||
</div>
|
||
<div className='flex items-center gap-3 py-2 cursor-pointer hover:bg-gray-50 rounded-lg px-2'>
|
||
<DocumentText size={20} color='#333333' />
|
||
<span className='text-sm text-gray-800'>مجله</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div className='pt-4 border-t border-gray-100'>
|
||
<Menu />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* فضای خالی برای جبران ارتفاع fixed header */}
|
||
<div className={`${isMobileMenuOpen ? 'h-[280px] sm:h-[260px] md:h-[120px]' : 'h-[120px] sm:h-[120px] md:h-[120px]'}`}></div>
|
||
</Fragment>
|
||
)
|
||
}
|
||
|
||
export default Header |