Guide / Accessibility and localization

Make meaning, focus and language part of the tree.

Accessibility is not a post-processing step. LumaFlow keeps semantics, focus and typed locale resources as explicit tree-scoped concerns.

Label application-specific meaning.

Built-in controls expose roles and state. Wrap visual-only or domain-specific content in Semantics when it needs a label, hint or action.

ProjectCard.cs
new Semantics(
  new Card(BuildProjectSummary(project)),
  label: $"Open {project.Name}",
  role: SemanticsRole.Button);

Preserve native keyboard behavior.

Use built-in controls and focus traversal groups rather than recreating keyboard interaction in callbacks. Dialogs request and restore focus through their modal options.

Keep strings owned by the application.

Place typed application resources under Localizations. LumaFlow does not impose a loading package or table format, so your localization boundary can match the product.

Respect user preferences.

Provide MediaQueryData.DisableAnimations when the platform or application requires reduced motion. Use the inherited text scaler instead of fixed assumptions about readable type.

Accessibility is part of acceptance criteria.

Check keyboard navigation, focus visibility, semantic labels, text scaling and reduced motion alongside ordinary interaction tests.

Return to the guides →