diff --git a/app/globals.css b/app/globals.css index ef51b13..42f88c6 100644 --- a/app/globals.css +++ b/app/globals.css @@ -877,11 +877,17 @@ .footer__inner { display: flex; align-items: center; - justify-content: center; + justify-content: space-between; gap: 20px; flex-wrap: wrap; } +.footer__left { + display: flex; + align-items: center; + gap: 20px; +} + .footer__name { font-family: var(--font-sans); font-size: 0.75rem; @@ -891,6 +897,19 @@ color: var(--text-muted); } +.footer__legal-link { + font-size: 0.7rem; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--text-muted); + opacity: 0.5; + transition: opacity var(--transition-fast); +} + +.footer__legal-link:hover { + opacity: 1; +} + .footer__links { display: flex; gap: 12px; diff --git a/app/impressum/page.tsx b/app/impressum/page.tsx new file mode 100644 index 0000000..98c2f15 --- /dev/null +++ b/app/impressum/page.tsx @@ -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 ( +
+
+ + +

Impressum

+

Angaben gemäß § 5 TMG

+
+
+ +
+ +
+

Anschrift

+

+ {legal.name} +
+ {legal.address} +
+ {legal.zipCity} +
+ {legal.country} +

+
+ + {(legal.email || legal.phone) && ( +
+

Kontakt

+

+ {legal.email && ( + <> + E-Mail: {legal.email} +
+ + )} + {legal.phone && <>Telefon: {legal.phone}} +

+
+ )} + + {(legal.taxId || legal.vatId) && ( +
+

+ Steuernummer +

+

+ {legal.taxId && ( + <> + Steuernummer: {legal.taxId} +
+ + )} + {legal.vatId && <>Umsatzsteuer-ID: {legal.vatId}} +

+
+ )} + + {legal.extraInfo && ( +
+

+ Weitere Informationen +

+

{legal.extraInfo}

+
+ )} + +
+

Quelle: Erstellt mit dem Impressum-Generator von eRecht24.

+
+
+
+ + +
+ ); +} diff --git a/components/Footer.tsx b/components/Footer.tsx index a8fa9d8..b3b36f2 100644 --- a/components/Footer.tsx +++ b/components/Footer.tsx @@ -3,21 +3,32 @@ * Reads configuration from gallery.yaml via getConfig(). */ +import Link from 'next/link'; import { getConfig } from '@/lib/config'; export function Footer() { const config = getConfig(); - const { footer } = config; + const { footer, legal } = config; - // Don't render if no footer config - if (!footer || (!footer.name && !footer.instagram && !footer.email && !footer.website)) { + // Don't render if no footer config AND no legal config + if ( + !legal.enabled && + (!footer || (!footer.name && !footer.instagram && !footer.email && !footer.website)) + ) { return null; } return (