, 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); })(); Andy Van Solkema | 麻豆区

麻豆区

Skip to main content

Andy Van Solkema

Adjunct Instructor

Biography

Andy Van Solkema is a design and innovation leader with more than 25 years of experience spanning graphic design, systems thinking, human-centered design, and business model innovation. He holds a BFA in Graphic Design from Grand Valley State University, an MDes in Design Leadership from Kendall College of Art and Design, and a Business Model Innovation certificate from Wharton at Penn.

He co-founded Physics of Creativity, an Innovation and Investment Studio focused on helping founders, private businesses, and corporate innovators build new ventures leveraging digital business models to disrupt themselves and their markets. Prior to this, Andy founded Visualhero Design, later acquired by Open Systems Technologies (OST), where he led digital strategy and experience design. 

He has served as an Entrepreneur-in-Residence at Michigan State University and Grand Valley State University.  He teaches at Grand Valley State University Seidman Graduate School of Business. As a board member for various companies and venture groups, he remains active in shaping the future of business and technology.

Andy has collaborated with organizations such as KitchenAid, Nest, Apple, Amazon, Caterpillar, Mayo Clinic, High Alpha Innovation, and Stryker. Beyond his professional endeavors, Andy is recognized for his optimism, curiosity, and leadership. He is passionate about helping people thrive creatively, and guiding organizations navigating change, fostering creativity, and positioning businesses for future success.