summaryrefslogtreecommitdiff
path: root/src/lib/category/components/Breadcrumb.jsx
blob: 127904eef092f5feda7867603d53d34d038f2213 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import odooApi from '@/core/api/odooApi'
import { createSlug } from '@/core/utils/slug'
import {
  Breadcrumb as ChakraBreadcrumb,
  BreadcrumbItem,
  BreadcrumbLink,
  Skeleton
} from '@chakra-ui/react'
import Link from 'next/link'
import React from 'react'
import { useQuery } from 'react-query'

/**
 * Render a breadcrumb component.
 *
 * @param {object} categoryId - The ID of the category.
 * @return {JSX.Element} The breadcrumb component.
 */
const Breadcrumb = ({ categoryId }) => {
  const breadcrumbs = useQuery(
    `category-breadcrumbs/${categoryId}`,
    async () => await odooApi('GET', `/api/v1/category/${categoryId}/category-breadcrumb`)
  )

  return (
    <div className='container mx-auto py-4 md:py-6'>
      <Skeleton isLoaded={!breadcrumbs.isLoading} className='w-2/3'>
        <ChakraBreadcrumb>
          <BreadcrumbItem>
            <BreadcrumbLink as={Link} href='/' className='!text-danger-500 whitespace-nowrap'>
              Home
            </BreadcrumbLink>
          </BreadcrumbItem>

          {breadcrumbs.data?.map((category, index) => (
            <BreadcrumbItem key={index} isCurrentPage={index === breadcrumbs.data.length - 1}>
              {index === breadcrumbs.data.length - 1 ? (
                <BreadcrumbLink className='whitespace-nowrap'>{category.name}</BreadcrumbLink>
              ) : (
                <BreadcrumbLink
                  as={Link}
                  href={createSlug('/shop/category/', category.name, category.id)}
                  className='!text-danger-500 whitespace-nowrap'
                >
                  {category.name}
                </BreadcrumbLink>
              )}
            </BreadcrumbItem>
          ))}
        </ChakraBreadcrumb>
      </Skeleton>
    </div>
  )
}

export default Breadcrumb