fix: Radix Dialog for create modal, ARIA tablist for side panel, aria-live for loading states (audit 11)
- CreateWorkspaceDialog: replace plain div modal with @radix-ui/react-dialog (focus-trap,
Escape-to-close, aria-labelledby auto-wired); tier selector uses role=radiogroup/radio +
aria-checked; error uses role=alert; required fields annotate with sr-only "(required)"
- SidePanel: WAI-ARIA tablist pattern — role=tablist + aria-label, role=tab + aria-selected +
aria-controls + id, roving tabIndex (0/−1), ArrowRight/Left/Home/End keyboard nav with wrap,
role=tabpanel + id + aria-labelledby on content area, tab icons are aria-hidden
- TemplatePalette: loading and empty-state divs gain role=status + aria-live=polite
- Canvas: sr-only role=status live region announces workspace count to screen readers
- Tests: 7 new a11y tests for CreateWorkspaceDialog (Radix role=dialog, aria-labelledby,
data-state, Cancel close, role=alert validation, role=radio tier); 12 new tab tests for
SidePanel (tablist, 12 tabs, aria-selected, roving tabIndex, aria-controls, tabpanel,
ArrowRight/Left/Home/End)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>