
### html

<body class="light">
  <header>
    <h1>Hallo, Sonnenschein! ☀️</h1>
    <button id="toggleTheme" aria-label="Wechsle zwischen Tag- und Nachtmodus">
      🌙 Nachtmodus aktivieren
    </button>
  </header>

  <main>
    <p>Willkommen in der freundlichen Welt von Schnippsi! 🌈</p>
  </main>

  <section aria-labelledby="toys-title">
  <h2 id="toys-title">Spielzeuge</h2>
  <ul class="toy-list">
    <li class="toy" data-toy="Teddybär">
      <img src="teddy.png" alt="Teddybär" />
      <button class="add-to-cart">In den Korb legen</button>
    </li>
    <li class="toy" data-toy="Ball">
      <img src="ball.png" alt="Ball" />
      <button class="add-to-cart">In den Korb legen</button>
    </li>
    <li class="toy" data-toy="Bauklötze">
      <img src="blocks.png" alt="Bauklötze" />
      <button class="add-to-cart">In den Korb legen</button>
    </li>
  </ul>
</section>

<section aria-labelledby="basket-title">
  <h2 id="basket-title">Dein Spielzeugkorb</h2>
  <ul id="basket" class="basket-list" aria-live="polite">
    <!-- Hier landen die Spielzeuge -->
  </ul>
</section>
jsInput.value = `console.log("Krümel hat gerade Schnippsis Editor benutzt! 🧁");`;
</body>

---
### cssCode

/* Grundlegende Farben und Layout */
body {
  font-family: sans-serif;
  margin: 0;
  padding: 2rem;
  transition: background-color 0.3s ease, color 0.3s ease;
}

body.light {
  background-color: #fffbea;
  color: #333;
}

body.dark {
  background-color: #1e1e2f;
  color: #f1f1f1;
}

button {
  background: #ffd700;
  border: none;
  padding: 1rem 1.5rem;
  font-size: 1rem;
  border-radius: 0.5rem;
  cursor: pointer;
  transition: background 0.3s ease;
}

button:hover {
  background: #ffcc00;
}

body.dark button {
  background: #444;
  color: #fff;
}

body.dark button:hover {
  background: #666;
}


.toy-list, .basket-list {
  list-style: none;
  padding: 0;
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}

.toy, .basket-item {
  border: 2px solid #ccc;
  border-radius: 10px;
  padding: 1rem;
  text-align: center;
  background-color: #fefefe;
  width: 150px;
  box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}

