cd465e0564
- Add backend/app/mcp_server.py with FastMCP server (hms-cms) - Resources: design-rules, page-structure, sync-status - Tools: trigger_sync, get_sync_log, set_rentman_token, read_file, write_file, create_page, deploy, git_commit, git_status - Bearer token auth via MCP_AUTH_TOKEN env var - Mount MCP at /mcp with streamable HTTP transport - Integrate session manager in FastAPI lifespan - Add Traefik labels for external /mcp route on hms.media-on.de - Add git, docker.io, curl to backend Dockerfile - Mount repo root + docker socket in backend container - Add mcp>=1.0.0 to requirements.txt
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { useEffect } from 'react';
|
||
|
||
interface Props {
|
||
title: string;
|
||
content?: string;
|
||
loading?: boolean;
|
||
}
|
||
|
||
export default function LegalContentPage({ title, content = '', loading = false }: Props) {
|
||
useEffect(() => {
|
||
document.title = `${title} – HMS Licht & Ton`;
|
||
}, [title]);
|
||
|
||
if (loading) {
|
||
return (
|
||
<div className="max-w-3xl mx-auto">
|
||
<div className="space-y-4">
|
||
<div className="hms-skeleton rounded-md" style={{ height: 32, width: '60%' }} />
|
||
<div className="hms-skeleton rounded-md" style={{ height: 20 }} />
|
||
<div className="hms-skeleton rounded-md" style={{ height: 20, width: '90%' }} />
|
||
<div className="hms-skeleton rounded-md" style={{ height: 20 }} />
|
||
<div className="hms-skeleton rounded-md" style={{ height: 20, width: '80%' }} />
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|
||
|
||
return (
|
||
<div className="max-w-3xl mx-auto">
|
||
<article>
|
||
<h1 className="text-3xl font-bold text-text mb-6">{title}</h1>
|
||
<div className="prose prose-invert max-w-none text-text-muted" dangerouslySetInnerHTML={{ __html: content }} />
|
||
</article>
|
||
</div>
|
||
);
|
||
}
|