, 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); })(); ÃÛÌÒapp Theatre Company: Birthday Candles by Noah Haidle | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Events Calendar

ÃÛÌÒapp Theatre Company: Birthday Candles by Noah Haidle

S M T W T F S
26
 
27
 
28
 
29
 
30
 
31
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
1
 

ÃÛÌÒapp Theatre Company: Birthday Candles by Noah Haidle

  • Fri, Feb 07, 2025
  • 7:30 pm–9:30 pm
$9-19
Image
Birthday Candles ÃÛÌÒapp Theatre Company
Grand Rapids premiere of this Broadway hit, by a Grand Rapids-born playwright.

Birthday Candles by Noah Haidle
(dramedy)
Directed by Brad Cain, adjunct professor of theatre

In a kitchen in Grand Rapids, Michigan, we meet Ernestine on her 17th birthday agonizing over her insignificance in the universe. Soon, it’s her 18th birthday. Even sooner, her 41st. Her 70th. Her 101st. Five generations, an infinity of dreams, dozens of goldfish, and one cake baked over a century. Witness the highlights, heartbreaks, and extraordinary moments that make up one woman’s ordinary life.

Birthday Candles by Noah Haidle is presented through a special arrangement with Concord Theatricals.

The Gezon Auditorium is located in the Spoelhof University Center.