mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-27 18:50:41 +00:00
# What does this PR do? * Add responses list and detail views * Refactored components to be shared as much as possible between chat completions and responses ## Test Plan <img width="2014" alt="image" src="https://github.com/user-attachments/assets/6dee12ea-8876-4351-a6eb-2338058466ef" /> <img width="2021" alt="image" src="https://github.com/user-attachments/assets/6c7c71b8-25b7-4199-9c57-6960be5580c8" /> added tests
49 lines
1 KiB
TypeScript
49 lines
1 KiB
TypeScript
"use client";
|
|
|
|
import React from "react";
|
|
import { usePathname, useParams } from "next/navigation";
|
|
import {
|
|
PageBreadcrumb,
|
|
BreadcrumbSegment,
|
|
} from "@/components/layout/page-breadcrumb";
|
|
import { truncateText } from "@/lib/truncate-text";
|
|
|
|
interface LogsLayoutProps {
|
|
children: React.ReactNode;
|
|
sectionLabel: string;
|
|
basePath: string;
|
|
}
|
|
|
|
export default function LogsLayout({
|
|
children,
|
|
sectionLabel,
|
|
basePath,
|
|
}: LogsLayoutProps) {
|
|
const pathname = usePathname();
|
|
const params = useParams();
|
|
|
|
let segments: BreadcrumbSegment[] = [];
|
|
|
|
if (pathname === basePath) {
|
|
segments = [{ label: sectionLabel }];
|
|
}
|
|
|
|
const idParam = params?.id;
|
|
if (idParam && typeof idParam === "string") {
|
|
segments = [
|
|
{ label: sectionLabel, href: basePath },
|
|
{ label: `Details (${truncateText(idParam, 20)})` },
|
|
];
|
|
}
|
|
|
|
return (
|
|
<div className="container mx-auto p-4">
|
|
<>
|
|
{segments.length > 0 && (
|
|
<PageBreadcrumb segments={segments} className="mb-4" />
|
|
)}
|
|
{children}
|
|
</>
|
|
</div>
|
|
);
|
|
}
|