, 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); })(); Service-Learning Center | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Service-Learning Center

Mission

The mission of the Service-Learning Center (S-LC) is to equip students, staff, and faculty to learn reflectively, serve lovingly, and engage wholeheartedly with our neighbors in the pursuit of justice, vibrancy, and shalom in Grand Rapids and the world.Ìý

Ride the Rapid for $0.50! WAVE cards are $5 each and come with $2 preloaded. Fill out the form to request a card.

Ìý

Get involved

Students

Learn how service-learning integrates academic knowledge with critical thinking to celebrate community assets and address genuine community needs.

Current Service-Learning opportunities

Check out this database to get involved in the Grand Rapids community. This list is updated weekly during the academic year.

Use this form to record your service-learning hours.

Ìý

Community Partners

The Service-Learning Center helps connect ÃÛÌÒapp students with local organizations to assist in serving community needs while enhancing the learning experience of students.

Post an opportunity

Opportunities to serve and learn with your organization can appear in our database of opportunities.