Accessibility notes
silva-ui uses semantic native controls where practical and exposes ARIA attributes on several components. Your application still owns the behaviour that needs runtime state.Built into components
LabelacceptshtmlFor; form controls acceptid.Progressrenders a progressbar role and acceptsaria-label.SpinnerandLoaderrender withrole="status".DialogContentrendersrole="dialog"andaria-modal="true".TabListacceptsaria-label; tabs and panels expose linking props such asaria-controlsandaria-labelledby.Anchorhas visible focus styling and a disabled state.
Your application must provide
- Controlled state and event handlers for toggles, tabs, accordion sections and overlays.
- Keyboard navigation patterns for tabs, menus and composite widgets.
- Focus movement, focus trapping and focus restoration for dialogs and sheets.
- A portal and stacking strategy for overlays.
- Clear accessible names for controls that do not have visible text.
- Colour contrast validation for custom themes and custom class overrides.
Practical checklist
- Connect every visible label to its input using
htmlForandid. - Use a semantic heading hierarchy.
- Keep native buttons as buttons and provide a
typeinside forms. - Make focus handling explicit when an overlay opens or closes.
- Test keyboard-only navigation and a screen reader before shipping.
The library intentionally stays stateless. This keeps it lean for Hono JSX, but interactive accessibility belongs in the application layer.