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§

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).
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]).
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_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() }).