Update the website footer with a new layout and content

Revises the footer component in client/src/components/footer.tsx, removing old category and legal links, restructuring the layout into three columns, and updating the descriptive text and social links.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 23852c00-4779-460a-9e0c-d09fee4b6c92
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 7f4dc175-3c66-4be7-b8f0-6ba895d1f431
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/23852c00-4779-460a-9e0c-d09fee4b6c92/ee1CXlO
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
sebastjanartic 2026-03-06 15:27:31 +00:00
parent 67d064c793
commit f2346ba2e8

View File

@ -8,33 +8,18 @@ const SOCIAL_LINKS = [
{ href: "https://www.tiktok.com/@folxtv", icon: SiTiktok, label: "TikTok", testId: "link-social-tiktok" }, { href: "https://www.tiktok.com/@folxtv", icon: SiTiktok, label: "TikTok", testId: "link-social-tiktok" },
]; ];
const CATEGORIES = [
{ href: "/category/News", label: "News", testId: "link-footer-news" },
{ href: "/videos", label: "Video", testId: "link-footer-video" },
{ href: "/gallery", label: "Fotogalerie", testId: "link-footer-gallery" },
{ href: "/horoskop", label: "Horoskop", testId: "link-footer-horoskop" },
{ href: "/rezepte", label: "Rezepte", testId: "link-footer-rezepte" },
];
const LEGAL_LINKS = [
{ href: "/empfang-folx-tv", label: "Empfang", testId: "link-footer-empfang" },
{ href: "/ueber-uns", label: "Über uns", testId: "link-footer-ueber-uns" },
{ href: "/kontakt", label: "Kontakt", testId: "link-footer-kontakt" },
{ href: "/impressum", label: "Impressum", testId: "link-footer-impressum" },
{ href: "/datenschutz", label: "Datenschutz", testId: "link-footer-datenschutz" },
];
export default function Footer() { export default function Footer() {
return ( return (
<footer className="border-t border-border bg-[hsl(var(--card))] mt-8 relative z-20 isolation-isolate" data-testid="footer"> <footer className="border-t border-border bg-card mt-16 relative z-20" data-testid="footer">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10">
<div className="py-8 flex flex-col md:flex-row md:items-start md:justify-between gap-8"> <div className="grid grid-cols-1 md:grid-cols-3 gap-8">
<div className="flex-shrink-0"> <div>
<h3 className="font-bold text-card-foreground text-xl mb-2 tracking-tight">FOLX TV</h3> <h3 className="font-bold text-card-foreground text-lg mb-3">Folx Music Television</h3>
<p className="text-muted-foreground text-sm leading-relaxed max-w-[260px] mb-4"> <p className="text-muted-foreground text-sm leading-relaxed mb-4">
Ihr Sender für Volksmusik und Schlager. Aktuelle Nachrichten, Interviews und Hintergrundberichte. Folx Music Television. Aktuelle Nachrichten, Interviews und
Hintergrundberichte aus der Welt der Volksmusik und des Schlagers.
</p> </p>
<div className="flex gap-4"> <div className="flex gap-3">
{SOCIAL_LINKS.map((s) => ( {SOCIAL_LINKS.map((s) => (
<a <a
key={s.label} key={s.label}
@ -50,56 +35,76 @@ export default function Footer() {
))} ))}
</div> </div>
</div> </div>
<div>
<div className="flex flex-wrap gap-x-16 gap-y-6"> <h4 className="font-semibold text-card-foreground mb-3">Kategorien</h4>
<div> <ul className="space-y-2 text-sm">
<h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-3">Kategorien</h4> <li>
<ul className="space-y-1.5 text-sm"> <Link href="/category/News">
{CATEGORIES.map((c) => ( <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-news">News</span>
<li key={c.label}> </Link>
<Link href={c.href}> </li>
<span className="text-card-foreground/80 cursor-pointer hover:text-primary transition-colors" data-testid={c.testId}>{c.label}</span> <li>
</Link> <Link href="/videos">
</li> <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-video">Video</span>
))} </Link>
</ul> </li>
</div> <li>
<Link href="/gallery">
<div> <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-gallery">Fotogalerie</span>
<h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-3">Folgt uns</h4> </Link>
<ul className="space-y-1.5 text-sm"> </li>
{SOCIAL_LINKS.map((s) => ( <li>
<li key={s.label}> <Link href="/horoskop">
<a <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-horoskop">Horoskop</span>
href={s.href} </Link>
target="_blank" </li>
rel="noopener noreferrer" <li>
className="text-card-foreground/80 hover:text-primary transition-colors inline-flex items-center gap-2" <Link href="/rezepte">
data-testid={`link-footer-${s.label.toLowerCase()}`} <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-rezepte">Rezepte</span>
> </Link>
<s.icon className="w-3.5 h-3.5" /> </li>
{s.label} </ul>
</a> </div>
</li> <div>
))} <h4 className="font-semibold text-card-foreground mb-3">Folgt uns</h4>
</ul> <ul className="space-y-2 text-sm">
</div> {SOCIAL_LINKS.map((s) => (
<li key={s.label}>
<a
href={s.href}
target="_blank"
rel="noopener noreferrer"
className="text-muted-foreground hover:text-primary transition-colors inline-flex items-center gap-2"
data-testid={`link-footer-${s.label.toLowerCase()}`}
>
<s.icon className="w-4 h-4" />
{s.label}
</a>
</li>
))}
</ul>
</div> </div>
</div> </div>
<div className="border-t border-border mt-8 pt-6 flex flex-col items-center gap-3">
<div className="border-t border-border/50 py-4 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3"> <div className="flex flex-wrap justify-center gap-x-4 gap-y-1 text-xs">
<div className="flex flex-wrap gap-x-3 gap-y-1 text-xs"> <Link href="/empfang-folx-tv">
{LEGAL_LINKS.map((l, i) => ( <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-empfang">Empfang</span>
<span key={l.label} className="flex items-center gap-3"> </Link>
<Link href={l.href}> <Link href="/ueber-uns">
<span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid={l.testId}>{l.label}</span> <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-ueber-uns">Über uns</span>
</Link> </Link>
{i < LEGAL_LINKS.length - 1 && <span className="text-border">·</span>} <Link href="/kontakt">
</span> <span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-kontakt">Kontakt</span>
))} </Link>
<Link href="/impressum">
<span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-impressum">Impressum</span>
</Link>
<Link href="/datenschutz">
<span className="text-muted-foreground cursor-pointer hover:text-primary transition-colors" data-testid="link-footer-datenschutz">Datenschutz</span>
</Link>
</div> </div>
<p className="text-xs text-muted-foreground/60"> <p className="text-xs text-muted-foreground">
&copy; {new Date().getFullYear()} Folx Music Television &copy; {new Date().getFullYear()} Folx Music Television. Alle Rechte vorbehalten.
</p> </p>
</div> </div>
</div> </div>