📄 Huge intl feature

This commit is contained in:
RJ
2025-12-03 00:17:34 +02:00
parent 8b05aae5a8
commit 7e8b82f571
48 changed files with 955 additions and 138 deletions

View File

@@ -0,0 +1,15 @@
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
export default function AboutBreadcrumb() {
return (
<Breadcrumbs
items={[
{
label: 'Despre',
href: '/about',
current: true,
},
]}
/>
)
}

View File

@@ -0,0 +1,53 @@
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 = await 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} />
}

View File

@@ -0,0 +1,15 @@
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
export default function BlogBreadcrumb() {
return (
<Breadcrumbs
items={[
{
label: 'Blog',
href: '/blog',
current: true,
},
]}
/>
)
}

View File

@@ -0,0 +1,7 @@
'use client'
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
export default function DefaultBreadcrumb() {
return <Breadcrumbs />
}

View File

@@ -0,0 +1,25 @@
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
export default async function TagBreadcrumb({ params }: { params: Promise<{ tag: string }> }) {
const { tag } = await params
const tagName = tag
.split('-')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ')
return (
<Breadcrumbs
items={[
{
label: 'Tag-uri',
href: '/tags',
},
{
label: tagName,
href: `/tags/${tag}`,
current: true,
},
]}
/>
)
}

View File

@@ -0,0 +1,15 @@
import { Breadcrumbs } from '@/components/layout/Breadcrumbs'
export default function TagsBreadcrumb() {
return (
<Breadcrumbs
items={[
{
label: 'Tag-uri',
href: '/tags',
current: true,
},
]}
/>
)
}