Self-hosted Docker Compose manager. - Backend: FastAPI + docker-py + SQLite (JWT auth, file-first stacks, lifecycle, live status, WebSocket logs, docker-run converter, audit log) - Frontend: React + Vite + Tailwind (login/setup, dashboard, stacks, stack detail, Monaco editor, dark/light theme) - Deployment: docker-compose.yml, Dockerfiles, nginx reverse proxy Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
624 B
TypeScript
23 lines
624 B
TypeScript
import { useLocation } from "react-router-dom";
|
|
|
|
const titles: Record<string, string> = {
|
|
"": "Dashboard",
|
|
stacks: "Stacks",
|
|
networks: "Networks",
|
|
images: "Images",
|
|
templates: "Templates",
|
|
settings: "Settings",
|
|
};
|
|
|
|
export function Topbar() {
|
|
const { pathname } = useLocation();
|
|
const segment = pathname.split("/")[1] ?? "";
|
|
const title = titles[segment] ?? "StackPilot";
|
|
|
|
return (
|
|
<header className="flex h-14 items-center justify-between border-b border-slate-200 bg-card px-6 dark:border-slate-700 dark:bg-card-dark">
|
|
<h1 className="text-base font-semibold">{title}</h1>
|
|
</header>
|
|
);
|
|
}
|