/* ARBEITSSCHIRM — Live-Wetter-Hero mit Modus-Umschalter */ (function () { const { Button } = window.ABIndustrieServiceDesignSystem_89df89; const { Icon } = window.ABIcons; const { WeatherCanvas } = window.ABArbeit; const MODES = [ { key: 'wind', label: 'Wind', icon: 'wind', head: 'STEHT IM WIND.', sub: 'Bodenverankerung, die hält — auch wenn die Böe schiebt. Kein Wegfliegen, kein Nachjustieren.' }, { key: 'regen', label: 'Regen', icon: 'cloud-rain', head: 'DACH ÜBER DER NAHT.', sub: 'Trockene Schweißnaht, trockener Schacht. Der Guss da oben interessiert Ihre Arbeit nicht mehr.' }, { key: 'sturm', label: 'Sturm', icon: 'cloud-lightning', head: 'WENN ANDERE EINPACKEN.', sub: 'Sturmfest verankert. Während die Nachbarbaustelle Feierabend macht, läuft Ihre weiter.' }, { key: 'schnee', label: 'Schnee', icon: 'snowflake', head: 'TRÄGT DIE SCHNEELAST.', sub: 'Stabiles Gestänge unter Schnee — kein Durchhängen, kein Einsturz, kein Stillstand.' }, { key: 'sonne', label: 'Sonne', icon: 'sun', head: 'SCHATTEN STATT HITZE.', sub: 'UV-beständige Bespannung — Schatten für Mensch und Material, auch wenn die Sonne knallt.' }, ]; // Hero-Bild-Slider — 14 Slots, sanfter Crossfade (kein harter Schnitt). // Bilder kommen später per Drag & Drop in jeden Slot (eigene id je Slot). const SLIDE_COUNT = 14; const SLIDE_INTERVAL = 5000; function arrowStyle(side) { return { position: 'absolute', top: '50%', [side]: 10, transform: 'translateY(-50%)', zIndex: 3, width: 36, height: 36, display: 'inline-flex', alignItems: 'center', justifyContent: 'center', background: 'rgba(17,16,11,0.55)', border: '1px solid rgba(255,255,255,0.18)', borderRadius: 'var(--radius-pill)', cursor: 'pointer', color: '#fff', backdropFilter: 'blur(4px)', transition: 'background var(--dur-fast) var(--ease-out)', }; } function HeroSlider({ lang }) { const tr = (s) => window.ABi18n.t(lang, s); // Anzeige-Reihenfolge bei jedem Laden zufällig mischen (Fisher–Yates). // Die Slot-IDs (und damit die Bilddateien) bleiben fix — nur die // Abspielreihenfolge ist gemischt. const [order] = React.useState(() => { const a = Array.from({ length: SLIDE_COUNT }, (_, n) => n); for (let k = a.length - 1; k > 0; k--) { const j = Math.floor(Math.random() * (k + 1)); const t = a[k]; a[k] = a[j]; a[j] = t; } return a; }); const [p, setP] = React.useState(0); // Position in der gemischten Reihenfolge const hover = React.useRef(false); React.useEffect(() => { const reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce) return; // kein Auto-Lauf bei reduzierter Bewegung const id = setInterval(() => { if (!hover.current) setP((x) => (x + 1) % SLIDE_COUNT); }, SLIDE_INTERVAL); return () => clearInterval(id); }, []); const go = (k) => setP((k + SLIDE_COUNT) % SLIDE_COUNT); const active = order[p]; return (
{ hover.current = true; }} onMouseLeave={() => { hover.current = false; }} style={{ position: 'relative', zIndex: 1, width: '100%', height: 300, borderRadius: 14, overflow: 'hidden', boxShadow: 'var(--shadow-xl)', border: '1px solid rgba(255,255,255,0.14)' }}> {Array.from({ length: SLIDE_COUNT }).map((_, n) => ( ))}
{Array.from({ length: SLIDE_COUNT }).map((_, k) => (
); } function Hero({ onCta, onModelle, mode = 'sturm', onPick, lang = 'de' }) { const tr = (s) => window.ABi18n.t(lang, s); // 4 product names (rotating wordmark) — two forced lines = constant height const WORDS = [ { p: 'BAUSTELLEN', s: 'SCHIRM' }, { p: 'ARBEITS', s: 'SCHIRM' }, { p: 'SCHWEISSER', s: 'SCHIRM' }, { p: 'WETTERSCHUTZ', s: 'SCHIRM' }, ]; // 4 headlines (independent of the weather) const HEADS = [ { icon: 'wind', head: 'STEHT IM WIND.', sub: 'Bodenverankerung, die hält — auch wenn die Böe schiebt. Kein Wegfliegen, kein Nachjustieren.' }, { icon: 'cloud-rain', head: 'DACH ÜBER DER NAHT.', sub: 'Trockene Schweißnaht, trockener Schacht. Der Guss da oben interessiert Ihre Arbeit nicht mehr.' }, { icon: 'cloud-lightning', head: 'WENN ANDERE EINPACKEN.', sub: 'Sturmfest verankert. Während die Nachbarbaustelle Feierabend macht, läuft Ihre weiter.' }, { icon: 'snowflake', head: 'TRÄGT DIE SCHNEELAST.', sub: 'Stabiles Gestänge unter Schnee — kein Durchhängen, kein Einsturz, kein Stillstand.' }, { icon: 'sun', head: 'SCHATTEN STATT HITZE.', sub: 'UV-beständige Bespannung — Schatten für Mensch und Material, auch wenn die Sonne knallt.' }, ]; // EINE Markenfarbe — Farbe trägt die Marke, nie Dekoration (DS: keine // bunte Akzent-Rotation). Dash, Unterstrich und Headline-Icon = Akzent-Rot. const accent = 'var(--accent)'; const [wi, setWi] = React.useState(0); // name const [hi, setHi] = React.useState(0); // headline React.useEffect(() => { // bewusst unterschiedliche, ruhige Takte, damit Name & Headline durchwandern const a = setInterval(() => setWi((i) => (i + 1) % WORDS.length), 7000); const b = setInterval(() => setHi((i) => (i + 1) % HEADS.length), 9500); return () => { clearInterval(a); clearInterval(b); }; }, []); const word = WORDS[wi]; const head = HEADS[hi]; return (
{/* darken + vignette so storm never fights the type */}
{/* diagonal red slash motif */}
{tr('Wetterschutz für den Rohrleitungs-, Anlagen- und Kanalbau')}

{tr(word.p + word.s)}

{tr(head.head)}

{tr(head.sub)}

{/* WETTER-UMSCHALTER */}
{MODES.map((m) => { const on = m.key === mode; return ( ); })}
{[ { v: 'bis 100 km/h', l: 'Windfest im Einsatz' }, { v: 'bis zu 36 Streben', l: 'Verstärktes Gestell' }, { v: 'DIN 4102 B1', l: 'schwer entflammbar (Pipeliner)' }, { v: 'Ø 2,5 · 3,0 m', l: 'Rund & Rechteck' }, { v: 'UV-stabil', l: 'Fäulnishemmend' }, { v: '5 Modelle', l: 'Worker · Pipeliner · Heavy …' }, ].map((s) => (
{tr(s.v)}
{tr(s.l)}
))}
{/* DRY ZONE — Produktbild */}
{/* Tag-Cluster oben links gestapelt — hält Pfeile (Mitte) und Punkte (unten) frei */}
{tr("Hier bleibt's trocken")}
{/* Wetter-Ticker */}
{['Windstabil', 'Regendicht', 'Sturmfest verankert', 'Schneelast geprüft', 'UV-beständig'].map((t, i) => ( {i > 0 && ·}{tr(t)} ))}
); } window.ABArbeit = Object.assign(window.ABArbeit || {}, { Hero }); })();