Add calendar next to newsletter — month view fed by schedule webhook

- Calendar card beside newsletter signup (2-column grid, stacks on mobile)
- Month navigation (prev/next), Monday-first week, today highlighted
- Event dots on days with entries + event list below the grid
- Normalizes schedule webhook response ({data:[]} or [{data:[]}])
- Bilingual DE/EN month names + weekday headers, re-renders on language toggle
This commit is contained in:
Kato
2026-09-05 18:19:00 +00:00
parent c8e53d907d
commit 5f66682f1d
3 changed files with 277 additions and 4 deletions
+23
View File
@@ -395,6 +395,7 @@
<!-- Newsletter Section (nur logged-in) -->
<section class="section section-alt newsletter-section" id="newsletter-section" style="display:none;">
<div class="container">
<div class="newsletter-calendar-grid">
<div class="newsletter-card">
<img src="https://images.unsplash.com/photo-1596526131083-e8c633c948d2?w=120&h=120&fit=crop&q=80" alt="Newsletter" class="newsletter-image" />
<h2>
@@ -421,6 +422,28 @@
</p>
</div>
</div>
<div class="calendar-card">
<div class="calendar-header">
<button type="button" class="calendar-nav" id="calendar-prev" aria-label="Monat zurück">&#8249;</button>
<div class="calendar-title" id="calendar-title">
<span class="hide-de">Kalender</span>
<span class="hide-en">Calendar</span>
</div>
<button type="button" class="calendar-nav" id="calendar-next" aria-label="Monat vor">&#8250;</button>
</div>
<div class="calendar-weekdays">
<span class="hide-de">Mo</span><span class="hide-de">Di</span><span class="hide-de">Mi</span><span class="hide-de">Do</span><span class="hide-de">Fr</span><span class="hide-de">Sa</span><span class="hide-de">So</span>
<span class="hide-en">Mo</span><span class="hide-en">Tu</span><span class="hide-en">We</span><span class="hide-en">Th</span><span class="hide-en">Fr</span><span class="hide-en">Sa</span><span class="hide-en">Su</span>
</div>
<div class="calendar-grid" id="calendar-grid"></div>
<div class="calendar-events" id="calendar-events">
<p class="calendar-events-hint">
<span class="hide-de">Termine werden geladen...</span>
<span class="hide-en">Loading events...</span>
</p>
</div>
</div>
</div>
</div>
</section>