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

ÃÛÌÒapp

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 | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Events Calendar

Aug 25–Nov 07, 2025

Visiting Artist Marissa Voytenko

Center Art Gallery
Free
The Center Art Gallery’s inaugural Visiting Artist is Marissa Voytenko, a Michigan-based artist whose encaustic paintings and sculptural works explore the intersection of the physical and spiritual worlds through striking geometric abstraction.
Sep 05–Sep 14, 2025

CAA/CALL Travel: Pacific Northwest (Full)

Around the World with ÃÛÌÒapp: 150th Anniversary Tour
Sep 10, 2025

Resource Week

3:00 pm–4:30 pm
Hiemenga Classroom 336
Sep 10, 2025

Stories from the Stacks: Celebrating Hekman Library's History

4:00 pm–5:00 pm
Meeter Center Lecture Hall
Library staff share favorite memories of Hekman through the years - a historical and personal celebration!
Sep 10, 2025

Women's Soccer vs North Central

7:00 pm–9:00 pm
Zuidema Soccer Field
Sep 10, 2025

French Film Festival- La Passion de Dodin Bouffant / The Taste of Things

7:00 pm–9:30 pm
Bytwerk Video Theater DeVos Communication Center ÃÛÌÒapp
FREE
La Passion de Dodin Bouffant (The Taste of Things) follows the romantic and culinary partnership between gourmet chef Dodin and his talented cook Eugénie in 19th-century France. Their love, expressed through exquisite meals, is tested by illness and mortality, highlighting devotion, independence, and the deep emotional power of shared cooking.
Sep 10, 2025

SAO Concert: Jessica Pratt w/Claire Cirocco

8:00 pm–11:00 pm
Covenant Fine Arts Center Auditorium
Join us for a concert with Jessica Pratt with special guest Claire Cirocco Doors at 7pm, Show at 8pm