Accessibility guarantees, responsibilities, and verification notes for EnterUI.
EnterUI components are built on semantic HTML and focused behavior primitives where complex interaction needs them. The React package owns the public React API, class names, CSS variables, and wrapper semantics. Radix owns low-level React mechanics such as focus trapping, roving focus, menu navigation, typeahead, portal layering, and slider interaction.
The SolidJS renderer currently covers stateless and presentational primitives. Complex interactions should be ported with SolidJS-native behavior primitives before they become part of the SolidJS public API.
aria-label for icon-only actions,
inputs without adjacent labels, search controls, pagination controls, and
menu triggers.DialogTitle and DialogDescription inside
dialogs unless the dialog is intentionally labelled by another element.FormField, Label,
FieldDescription, and FieldError for form controls
that need labels, help text, or error text.aria-disabled only for custom interactive patterns that must
remain focusable.asChild. The child
should be a focusable element such as button or
a.button and defaults to
type="button".invalid and pass through ARIA
attributes.The component package includes SSR and jsdom interaction tests for roles, ARIA state, labels, disabled behavior, open/close behavior, selected state, and portal-rendered primitives.
pnpm --filter @froggdesign/enter-ui-react test
pnpm --filter @froggdesign/enter-ui-react typecheck
pnpm --filter @froggdesign/enter-ui-solid test
pnpm --filter @froggdesign/enter-ui-solid typecheckRun product-level keyboard and screen reader checks for critical app flows, especially after composing components with custom children.