, but this code // executes before the first paint, when

Â鶹Çø

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); Events Calendar | Â鶹Çø

Â鶹Çø

Skip to main content

Events Calendar

Mar 20, 2025

Free Cookies - Welcome Back Treat at Calvin Health Services!

Day 2 of free cookies! Welcome back from spring break! (8:30-11:30am or 1:00-4:00pm)
Mar 20, 2025

International Student Webinar: Financial Aid Process

8:00 am–9:00 am
Our international admissions team is excited to host weekly webinars to talk about the steps to complete the enrollment process—with this week's focus on the financial aid process! Plus, we'll have time for questions.
Mar 20, 2025

Chapel: Lectio Divina

9:50 am–10:10 am
Chapel Sanctuary
Mar 20, 2025

Continuing the Conversation: Teaching for and through Democracy

2:00 pm–3:15 pm
Hekman CSE Conference Room 215F
This conversation has been postponed, stay tuned for rescheduling details.
Mar 20, 2025

Welcome to Your Library of Things: Exploring Local Sustainable Collections

4:00 pm–5:00 pm
Meeter Center Lecture Hall
From camping gear to kitchen supplies, learn from local librarians of Hekman, GRPL, and KDL about borrowing unique items.
Mar 20, 2025

Becoming the Pastor’s Wife: An Evening with Beth Allison Barr 

7:00 pm–8:00 pm
Chapel Sanctuary
Mar 20, 2025

Becoming the Pastor's Wife: An Evening with Beth Allison Barr

7:00 pm–8:00 pm
Â鶹Çø Chapel
Join us for an evening with Beth Allison Barr, author of the brand-new book Becoming the Pastor’s Wife: How Marriage Replaced Ordination as a Woman's Path to Ministry.
Mar 20, 2025

West Michigan Young Alumni Network at the Grand Rapids Rise

7:00 pm–9:00 pm
$15
Alumni + friends + $2 refreshments!
Mar 20, 2025

SAO Open Mic Night

8:00 pm–9:30 pm
Hekman Collab Space 102