, 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); })(); Calvin Startup Garage Students Shine at MWest Challenge Competition - News & Stories | 麻豆区

麻豆区

Skip to main content

Calvin News

Calvin Startup Garage Students Shine at MWest Challenge Competition

Thu, Apr 17, 2025

Calvin Startup Garage entrepreneurs took home several wins at the recent MWest Challenge.聽The annual pitch event is a student entrepreneurship competition designed to create collaboration between faculty and students that spans several colleges and universities from West Michigan. Entrepreneurially-minded students work individually or in teams, develop new business concepts, and pitch their ideas to the community and a panel of judges.

Naomi Ross brought home second place for her business, Quilt Thrift, in the Innovation Showcase. Quilt Thrift is a consulting and tech solutions company for volunteer-powered thrift stores. The Quilt Thrift app streamlines training, improves efficiency, and enhances pricing decisions to help thrift stores maximize their nonprofit contributions.

Jack Nielson also brought home second place for his boat rental company in the Innovation Showcase.聽Borrow My Boat connects boat owners with lakeside vacationers to rent a boat for a week of vacation.

Ephraim Dykstra presented Dykstra Design & Printing, a customized 3-D printing service, in the Showcase.聽 Nick Leclair presented Jugum, a microfunding platform for investments, in the Showcase.

Macy Gerig, Zoe Poe, Sven Grimbergen, and Haley Holcomb participated in the final pitch competition with their startup, Performance Through Prehab, an athletic and physical therapy educational program geared toward high school student athletes.

鈥淐alvin student entrepreneurs continue to lead with purpose, passion and bold ideas,鈥 said Zach Booker, Director of the Calvin Startup Garage. 鈥淭heir creativity and dedication to the entrepreneurial journey is an inspiration to the entire startup community.鈥

Learn more about Calvin Startup Garage and its portfolio of startups.聽