Skip to main content

Crate mobiler_core

Crate mobiler_core 

Source
Expand description

Mobiler runtime — the developer-facing API.

Implement MobilerApp with your typed events, model, and view (built from the builders). Mobiler wraps it in MobilerShell, a Crux app speaking the fixed UI ABI (mobiler_ui); you never touch the wire protocol. Device APIs are capabilities via Cx.

Structs§

ChartBracket
A right-side bracket annotation spanning [y0, y1] with a label note (e.g. a ceiling band).
ChartLegendItem
One legend entry (swatch + name) for a Widget::RegionChart.
ChartRefLine
A horizontal reference line across a Widget::RegionChart at value, with a right-edge label chip. dashed draws it dashed (e.g. a “max insured” ceiling) vs solid (a target).
ChartRegion
One rectangle in a Widget::RegionChart, spanning [x0, x1] horizontally and [y0, y1] vertically in the chart’s domain. label is centered inside (empty = none); vertical rotates it 90° for narrow columns. color overrides the auto-assigned palette slot.
ChartSeries
One named data series in a Widget::Chart. Cartesian styles plot values across the chart’s x-axis labels; circular styles (pie/donut/rings/gauge) collapse the series to a single magnitude (values summed). color overrides the auto-assigned palette slot; goal is the denominator for Rings/Gauge progress (ignored by the other styles).
ChartTick
An x-axis tick on a Widget::RegionChart at domain position at, labelled label. Ticks are irregular (the app places them), so shells position them by fraction, not even spacing.
Cx
Effects an app requests during update, generic over the app event type so continuations stay fully typed.
Fab
A floating action button anchored over the scaffold body (the raised primary action).
MobilerShell
Crux adapter: turns a MobilerApp into an app speaking the fixed ABI.
Nav
A navigation stack the app holds in its Model. The core owns the stack (single source of truth); the framework reads its route/depth to drive the shell’s push/pop transitions and back button.
PluginCall
PluginNotify
PluginResponse
Rgb
A 24-bit RGB color. Used for a theme’s brand/seed color — the one place an app supplies an arbitrary color (everything else is intent tokens).
Segment
One option in a Widget::Segmented control (mirrors Tab). selected marks the active segment; tapping sends on_select.
Sheet
A modal bottom sheet anchored over the scaffold body (a scrim behind, a panel rising from the bottom). Present (Some) ⇒ open; tapping the scrim/handle sends on_dismiss.
SwipeButton
One revealed action in a SwipeAction row (swipe to reveal, tap to fire).
Tab
A bottom-navigation tab. selected marks the active one; tapping sends on_select. icon (optional) renders above the label for an icon tab bar.
Theme
App branding as data — the visual twin of dark_mode. Set on a Widget::Scaffold (theme: None = the framework defaults, i.e. no visual change). The shell maps these to its native theming: seed → the brand/primary color (Android M3 scheme / iOS tint / web --primary), plus a global corner, spacing, and font choice.

Enums§

Action
What the shell sends back to the core. Fixed across all apps.
BoxAlign
ButtonStyle
CardStyle
ChartStyle
How a Chart draws its series.
Corner
Global corner-radius scale. Medium ≈ the current (un-themed) look.
Density
Global spacing scale. Comfortable ≈ the current (un-themed) spacing.
Effect
Built-in capabilities the generic shell fulfils.
EffectFfi
FontFamily
A finite, cross-platform font family (maps to each platform’s nearest system font design — no bundled font files). System ≈ the current look.
Icon
A finite icon set (maps to Material icons / SF Symbols / web glyphs per shell). Grouped: editing, navigation/chrome, content, and domain icons.
ImageRatio
ImageShape
InputValue
A value produced by an input widget at runtime.
ProjectColor
Project-identity colors (distinct from semantic Tone). Concrete RGB decided in the render layer.
Spacing
TextStyle
Tone
Semantic status color (distinct from brand/identity color).
Widget
The app-agnostic widget tree the shell renders. Fixed across all apps.

Traits§

MobilerApp
What a Mobiler app implements. Write typed domain events; Mobiler serializes them into opaque tokens behind the scenes.

Functions§