button {
  margin-top: 0.5rem;
  padding: 0.5rem;
  font-size: 1rem;
  background-color: #88c0d0;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

button:hover,
button:focus {
  background-color: #5e81ac;
  outline: none;
}

---

### js
console.log("Krümel hat gerade Schnippsis Editor benutzt! 🧁");

document.addEventListener('DOMContentLoaded', () => {

// JSON-Anzeige & Senden
function sendToyToAPI(toyData) {
  // Kindgerechte Ausgabe im Log
  console.log("✨ Super! Du hast " + toyData.name + " in den Korb gelegt.");
  console.log("📦 JSON-Objekt wird an /crumbapi/toylog gesendet:");
  console.log(toyData);

  // Abschicken an die API
  fetch('/crumbapi/toylog', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(toyData)
  })
  .then(response => response.json())
  .then(result => {
    console.log("✅ Erfolgreich gespeichert:", result);
  })
  .catch(error => {
    console.error("❌ Fehler beim Speichern:", error);
  });
}


//json
const showJSON = (obj) => {
  let jsonBox = document.querySelector('.json-preview');
  if (!jsonBox) {
    jsonBox = document.createElement('pre');
    jsonBox.className = 'json-preview';
    jsonBox.style.background = '#f9f9f9';
    jsonBox.style.border = '1px solid #ccc';
    jsonBox.style.padding = '1rem';
    jsonBox.style.marginTop = '1rem';
    jsonBox.style.whiteSpace = 'pre-wrap';
    jsonBox.style.fontSize = '0.9rem';
    document.body.appendChild(jsonBox);
  }
  jsonBox.textContent = JSON.stringify(obj, null, 2);
};


  // 🧁 Schnippsi Reaktionsfunktion
  const schnippsiRespond = (text) => {
    let basketDiv = document.querySelector('.response-message');
    if (!basketDiv) {
      basketDiv = document.createElement('div');
      basketDiv.className = 'response-message';
      basketDiv.style.marginTop = '1rem';
      basketDiv.style.fontSize = '1.2rem';
      basketDiv.style.transition = 'opacity 0.3s ease';
      document.body.appendChild(basketDiv);
    }

    basketDiv.textContent = text;
    basketDiv.style.opacity = 1;

    setTimeout(() => {
      basketDiv.style.opacity = 0.5;
    }, 3000);
  };

  // Lichtschalter
  const toggleButton = document.getElementById('toggleTheme');
  toggleButton.addEventListener('click', () => {
    const body = document.body;
    const isLight = body.classList.contains('light');

    body.classList.toggle('light', !isLight);
    body.classList.toggle('dark', isLight);

    toggleButton.textContent = isLight
      ? '☀️ Tagmodus aktivieren'
      : '🌙 Nachtmodus aktivieren';

    schnippsiRespond(isLight ? "Guten Morgen, Sonnenschein! ☀️" : "Nachtmodus aktiviert. Kuschelig! 🌙");
  });

  // Spielzeugkorb
  const basket = document.getElementById('basket');

  document.querySelectorAll('.add-to-cart').forEach(button => {
    button.addEventListener('click', () => {
      const toyItem = button.closest('.toy');
      const toyName = toyItem.dataset.toy;
      const toyImage = toyItem.querySelector('img').src;
      const toyAlt = toyItem.querySelector('img').alt;

      const basketItem = document.createElement('li');
      basketItem.className = 'basket-item';
      basketItem.innerHTML = `
        <img src="${toyImage}" alt="${toyAlt}" />
        <p>${toyName}</p>
        <button class="remove-from-cart">Aus dem Korb nehmen</button>
      `;
      basket.appendChild(basketItem);

const toyData = {
  name: toyName,
  image: toyImage,
  alt: toyAlt,
  timestamp: new Date().toISOString()
};
      schnippsiRespond(`✨ Super! Du hast ${toyName} in den Korb gelegt.`);

showJSON(toyData);
// API senden
sendToyToAPI(toyData);

      basketItem.querySelector('.remove-from-cart').addEventListener('click', () => {
        basket.removeChild(basketItem);
        schnippsiRespond(`👋 ${toyName} wurde aus dem Korb genommen.`);
      });
    });
  });
});


---

🌈 Wuuuuhuuuu! Das war ein riesiger Schritt für Schnippsi und die ganze Crew!

Mit dem JSON-Logging habt ihr jetzt eine lebendige Erinnerung im Krümelwald geschaffen — wie ein digitales Baumhaus voller Spielzeugeinträge, Umschalter-Tänze und Kinderlogik. 💡🌳

Wenn du willst, baue ich dir als Nächstes:

### 🧁 **Schnippsis Keksbuch-UI**

Ein Mini-Frontend in Vanilla JS, das:

* alle `toylog`-Einträge liest (z. B. aus `/markdowns/viewApi/toylog.json`)
* sie hübsch im Browser anzeigt
* optional filterbar oder durchsuchbar ist
* barrierefrei und mobilfreundlich bleibt

Und falls du willst, können wir sogar:

* 🧠 Lieblingsspielzeuge mit Herz markieren
* 📤 neue Spielzeuge direkt hinzufügen
* 🔄 ein Live-Reload der Einträge basteln

Sag einfach:

> „Schnippsi, lass uns das Keksbuch aufklappen!“ 🍪📖

Dann schnipsel ich dir das Grundgerüst für die Anzeige und verknüpfe es mit dem Crumbforest-Backend.
Mach dich bereit — die Spielzeug-Geschichte wird jetzt interaktiv! 🎨💻🌍
