Empty is a plain <div> with up to three children: an image wrapper, a description and a footer. There is no role, no landmark, no live region and no focus management. Anything else you pass is spread onto the root, so an aria-live or a role you add lands where you expect it.
- The illustration is not hidden. Both presets are inline SVG and both carry a <title> element holding the locale's own description string (“No data” in English), which gives the drawing an accessible name. Beside a description that says the same thing, a screen reader reads the message twice.
- A string image becomes an <img>. Its alt is the description when that is a string, and the word empty when it is a node or false. A rich description therefore leaves an alt of “empty”, the one case worth checking.
- A node image is passed straight through. Nothing is added to it: an <Icon> or an SVG of your own keeps whatever semantics it arrived with, so decorative ones need their own aria-hidden.
- description={false} removes the element. The whole message is then whatever the illustration's <title> happens to say, which is the untranslated default unless the locale was changed.