, 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); })(); Matthew D. Lundberg | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Dr. Matthew D. Lundberg

Director, de Vries Institute for Global Faculty Development; Professor of Religion

Biography

Matt Lundberg is director of the and professor of Religion at ÃÛÌÒapp. In his de Vries Institute role, he administers ÃÛÌÒapp’s Faith & Learning Fellowship program for newer faculty members, directs the de Vries Postdoctoral Teaching Fellows program, and works with David I. Smith on an online faculty development platform entitled . He has taught a range of courses at ÃÛÌÒapp in systematic theology, history of doctrine, and Christian ethics. He is currently one of the representatives of the Christian Reformed Church in the 9th round of U.S. Reformed-Roman Catholic ecumenical dialogue. Lundberg is author of Christian Martyrdom and Christian Violence (Oxford University Press, 2021) and co-author of An Introduction to Christian Theology (Cambridge University Press, 2nd edition, 2022).

Education

  • ÃÛÌÒapp College, BA
  • ÃÛÌÒapp Theological Seminary, MTS
  • Princeton Theological Seminary, PhD (2005)

Courses

  • Christian Theology ()
  • Theological Ethics ()

Academic Interests

  • systematic theology
  • faculty development
  • theology and martyrology
  • repentance and reconciliation