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';
import useDevice from '@/core/hooks/useDevice';
const Breadcrumb = ({ categoryId, shortDesc, currentLabel }) => {
const breadcrumbs = useQuery(
['category-breadcrumbs', categoryId],
async () =>
await odooApi(
'GET',
`/api/v1/category/${categoryId}/category-breadcrumb`,
),
);
const { isDesktop, isMobile } = useDevice();
const items = breadcrumbs.data ?? [];
/* =========================
DESKTOP
========================= */
if (isDesktop) {
return (
{/* Home */}
Home
{/* Categories */}
{items.map((category, index) => {
const isLastCategory = index === items.length - 1;
const isClickable = currentLabel || !isLastCategory;
return (
{isClickable ? (
{category.name}
) : (
{category.name}
)}
);
})}
{/* Searchkey / Current Page */}
{currentLabel && (
{currentLabel}
)}
{shortDesc && (
{shortDesc}
)}
);
}
/* =========================
MOBILE
========================= */
if (isMobile) {
const n = items.length;
const lastCat = n >= 1 ? items[n - 1] : null;
const secondLast = n >= 2 ? items[n - 2] : null;
const beforeSecond = n >= 3 ? items[n - 3] : null;
const hiddenText =
n >= 3
? items
.slice(0, n - 2)
.map((c) => c.name)
.join(' / ')
: '';
const finalLabel = currentLabel || lastCat?.name;
return (
/}
spacing='4px'
sx={{
'& ol': {
display: 'flex',
alignItems: 'center',
overflow: 'hidden',
whiteSpace: 'nowrap',
gap: '0',
},
'& li': { display: 'inline-flex', alignItems: 'center' },
'& li:not(:last-of-type)': {
flex: '0 0 auto',
whiteSpace: 'nowrap',
},
'& li:last-of-type': {
flex: '0 1 auto',
minWidth: 0,
},
}}
className='text-caption-2 p-0'
>
{/* Home */}
Home
{/* Jika ada kategori sebelum secondLast, tampilkan '..' (link ke beforeSecond) */}
{beforeSecond && (
..
)}
{secondLast && (
{secondLast.name}
)}
{/* lastCat (current) dengan truncate & lebar dibatasi */}
{lastCat && (
{finalLabel}
)}
{shortDesc && (
{shortDesc}
)}
);
}
return null;
};
export default Breadcrumb;