avatar
A circular avatar image.
avatar_status
A circular avatar image with a colored status dot.
badge
bar_chart
A bar chart of values (normalized to the max), with optional per-value labels. Single-series, no axis or legend — for richer charts use chart.
button
calendar
An inline month calendar for year/month (1–12). on_day(d) builds the tap event for each day d in the month; selected highlights a day. Leading blanks + weekday header are handled by the shells from the computed first_weekday.
caption
card
card_button
A tappable card carrying a typed press event.
chart
A multi-series chart in the given style, with optional x-axis labels, y-axis gridlines/ ticks (cartesian styles), and a series legend. The general builder behind the convenience constructors below.
checkbox
chip
color_dot
A small colored identity dot.
column
divider
donut_chart
A donut chart (pie with a center hole). Legend on.
emphasis
gauge_chart
A single radial gauge — the first series’ value / goal with the number in the center.
grid
icon_button
image
line_chart
A line chart of values (normalized to the max), with optional per-value labels. Single-series, no axis or legend — for richer charts use chart.
nav_scaffold
Scaffold driven by a Nav stack: fills route (from the current route’s serialization) and depth (stack depth) so the shell animates transitions, and shows a back affordance (top-bar arrow + system back button) firing on_back whenever the stack can pop.
pct_stacked_bar_chart
Bars where each x-slot fills to 100% — series as proportions. Legend on, no value axis.
pie_chart
A pie chart — each series is one wedge sized by its magnitude. Legend on.
progress
A progress bar (Some(0.0..=1.0)) or an indeterminate spinner (None).
rating
A read-only star rating. value is in tenths (e.g. 48 = 4.8 of max stars).
rating_input
A tappable star rating — on_rate carries one event per star (star i fires on_rate[i]).
region_chart
A variable-width stacked-region (“coverage-gap” / Marimekko) chart. regions are rectangles in the [0, x_max] × [0, y_max] plane (build with ChartRegion::new); ticks label the irregular x-axis; ref_lines are horizontal target/max lines (ChartRefLine::target/::max); legend names the colors. Add a right-side bracket annotation with with_bracket.
rings_chart
Concentric progress rings — one per series, swept by sum(values) / goal. Legend on. Give each series a goal via ChartSeries::with_goal.
row
scaffold
App shell: top bar + bottom-nav tabs + scrollable body. dark_mode is theme-as-data (the shell themes the whole app from it).
scaffold_back
Like scaffold, but the top bar (and the system back button) navigate back via back — e.g. a detail screen pushed over a tab (treated as depth 2). For multi-level stacks, drive navigation with Nav + nav_scaffold.
scroller
Horizontally scrolling row of children (a carousel / chip rail).
search_field
A search input (leading magnifier, pill); emits Input { id, Text } like text_field.
segment
One option in a segmented control, carrying a typed selection event.
segmented
A single-choice segmented control (exclusive options in a pill).
skeleton
A shimmer placeholder shown while content loads.
slider
spacer
stack
Z-stack/overlay (the Box widget). With scrim, the first child is a darkened background and the rest render on top.
stacked_bar_chart
Bars stacked to a total per x-slot. Axis + legend on by default.
stepper
styled
subtitle
swipe_action
A list row that reveals trailing actions (label, tone, event) on horizontal swipe; each is tappable. On web the actions render inline (no gesture).
tab
A bottom-nav tab carrying a typed selection event (label-only).
tab_icon
A bottom-nav tab with a leading icon (icon tab bar).
text
text_field
title
toggle
with_bracket
Attach a right-side bracket annotation to a region_chart (no-op on any other widget).
with_fab
Anchor a floating action button over a scaffold’s body (the raised primary action). No-op on any other widget: with_fab(scaffold(...), Icon::Add, Msg::New).
with_refresh
Enable pull-to-refresh on a scaffold’s body: the body becomes pull-refreshable and fires on_refresh on pull. refreshing is app-owned — set it true when the pull fires and clear it when the async reload completes (the shell shows a spinner while true). No-op on other widgets.
with_sheet
Open a modal bottom sheet over a scaffold’s body. No-op on any other widget — drive it from the model: with_sheet(scaffold(...), title, sheet_body, Msg::CloseSheet).
with_theme
Apply a Theme to a scaffold (brand color, corner, density, font). No-op on any other widget. Lets an app brand its UI without new scaffold builder overloads: with_theme(nav_scaffold(...), Theme { seed, ..Default::default() }).