Story Bell Logo Story Bell

Our collection for ages 4–6 is designed for preschoolers and kindergartners. These picture books and early reader stories feature vibrant illustrations, rhyming sentences and phonics patterns to engage young children and build emergent reading skills. You’ll find preschool stories about friendship, sharing, kindness and curiosity—perfect for story time, kindergarten read‑aloud or early independent readers. Explore more: Children’s Stories for Ages 0–3 Children’s Stories for Ages 7–12 10‑Minute Children’s Stories Children’s Poems & Rhymes

Learning Needs (Ages 4–6)

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.

Luna's Colorful Garden

Luna's Colorful Garden

A story about helping friends create a magical garden.

The Lonely Leaf
Melody and the Muddy Puppy

Melody and the Muddy Puppy

A silly story about a girl and her puppy, who both discover the meaning of disgust after a very messy day in the park.

Grumpy Grandpa and the Silly Hat

Grumpy Grandpa and the Silly Hat

Grandpa is feeling angry until his granddaughter makes him laugh with a silly hat.

Lily and the Blue Balloon

Lily and the Blue Balloon

Lily feels sad when her balloon floats away, but she finds hope in a new friend.

Oliver's Ocean Quest

Oliver's Ocean Quest

Oliver explores tide pools at the beach with his dad and discovers the wonders of ocean life.

The Lost Puppy

The Lost Puppy

Emma finds a lost puppy in the park and works with her community to reunite it with its family.

Jack's Jungle Dream

Jack's Jungle Dream

Jack has a magical dream where he explores a colorful jungle and makes friends with amazing animals.

The Tiny Fairy

The Tiny Fairy

Lily discovers a tiny fairy named Shimmer in her garden, who teaches her about the magic of nature.

Benny's Big Helpers

Benny's Big Helpers

Benny learns to help around the house and discovers the joy of being a contributing family member.

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); })();