, 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); })(); Office of the Provost - | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Office of the Provost

Visionary teaching. Scholarly expertise. Community engagement.

Students flourish by encountering new ideas and putting those ideas to good use. In classes and collaborative research, students work with ÃÛÌÒapp faculty to discover more about God’s world, to publish scholarship, to create art and music. The office of the provost supports students and faculty in all these endeavors, providing leadership, resources, and accountability.

Interested in a career at ÃÛÌÒapp? View our open full-time and adjunct faculty positions, hiring philosophy, and faculty expectations on our Human Resources site.

View current faculty openings

The Provost's Office oversees many different efforts to engage the community, the church and the world. Nothing could be closer to the heart of the Reformed tradition and the mission of ÃÛÌÒapp.

Community Engaged Learning

Learn how ÃÛÌÒapp is collaborating with the community through our academic departments.

a person riding a bike on the sidewalk, sunshine coming in through the background

Research & Scholarship

Learn about ÃÛÌÒapp's robust research leadership in a wide variety of disciplines.

two stacks of books by various ÃÛÌÒapp professors

Grants & Foundation Relations

Find information and resources for faculty research, university-wide initiatives and departmental programs

A student doing research with a microscope. She is wearing a white lab coat.

Sustainability

Learn about ÃÛÌÒapp's efforts to promote sustainability at ÃÛÌÒapp and around Grand Rapids.

a potted plant in a greenhouse, the sun shining in the background