Files
kuehlfinder/src/layouts/Base.astro
T

66 lines
4.2 KiB
Plaintext
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.
---
const { title, description, jsonld } = Astro.props;
const desc = description ?? 'Kühlfinder das richtige portable Klimagerät finden und sehen, wo es heute verfügbar ist.';
import '../styles/global.css';
---
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{title}</title>
<meta name="description" content={desc} />
<link rel="canonical" href={Astro.url.href} />
<meta property="og:title" content={title} />
<meta property="og:description" content={desc} />
<meta property="og:type" content="website" />
{jsonld && <script type="application/ld+json" set:html={JSON.stringify(jsonld)} />}
<!-- Umami Analytics (self-hosted). TODO: data-website-id setzen, Host prüfen. -->
<script defer is:inline src="https://umami.heidrich-digital.de/script.js" data-website-id="REPLACE_WITH_UMAMI_WEBSITE_ID" data-domains="kuehlfinder.de"></script>
</head>
<body>
<header class="site"><div class="wrap bar">
<a class="brand" href="/">Kühl<b>finder</b></a>
<nav>
<a href="/geraete">Geräte</a>
<a href="/rechner">Rechner</a>
<a href="/finder">Finder</a>
<a href="/alarm">Alarm</a>
<a href="/pro" data-umami-event="nav_pro">Pro</a>
<a href="/login">Login</a>
<a class="nav-cta" href="/karte" data-umami-event="nav_live_karte">Live-Karte</a>
</nav>
</div></header>
<main><slot /></main>
<script is:inline>
(function(){
const rm = matchMedia('(prefers-reduced-motion: reduce)').matches;
const io = ('IntersectionObserver' in window) ? new IntersectionObserver((es)=>{
es.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } });
},{rootMargin:'0px 0px -8% 0px'}) : null;
function wire(){
document.querySelectorAll('.reveal:not(.in)').forEach(el=> io? io.observe(el): el.classList.add('in'));
document.querySelectorAll('[data-count]:not([data-done])').forEach(el=>{
const target=+el.getAttribute('data-count'); if(isNaN(target))return; el.setAttribute('data-done','1');
if(rm){ el.textContent=target.toLocaleString('de-DE'); return; }
const dur=900, t0=performance.now();
(function step(t){ const p=Math.min(1,(t-t0)/dur); const v=Math.round(target*(1-Math.pow(1-p,3)));
el.textContent=v.toLocaleString('de-DE'); if(p<1)requestAnimationFrame(step); })(t0);
});
}
document.addEventListener('DOMContentLoaded',wire); wire();
window.kfAnim=wire;
window.track=function(name,data){try{window.umami&&window.umami.track(name,data);}catch(e){}};
// Auto-Tracking ausgehender Affiliate-/Partner-Links
document.addEventListener('click',function(e){var a=e.target.closest&&e.target.closest('a[href^="http"]');if(!a)return;var rel=(a.getAttribute('rel')||'');var host=(a.hostname||'');if(rel.includes('sponsored')||/amazon|ebay|idealo|mediamarkt|saturn|obi|bauhaus|hornbach|toom|hagebau|globus|klempnerei-stoever|tgasolutions/i.test(host)){window.track&&window.track('outbound_click',{host:host,label:(a.textContent||'').trim().slice(0,40)});}},true);
})();
</script>
<footer class="site"><div class="wrap">
<p class="note"><strong>Transparenz:</strong> Einige Links sind Affiliate-Links kaufst du darüber, erhalten wir ggf. eine Provision, für dich ändert sich der Preis nicht. Empfehlungen basieren auf Nutzungsfall, Technik, Testquellen und redaktioneller Einschätzung nicht auf Provision.</p>
<p class="note">Preise und Verfügbarkeit ändern sich während Hitzewellen sehr schnell. Wir halten Daten so aktuell wie möglich, geben aber keine Garantie. Bitte beim Händler final prüfen.</p>
<p class="note"><a href="/rechner">Klima-Rechner</a> · <a href="/soforthilfe">Hitze-Soforthilfe</a> · <a href="/klimaanlage-installieren">Fest installieren</a> · <a href="/portasplit">PortaSplit</a> · <a href="/hitzeschutz">Hitzeschutz</a> · <a href="/prognose">Prognose-Methodik</a></p>
<p class="note"><a href="/transparenz">Transparenz &amp; Methodik</a> · <a href="/impressum">Impressum</a> · <a href="/datenschutz">Datenschutz</a> · © {new Date().getFullYear()} Kühlfinder</p>
</div></footer>
</body>
</html>