mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-29 10:56:24 +02:00
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled
- Added multiple new skills to skills-lock.json from the repository `aaron-he-zhu/seo-geo-claude-skills`. - Introduced `fuzzy-search` dependency in package.json for improved search functionality. - Updated pnpm-lock.yaml to include the new `fuzzy-search` package. - Enhanced SEO metadata across various pages, including canonical links and descriptions for better search visibility. - Improved layout and structure of several components, including the homepage and changelog, to enhance user experience.
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { ChevronRight } from "lucide-react";
|
|
import Link from "next/link";
|
|
import { BreadcrumbJsonLd } from "./json-ld";
|
|
|
|
interface BreadcrumbItem {
|
|
name: string;
|
|
href: string;
|
|
}
|
|
|
|
interface BreadcrumbNavProps {
|
|
items: BreadcrumbItem[];
|
|
className?: string;
|
|
}
|
|
|
|
export function BreadcrumbNav({ items, className }: BreadcrumbNavProps) {
|
|
const jsonLdItems = items.map((item) => ({
|
|
name: item.name,
|
|
url: `https://surfsense.com${item.href}`,
|
|
}));
|
|
|
|
return (
|
|
<>
|
|
<BreadcrumbJsonLd items={jsonLdItems} />
|
|
<nav aria-label="Breadcrumb" className={className}>
|
|
<ol className="flex items-center gap-1.5 text-sm text-muted-foreground">
|
|
{items.map((item, index) => {
|
|
const isLast = index === items.length - 1;
|
|
return (
|
|
<li key={item.href} className="flex items-center gap-1.5">
|
|
{index > 0 && (
|
|
<ChevronRight className="h-3.5 w-3.5 shrink-0" aria-hidden />
|
|
)}
|
|
{isLast ? (
|
|
<span className="font-medium text-foreground" aria-current="page">
|
|
{item.name}
|
|
</span>
|
|
) : (
|
|
<Link
|
|
href={item.href}
|
|
className="transition-colors hover:text-foreground"
|
|
>
|
|
{item.name}
|
|
</Link>
|
|
)}
|
|
</li>
|
|
);
|
|
})}
|
|
</ol>
|
|
</nav>
|
|
</>
|
|
);
|
|
}
|