Accessibility
aria-label or aria-labelledby. Sortable headers expose aria-sort. The loading state sets aria-busy and announces copy.loadingLabel.
Row actions are one button named by actionMenu.label(row). Selection and the toolbar count include rows that are not mounted when virtualizeRows is on. A press on the action button does not activate the row.
EmptyCell names a legitimately empty value. Empty, no-results, and error slots are not live regions; the table reads copy.noResultsMessage politely.