54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
|
|
import { getPostBySlug } from '@/lib/markdown'
|
|
|
|
interface BreadcrumbItem {
|
|
label: string
|
|
href: string
|
|
current?: boolean
|
|
}
|
|
|
|
function formatDirectoryName(name: string): string {
|
|
const directoryNames: { [key: string]: string } = {
|
|
tech: 'Tehnologie',
|
|
design: 'Design',
|
|
tutorial: 'Tutoriale',
|
|
}
|
|
|
|
return directoryNames[name] || name.charAt(0).toUpperCase() + name.slice(1)
|
|
}
|
|
|
|
export default async function BlogPostBreadcrumb({
|
|
params,
|
|
}: {
|
|
params: Promise<{ slug: string[] }>
|
|
}) {
|
|
const { slug } = await params
|
|
const slugPath = slug.join('/')
|
|
const post = getPostBySlug(slugPath)
|
|
|
|
const items: BreadcrumbItem[] = [
|
|
{
|
|
label: 'Blog',
|
|
href: '/blog',
|
|
},
|
|
]
|
|
|
|
if (slug.length > 1) {
|
|
for (let i = 0; i < slug.length - 1; i++) {
|
|
const segmentPath = slug.slice(0, i + 1).join('/')
|
|
items.push({
|
|
label: formatDirectoryName(slug[i]),
|
|
href: `/blog/${segmentPath}`,
|
|
})
|
|
}
|
|
}
|
|
|
|
items.push({
|
|
label: post ? post.frontmatter.title : slug[slug.length - 1],
|
|
href: `/blog/${slugPath}`,
|
|
current: true,
|
|
})
|
|
|
|
return <Breadcrumbs items={items} />
|
|
}
|