folx-tv/client/src/pages/empfang.tsx
sebastjanartic 78049cc867 Adjust ad placement to prevent overlap on legal and other pages
Modify `PageSideAds` component to accept a `contentHalfWidth` prop, dynamically adjusting ad positioning on pages with narrower content layouts (Impressum, Datenschutz, Kontakt, About) to `384px`, and on Empfang page to `448px`, resolving overlap issues.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 23852c00-4779-460a-9e0c-d09fee4b6c92
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: b8ad454c-ef1f-4377-8e94-d9e1665feb20
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
2026-03-06 15:12:14 +00:00

112 lines
4.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Tv, Globe, MapPin } from "lucide-react";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { usePageMeta } from "@/hooks/use-page-meta";
import { PageSideAds } from "@/components/adsense";
const COUNTRIES = [
{
country: "Deutschland",
flag: "DE",
providers: [
{ name: "MagentaTV", detail: "Telekom Deutschland" },
{ name: "Zattoo", detail: null },
{ name: "O2 TV", detail: null },
],
},
{
country: "Österreich",
flag: "AT",
providers: [
{ name: "A1 Xplore TV", detail: null },
{ name: "Salzburg AG CableLink", detail: null },
{ name: "Zattoo", detail: null },
],
},
{
country: "Schweiz",
flag: "CH",
providers: [
{ name: "Swisscom blue TV", detail: null },
{ name: "Zattoo", detail: null },
],
},
];
export default function EmpfangPage() {
usePageMeta("Empfang FOLX TV - Volksmusik & Schlager Sender empfangen", "So empfangen Sie FOLX TV Ihren Volksmusik & Schlager Sender in Deutschland, Österreich und der Schweiz.");
return (
<div className="min-h-screen bg-background">
<Header />
<PageSideAds contentHalfWidth={448} />
<main className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="flex items-center gap-3 mb-2">
<Tv className="w-7 h-7 text-primary" />
<h1 className="text-3xl font-bold text-foreground" data-testid="text-empfang-title">
Empfang von FOLX TV
</h1>
</div>
<p className="text-muted-foreground mb-8" data-testid="text-empfang-subtitle">
So empfangen Sie Folx Music Television in Ihrem Land
</p>
<div className="space-y-6 mb-10">
{COUNTRIES.map((c) => (
<section
key={c.country}
className="bg-card rounded-lg border border-card-border overflow-hidden"
data-testid={`section-country-${c.flag.toLowerCase()}`}
>
<div className="flex items-center gap-3 px-5 py-4 border-b border-card-border bg-muted/20">
<MapPin className="w-4 h-4 text-primary" />
<h2 className="text-lg font-bold text-card-foreground">{c.country}</h2>
</div>
<div className="px-5 py-4">
<div className="flex flex-wrap items-center gap-x-2 gap-y-1">
{c.providers.map((p, i) => (
<span key={p.name} className="flex items-center gap-x-2">
<span className="text-card-foreground font-medium" data-testid={`text-provider-${p.name.toLowerCase().replace(/\s+/g, "-")}`}>
{p.name}
{p.detail && (
<span className="text-muted-foreground font-normal text-sm ml-1">
({p.detail})
</span>
)}
</span>
{i < c.providers.length - 1 && (
<span className="text-muted-foreground/40 select-none" aria-hidden="true">·</span>
)}
</span>
))}
</div>
</div>
</section>
))}
</div>
<section className="bg-card rounded-lg border border-card-border overflow-hidden" data-testid="section-online">
<div className="flex items-center gap-3 px-5 py-4 border-b border-card-border bg-muted/20">
<Globe className="w-4 h-4 text-primary" />
<h2 className="text-lg font-bold text-card-foreground">Online</h2>
</div>
<div className="px-5 py-4">
<p className="text-muted-foreground text-sm leading-relaxed">
FOLX TV kann auch über den offiziellen Livestream im Internet empfangen werden.
Besuchen Sie{" "}
<a
href="https://www.folx.tv"
className="text-primary hover:underline font-medium"
data-testid="link-livestream"
>
www.folx.tv
</a>{" "}
für den direkten Zugang.
</p>
</div>
</section>
</main>
<Footer />
</div>
);
}