#widgets #charts #action #layout #tree #abi #text-style #scaffold #native-shell #mobiler

mobiler-ui

Mobiler's fixed UI wire ABI — app-agnostic Widget tree + Action protocol

20 breaking releases

Uses new Rust 2024

0.23.0 Jun 9, 2026
0.21.0 Jun 9, 2026

#80 in Accessibility

38 downloads per month
Used in 2 crates

MIT/Apache

39KB
455 lines

mobiler-ui

Mobiler's fixed UI wire ABI.

The stable contract between a Mobiler app's Rust core and its native shell:

  • an app-agnostic Widget tree (the ViewModel the core emits),
  • an Action protocol (events the shell sends back),
  • InputValue and style-token enums (TextStyle, Tone, Spacing, …).

Because these types never change per app, a single native shell is built once and renders any Mobiler app — it only ever knows these types, never an app's domain events or widgets.

The Widget vocabulary covers layout (rows/columns/grids/cards/scrollers, paged lazy lists), inputs (text fields, toggles, segmented, search, rating), navigation (scaffold + tabs + FAB + sheets, and a two-pane master-detail split), media (images, avatars, a controllable video player, an embedded web view, an in-app PDF viewer, and an interactive map), gestures (tappable cards with tap + long-press, swipe actions), feedback (progress, skeleton), an inline calendar, data-viz chartsChart in eight styles (bar, line, stacked, 100%-stacked, pie, donut, fitness-style progress rings, and a radial gauge) plus a variable-width stacked-region / coverage-gap RegionChart — and an accessibility wrapper (a screen-reader label / hint / role on any widget).

You usually don't depend on this crate directly. Use mobiler-core, which re-exports it and provides the MobilerApp trait plus the typed widget builders.

License

Dual-licensed under either MIT or Apache-2.0, at your option.

Dependencies

~5MB
~99K SLoC