'use client' import { useEffect, useState } from 'react' import Link from 'next/link' import { Icons, NavbarSkeleton, ResponsiveImage } from 'components' import { useGetCategoriesQuery } from '@/store/services' export default function Navbar() { //? Get Categories Query const { categories, isLoading } = useGetCategoriesQuery(undefined, { selectFromResult: ({ data, isLoading }) => ({ categories: data?.data?.categories, isLoading, }), }) //? State const [activeMinCat, setActiveMinCat] = useState({}) const [hover, setHover] = useState(false) //? Handlers const handleActive = cat => { setActiveMinCat(cat) } const hanldeDeactive = () => { if (categories) setActiveMinCat(categories.filter(category => category.level === 1)[0]) } //? Re-Renders useEffect(() => { if (categories) setActiveMinCat(categories?.filter(category => category.level === 1)[0]) }, [categories]) //? Render return (
setHover(true)} onMouseLeave={() => { hanldeDeactive() setHover(false) }} >
    {isLoading ? ( ) : categories ? ( categories .filter(category => category.level === 1) .map(levelOneCategory => (
  • handleActive(levelOneCategory)} > {levelOneCategory.name}
  • )) ) : null}
    {isLoading ? null : activeMinCat ? categories?.map(levelTwoCategory => { if (levelTwoCategory.parent === activeMinCat._id) { return (
  • {levelTwoCategory.name}
      {categories .filter(category => category.parent === levelTwoCategory._id) .map(levelThreeCategory => (
    • {levelThreeCategory.name}
    • ))}
  • ) } }) : null}
) }