'use client'; import { cart_api } from '@/features/cart/lib/api'; import { category_api } from '@/shared/config/api/category/api'; import { Link, useRouter } from '@/shared/config/i18n/navigation'; import { useCartId } from '@/shared/hooks/cartId'; import formatPhone from '@/shared/lib/formatPhone'; import { getToken } from '@/shared/lib/token'; import { Badge } from '@/shared/ui/badge'; import { Button } from '@/shared/ui/button'; import { Input } from '@/shared/ui/input'; import { Popover, PopoverContent } from '@/shared/ui/popover'; import { Sheet, SheetClose, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from '@/shared/ui/sheet'; import { banner_api } from '@/widgets/welcome/lib/api'; import { userStore } from '@/widgets/welcome/lib/hook'; import { PopoverTrigger } from '@radix-ui/react-popover'; import { useMutation, useQuery } from '@tanstack/react-query'; import { ChevronRight, Facebook, Heart, Instagram, LayoutGrid, Mail, MenuIcon, Phone, Search, Send, ShoppingCart, Twitter, User, XIcon, } from 'lucide-react'; import { useTranslations } from 'next-intl'; import Image from 'next/image'; import { useSearchParams } from 'next/navigation'; import { useEffect, useState } from 'react'; import useCategoryActive from '../lib/openCategory'; import { ChangeLang } from './ChangeLang'; import { MobileLanguageSelector } from './MobileLanguageSelector'; import NavbarMobile from './NavbarMobile'; import { SearchResult } from './SearchResult'; const Navbar = () => { const [isSticky, setIsSticky] = useState(false); const [query, setQuery] = useState(''); const searchParams = useSearchParams(); const token = getToken(); const t = useTranslations(); const { cart_id } = useCartId(); const [cartQuenty, setCartQuenty] = useState(0); const { setCartId } = useCartId(); const { setUser } = userStore(); const { mutate: cart } = useMutation({ mutationFn: () => cart_api.create(), onSuccess: (data) => { setCartId(data.data.cart_id); }, }); const { data: me } = useQuery({ queryKey: ['get_me'], queryFn: () => banner_api.getMe(), }); const { data: category } = useQuery({ queryKey: ['category_list'], queryFn: () => category_api.getCategory({ page: 1, page_size: 99 }), select(data) { return data.data; }, }); useEffect(() => { if (me) { setUser(me.data); } }, [me]); useEffect(() => { if (token) { cart(); } }, [token]); const queryFromUrl = searchParams.get('q') ?? ''; const { data: cartItems } = useQuery({ queryKey: ['cart_items', cart_id], queryFn: () => cart_api.get_cart_items(cart_id!), enabled: !!cart_id, select(data) { return data.data.cart_item; }, }); useEffect(() => { if (cartItems) { const total = cartItems.reduce((sum, item) => sum + item.quantity, 0); setCartQuenty(total > 9 ? 9 : total); } else if (cart_id === null) { setCartQuenty(0); } }, [cartItems, cart_id]); useEffect(() => { setQuery(queryFromUrl); }, [queryFromUrl]); const [searchOpen, setSearchOpen] = useState(false); const { active, openToolbar, setActive, setOpenToolbar, setCloseToolbar } = useCategoryActive(); useEffect(() => { const handleScroll = () => { setIsSticky(window.scrollY > 40); }; handleScroll(); window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); const router = useRouter(); return ( <>
router.push('/')} > logo

GASTRO

logo

GASTRO

{/* Menu Bo'limlari */}
{/* Asosiy Sahifalar */}

{t('Sahifalar')}

{/* Divider */}
setSearchOpen(true)} onBlur={() => setTimeout(() => setSearchOpen(false), 200)} onKeyDown={(e) => { if (e.key === 'Enter' && query.trim()) { router.push(`/search?q=${encodeURIComponent(query)}`); setSearchOpen(false); } }} onChange={(e) => setQuery(e.target.value)} className="border border-slate-200 focus:border-blue-400 focus:ring-blue-400 px-9 h-10" /> {searchOpen && (
)}
setOpenToolbar(false)} >
{category && category.map((e, index) => { const isActive = active?.name === e.name; return ( ); })}

{active?.name}

{active && active?.product_types?.length > 0 ? (
{active.product_types.map((sub, index) => ( ))}
) : (

{t('Bu kategoriyada hozircha mahsulot yo‘q')}

{t('Tez orada qo‘shiladi')}

)}
{isSticky &&
} ); }; export default Navbar;