Story Bell Logo Story Bell

These uplifting stories help kids celebrate happiness and joy. Each cheerful tale highlights gratitude, positivity and the bonds of family and friendship. Discover how small acts of kindness and appreciation can create big smiles, big dreams and lasting joy. Explore more: Stories About Sadness for Kids Stories About Anger for Kids Stories About Fear for Kids Stories About Surprise for Kids

Social–Emotional Learning Focus

Maya's Missing Mittens
Milo the Mouse

Milo the Mouse

A gentle rhyming poem about Milo, a small brown mouse who discovers the joy of friendship through kindness and sharing.

The Tiniest Rainbow
Stars in My Window
if (!window.firebase) { console.error("Firebase SDK not found"); } let _sbUI; function ensureUI(){ if (!_sbUI) _sbUI = new firebaseui.auth.AuthUI(firebase.auth()); return _sbUI; } window.openAuthModal = function(){ var modal = document.getElementById('auth-modal'); if(!modal){ console.warn('auth-modal not found'); return; } // Show modal immediately modal.style.display = 'flex'; // Ensure container exists inside modal var container = document.getElementById('firebaseui-auth-container'); if(!container){ var content = modal.querySelector('.auth-modal-content, .modal-content, [role="dialog"]') || modal; container = document.createElement('div'); container.id = 'firebaseui-auth-container'; content.appendChild(container); } // Make sure container is visible container.style.display = 'block'; container.style.minHeight = '140px'; // Helper: start FirebaseUI with singleton and safe defaults function startUI(){ try{ if(!(window.firebase && window.firebaseui && firebase.auth)) return false; var ui = window.firebaseui.auth.AuthUI.getInstance() || new firebaseui.auth.AuthUI(firebase.auth()); var cfg = { signInFlow: 'popup', credentialHelper: (window.firebaseui && firebaseui.auth && firebaseui.auth.CredentialHelper) ? firebaseui.auth.CredentialHelper.NONE : undefined, signInOptions: [ firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], callbacks: { signInSuccessWithAuthResult: function(){ if (typeof window.closeAuthModal==='function') window.closeAuthModal(); return false; } } }; ui.start('#firebaseui-auth-container', cfg); return true; }catch(e){ console.error('startUI error', e); return false; } } // If project defines a hook, let it run first (it may build custom menu/UI) try { if (typeof window.onOpenAuthModalHook === 'function') window.onOpenAuthModalHook(); } catch(e){ console.error(e); } // Robust first-open: retry until buttons appear (max ~1s) var tries = 0; function needButtons(){ var has = container.querySelector('.firebaseui-idp-button, .firebaseui-idp-list, .firebaseui-card-content, .firebaseui-provider-wrapper'); return !has; } function tick(){ // Start if not already started if (needButtons()) { startUI(); } tries++; if (needButtons() && tries < 7) { // Wait a frame + small delay to allow CSS/layout & hook work setTimeout(tick, 150); } } // Kick off after a frame so modal is in the layout if (document.startViewTransition) { // No-op; just schedule requestAnimationFrame(tick); } else { requestAnimationFrame(tick); } }; window.closeAuthModal = function(){ const m = document.getElementById('auth-modal'); if (m) m.style.display = 'none'; }; window.signOutFirebase = function(){ if (firebase?.auth) { firebase.auth().signOut().then(()=>alert('Signed out')).catch(console.error); } }; document.addEventListener('click', function(e){ const m = document.getElementById('auth-modal'); if (!m) return; if (e.target === m) closeAuthModal(); }); // Guard sign-in behind consent checkbox (function(){ function enforceConsent(){ var c = document.getElementById('sb-consent'); if (!c || c.checked) return true; alert('Please agree to the Terms & Privacy Policy to continue.'); return false; } // Intercept clicks inside the FirebaseUI area document.addEventListener('click', function(e){ var modal = document.getElementById('auth-modal'); var container = document.getElementById('firebaseui-auth-container'); if (!modal || !container) return; if (modal.style.display !== 'flex') return; if (container.contains(e.target)) { if (!enforceConsent()){ e.stopPropagation(); e.preventDefault(); return false; } } }, true); })(); // Enforce consent checkbox before sign-in (function(){ function enforceConsent(){ var c = document.getElementById('sb-consent'); if (!c || c.checked) return true; alert('Please agree to the Terms & Privacy Policy to continue.'); return false; } document.addEventListener('click', function(e){ var m = document.getElementById('auth-modal'); var container = document.getElementById('firebaseui-auth-container'); if (!m || !container) return; if (m.style.display !== 'flex') return; if (container.contains(e.target)) { if (!enforceConsent()){ e.stopPropagation(); e.preventDefault(); return false; } } }, true); })();