feat: add initial base pages and mobile-first framework

This commit is contained in:
2026-08-12 12:09:47 +02:00
commit 73d8ee5a8f
8 changed files with 489 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
// Aktivitäts-Auswahl: lädt Aktivitäten aus appsettings.json, Kartenauswahl + Weiter-Button
(function () {
const activityGrid = document.getElementById("activityGrid");
const continueBtn = document.getElementById("continueBtn");
let selectedActivity = null;
fetch("appsettings.json")
.then((response) => response.json())
.then((settings) => renderActivities(settings.activities || []))
.catch(() => {
activityGrid.textContent = "Aktivitäten konnten nicht geladen werden.";
});
function renderActivities(activities) {
activities.forEach((activity) => {
const card = document.createElement("button");
card.type = "button";
card.className = "activity-card";
card.dataset.activity = activity.name;
const icon = document.createElement("span");
icon.className = "icon";
icon.setAttribute("aria-hidden", "true");
icon.textContent = activity.icon;
const label = document.createElement("span");
label.className = "label";
label.textContent = activity.name;
card.append(icon, label);
card.addEventListener("click", () => {
activityGrid.querySelectorAll(".activity-card").forEach((c) => c.classList.remove("selected"));
card.classList.add("selected");
selectedActivity = activity.name;
continueBtn.disabled = false;
});
activityGrid.appendChild(card);
});
}
continueBtn.addEventListener("click", () => {
if (!selectedActivity) {
return;
}
// Ablage für die spätere Anbindung an Datenbank/Storage
localStorage.setItem("selectedActivity", selectedActivity);
window.location.href = "datetime.html";
});
})();