The panel's root.
Optionallabel: string
Replaces the panel's text (for a panel rendered with a string or absent label). Set directly rather than through a render, which could not land before blocking work.
A promise that settles once the fade is committed, or null when there is nothing to wait
for — no element, or already armed (a second concurrent operation rides the first).
Arm a driven (AnimatedLoadingPanelProps.autoStart
false) panel's fade-in, resolving once the browser has COMMITTED it. Only then may the caller seize the main thread: a class change reaches the compositor through a rendering frame, and a blocked thread never yields one, so arm-and-go would animate nothing for exactly the work worth announcing.Whether anything is ever SEEN is the panel's
transition-delay(1.2s by default), which is CSS rather than a timer for the same reason — asetTimeoutcannot fire while the thread is blocked, so a JS-scheduled reveal would appear for every operation EXCEPT the long ones. Work that finishes inside the delay disarms before a pixel changes.