, 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

Apr 02, 2025

Prayer Gathering

7:00 am–8:00 am
Chapel 220 (Meditation Chapel)
Apr 02, 2025

Chapel Service

10:30 am–10:50 am
Chapel Sanctuary
Apr 02, 2025

Women's Tennis vs Alma

4:00 pm–6:00 pm
Strikwerda Tennis Courts
Apr 02, 2025

Trade, Debt, and Labor: Unpacking Trump’s Economic Agenda

4:00 pm–5:00 pm
Hekman Library 102
Why is President Trump starting a trade war? How will the trade war likely affect consumer prices? What is DOGE and what is it trying to accomplish? How are President Trump’s policies affecting the global economic stability? What effects will new immigration policies have on jobs and economic growth? Do you relate to having these questions? Come to a post-election panel and discussion sponsored by the Department of Politics and Economics!
Apr 02, 2025

Communication Best Practices: AI

6:30 pm–8:30 pm
Devos Bytwerk Video Theater 015
Learn how AI is transforming the communication profession. Hear best practices from pros that are leveraging AI successfully.
Apr 02, 2025

Knight-a-Thon poster decorating night

6:30 pm–8:00 pm
Hekman Collab Space 102
Apr 02, 2025

Men's Lacrosse at Adrian

7:00 pm–9:00 pm
Adrian, MI
Apr 02, 2025

Awakening Wednesday Prayer

9:15 pm–9:45 pm
Covenant Fine Arts Swets Choral Hall 115
Weekly prayer meeting in Korean language