, 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); })(); Sharon Nieuwenhuis | Â鶹Çø

Â鶹Çø

Skip to main content

Sharon Nieuwenhuis

Director of the Master of Arts in Media and Strategic Communication

Biography

Communications executive and educator committed to the development of a passionate, talented, purpose-driven workforce. Since 2000 I’ve been working in pr agencies, large corporates, and an international start up. In addition to my role at Calvin I serve as consultant / volunteer for travel and non-profit clientele. I’m excited to help Calvin’s MMSC students gain a competitive edge in the workforce.  

Education

BA in English, Journalism Minor – Â鶹Çø, 1997  

Master of Arts in Corporate & Public Communications – Seton Hall University, 2005 

Events & Appearances

Apr 02, 2025
Communication Best Practices: AI

Devos Bytwerk Video Theater 015 | 6:30pm-8:30pm

Learn how AI is transforming the communication profession. Hear best practices from pros that are leveraging AI successfully.

Image
Communication Best Practices: AI event poster, with images of the four panelists.

Professional Experience

Independent Marketing & Public Relations Consultant - SN Public Relations  

Senior Vice President -Red Havas 

Vice President, Lifestyle - Rubenstein Public Relations  

Vice President, Travel & Lifestyle - EVINS Communications  

Vice President / Public Relations Division Director - Development Counsellors International  

Director, Communications - The Vines of Mendoza + The Vines Resort & Spa  

Academic Interests

  • Advertising  
  • Content Strategy  
  • Ethics  
  • Digital Marketing  
  • Marketing  
  • Copywriting  
  • Editing  
  • Email Marketing 
  • Project Management  
  • Public Relations