feat: separate settings and gallery config, add impressum page

This commit is contained in:
ralksta
2026-03-07 08:34:05 +01:00
parent 1e079760d8
commit 0fed8e6c78
6 changed files with 307 additions and 124 deletions

121
app/impressum/page.tsx Normal file
View File

@@ -0,0 +1,121 @@
/**
* Impressum (Legal Notice) page.
* Required for German law compliance. Displays information from settings.yaml.
*/
import { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { getConfig } from '@/lib/config';
import { BackLink } from '@/components/BackLink';
import { FadeIn } from '@/components/FadeIn';
export const metadata: Metadata = {
title: 'Impressum',
robots: { index: false, follow: true }, // Usually no need to index legal pages
};
export default function ImpressumPage() {
const { legal } = getConfig();
if (!legal.enabled) {
notFound();
}
return (
<div className="subpage-container">
<header className="subpage-header">
<BackLink href="/" label="Home" />
<FadeIn>
<h1 className="subpage-title">Impressum</h1>
<p className="subpage-subtitle">Angaben gemäß § 5 TMG</p>
</FadeIn>
</header>
<main className="subpage-content" style={{ maxWidth: '600px', margin: '0 auto' }}>
<FadeIn delay={0.1}>
<section style={{ marginBottom: '2rem' }}>
<h2 style={{ fontSize: '1.2rem', marginBottom: '0.5rem', opacity: 0.8 }}>Anschrift</h2>
<p style={{ lineHeight: 1.6 }}>
{legal.name}
<br />
{legal.address}
<br />
{legal.zipCity}
<br />
{legal.country}
</p>
</section>
{(legal.email || legal.phone) && (
<section style={{ marginBottom: '2rem' }}>
<h2 style={{ fontSize: '1.2rem', marginBottom: '0.5rem', opacity: 0.8 }}>Kontakt</h2>
<p style={{ lineHeight: 1.6 }}>
{legal.email && (
<>
E-Mail: {legal.email}
<br />
</>
)}
{legal.phone && <>Telefon: {legal.phone}</>}
</p>
</section>
)}
{(legal.taxId || legal.vatId) && (
<section style={{ marginBottom: '2rem' }}>
<h2 style={{ fontSize: '1.2rem', marginBottom: '0.5rem', opacity: 0.8 }}>
Steuernummer
</h2>
<p style={{ lineHeight: 1.6 }}>
{legal.taxId && (
<>
Steuernummer: {legal.taxId}
<br />
</>
)}
{legal.vatId && <>Umsatzsteuer-ID: {legal.vatId}</>}
</p>
</section>
)}
{legal.extraInfo && (
<section style={{ marginBottom: '2rem' }}>
<h2 style={{ fontSize: '1.2rem', marginBottom: '0.5rem', opacity: 0.8 }}>
Weitere Informationen
</h2>
<p style={{ lineHeight: 1.6, whiteSpace: 'pre-wrap' }}>{legal.extraInfo}</p>
</section>
)}
<section style={{ marginTop: '4rem', fontSize: '0.85rem', opacity: 0.6 }}>
<p>Quelle: Erstellt mit dem Impressum-Generator von eRecht24.</p>
</section>
</FadeIn>
</main>
<style jsx>{`
.subpage-container {
padding: 4rem 2rem;
min-height: 80vh;
}
.subpage-header {
margin-bottom: 4rem;
text-align: center;
}
.subpage-title {
font-family: var(--font-serif);
font-size: clamp(2.5rem, 8vw, 4rem);
font-weight: 400;
margin-bottom: 1rem;
}
.subpage-subtitle {
font-family: var(--font-caption);
font-size: 1rem;
text-transform: uppercase;
letter-spacing: 0.1em;
opacity: 0.6;
}
`}</style>
</div>
);
}