Files
songs2vid/components/LegalPageLayout.tsx
T
Atakan Doğan Özban 4bc12fce78 Close OSS self-host gaps: in-repo API docs, legal notes, and packaging.
Add MIT license and docs/api, strip SaaS status/admin remnants from robots and footer, align env/compose/README with payment-free product truth.
2026-08-03 07:36:08 +02:00

61 lines
2.1 KiB
TypeScript

import Link from "next/link";
import type { ReactNode } from "react";
import { Logo } from "@/components/Logo";
import { LEGAL_LAST_UPDATED } from "@/lib/legal/constants";
import { DOCS_URL } from "@/lib/plans";
type Props = {
title: string;
description?: string;
children: ReactNode;
};
export function LegalPageLayout({ title, description, children }: Props) {
return (
<div className="min-h-screen bg-surface-dark">
<header className="border-b border-gray-800 bg-black/30">
<div className="mx-auto flex max-w-3xl items-center justify-between px-6 py-6">
<Logo />
<Link
href="/"
className="text-sm text-gray-400 transition-colors duration-300 hover:text-white"
>
Back to home
</Link>
</div>
</header>
<main className="mx-auto max-w-3xl px-6 py-12">
<p className="mb-2 text-xs uppercase tracking-wider text-gray-500">
Last updated: {LEGAL_LAST_UPDATED}
</p>
<h1 className="mb-3 text-3xl font-bold text-white">{title}</h1>
{description && <p className="mb-10 text-gray-400">{description}</p>}
<article className="prose prose-invert prose-gray max-w-none prose-headings:font-semibold prose-headings:text-white prose-p:text-gray-300 prose-li:text-gray-300 prose-strong:text-gray-200 prose-a:text-accent prose-a:no-underline hover:prose-a:underline">
{children}
</article>
</main>
<footer className="border-t border-gray-800 py-8 text-center text-xs text-gray-500">
<div className="flex flex-wrap items-center justify-center gap-4">
<Link href="/privacy" className="hover:text-gray-300">
Privacy
</Link>
<Link href="/terms" className="hover:text-gray-300">
Terms
</Link>
<a
href={DOCS_URL}
target="_blank"
rel="noopener noreferrer"
className="hover:text-gray-300"
>
Documentation
</a>
</div>
</footer>
</div>
);
}