mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 18:00:36 +00:00
# What does this PR do? This better separates UI from backend code, which was a point of confusion often for our beloved AI friends. ## Test Plan CI
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import Link from "next/link";
|
|
import React from "react";
|
|
import {
|
|
Breadcrumb,
|
|
BreadcrumbItem,
|
|
BreadcrumbLink,
|
|
BreadcrumbList,
|
|
BreadcrumbPage,
|
|
BreadcrumbSeparator,
|
|
} from "@/components/ui/breadcrumb";
|
|
|
|
export interface BreadcrumbSegment {
|
|
label: string;
|
|
href?: string;
|
|
}
|
|
|
|
interface PageBreadcrumbProps {
|
|
segments: BreadcrumbSegment[];
|
|
className?: string;
|
|
}
|
|
|
|
export function PageBreadcrumb({ segments, className }: PageBreadcrumbProps) {
|
|
if (!segments || segments.length === 0) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<Breadcrumb className={className}>
|
|
<BreadcrumbList>
|
|
{segments.map((segment, index) => (
|
|
<React.Fragment key={segment.label + index}>
|
|
<BreadcrumbItem>
|
|
{segment.href ? (
|
|
<BreadcrumbLink asChild>
|
|
<Link href={segment.href}>{segment.label}</Link>
|
|
</BreadcrumbLink>
|
|
) : (
|
|
<BreadcrumbPage>{segment.label}</BreadcrumbPage>
|
|
)}
|
|
</BreadcrumbItem>
|
|
{index < segments.length - 1 && <BreadcrumbSeparator />}
|
|
</React.Fragment>
|
|
))}
|
|
</BreadcrumbList>
|
|
</Breadcrumb>
|
|
);
|
|
}
|