Skip to main content

Module widget

Module widget 

Modules§

acknowledgement
A passing acknowledgement: “Link copied”, said once in a small pill near the bottom of the surface, then gone.
activity_timeline
ActivityTimeline — the history pane, grouped.
autocomplete
Autocomplete — a text field with a suggestion list that floats below it — and SuggestionList, the floating list itself, which a code editor’s caret completion shares.
avatar
Avatar: a person’s (or an account’s) picture, or their initials when no picture exists.
badge
Badge widget — the non-interactive member of the chip family: a small pill typically anchored over another element (avatar, icon, row). Three contents:
banner
Banner — an inline, semantic alert strip. Unlike a super::toast::Toast (transient, auto-expiring) a banner is a persistent in-flow message the person resolves or dismisses: “You’re offline — changes will sync when you reconnect”, “This file has unsaved changes”, “You’re in a private window”.
binding
Where a control’s value lives.
block_editor
BlockEditor: a stack of RichTextLine-backed blocks (paragraph, heading, lists, code, divider) with split-on-Enter, merge-on-Backspace, arrow-key navigation, and markdown-shortcut promotion (# -> H1, etc).
breadcrumb
Breadcrumb widget — a horizontal path indicator with clickable ancestor segments and a chevron icon between them.
candlestick_chart
Interactive OHLC/candlestick charts with an optional volume panel.
canvas_navigation_hint
Shared, modality-aware help overlay for pan/orbit + zoom canvases.
capability
Capabilities: behaviour a widget takes part in beyond pixels and input.
capture_button
The capture button over a camera’s picture: the shutter.
capture_studio
Reusable shell-grade screenshot, recording and arbitrary-region PiP selector. Pixel readback stays in the compositor; this widget emits semantic intents.
card
Card and CardGrid: objects in content.
cartesian_plot
Highly configurable interactive Cartesian plots.
category_chart
Category-aware grouped, stacked, normalized and waterfall charts.
chart
Time-series charts — Chart (a full line/area plot with grid lines, axis ticks and a legend) and Sparkline (a compact, chromeless variant for inline trend cells).
chart_navigation
Shared layout, pointer, touch and keyboard semantics for chart widgets.
chip
Chips and badges: one family of pill-shaped marks.
chord_chart
Interactive weighted chord diagram.
code_editor
The shared multi-line code-editing widget: a retained Widget that puts real code editing — caret, selection (shift/drag, word-wise), clipboard, undo/redo, IME, and a multiline a11y node — on the same TextInput core every other text field uses. On top of that it adds a gutter with line numbers and a current-line highlight, syntax highlighting through a pluggable Highlighter (the widget owns rendering/caret/selection, the app owns the language tokenizer, and every colour comes from the OS Theme), and soft-tab / indent handling.
color_picker
Event-driven: each press latches a DragTarget so a drag continues to track the cursor even after it leaves the widget rect (see wants_pointer_capture). All visuals pull colours from theme tokens — no literal palette values live in this file.
color_swatch
Colour swatches: one named swatch type, one painter, one picker.
command_palette
CommandPalette primitive — a searchable command list that narrows as you type.
context_menu
ContextMenu primitive — a right-click / long-press invoked list of actions with optional separators. Standalone owners draw it in their overlay pass. open_anchored opts into measured, viewport-bounded geometry; legacy open_at callers retain their point placement and fixed rows.
context_menu_area
A context menu over any element: right-click it, or press the Menu key or Shift+F10 while focus is inside it, and the shared ContextMenu opens with the commands its owner offers there and then.
controls
Action-bound controls: the capability a widget provides when it owns an ActionEmitter (a button, a checkbox, a custom painted control), and the walks the host uses to reach every control in a retained tree.
data_table
DataTable primitive — sortable, resizable, virtualized tabular view.
date_indexed_scrollbar
A chronological index for large, virtualised collections.
date_picker
DatePicker widget — month-grid calendar picker.
decorator
Extending a widget without re-implementing it: the Decorator trait.
display_arrangement
Logical screen topology canvas shared by local and native peer displays. Drag-to-arrange canvas for the Displays pane.
distribution_chart
Box and violin plots calculated directly from raw samples.
document_effects
Optional outside consequences of an actually applied document action.
drag
Reusable drag-to-reorder interaction model — the single source of truth for live-reflow list reordering (weather’s saved cities today; notes, playlists, contacts next).
drop_zone
DropZone: where files can be dropped (an import target, an image to flash, a book to add).
empty_state
EmptyState — the centered “there’s nothing here yet” placeholder that almost every list-shaped app hand-rolls (Inbox with no mail, a feed with no articles, a contacts book with no contacts, …). Before this widget the pattern was copy-pasted as a Column of a big icon + a heading Text + a dim subtitle + an optional call-to-action Button across the fleet.
file_picker
File-picker dialog widget — used by the FileChooser xdg-portal backend and any “open / save file from app menu” flow. Self-contained: it draws and hit-tests itself, and the host just positions it as a modal overlay and drains FilePicker::take_outcome.
find_bar
Find in a document: the FindBar and the Findable capability.
floating_surface
The one body of every floating Panel: popovers, menus, modal sheets and toasts.
function_plane
FunctionPlane — the world ↔ screen mapping and grid of a pannable, zoomable function plot (a grapher’s y = f(x) canvas).
funnel_chart
Interactive funnel and pyramid charts.
gauge
Gauges: ProgressRing (a countdown or progress ring with a centred readout) and BarGauge (a labelled horizontal bar).
heatmap
Interactive matrix heatmaps with labelled axes and theme-aware ramps.
histogram
Histogram construction from raw samples.
history
History data types shared by activity_timeline and history_scrubber.
history_group
Turning a flood of individual changes into a small number of things a person can name, collapse and restore to. History surfaces show groups, expanding to individual changes on demand.
icon
IconWidget — a leaf that paints one themed vector glyph from the shared crate::icons::Icon set, at one of the theme’s three icon sizes (IconSize).
image_viewer
Interactive image viewer with pan + zoom semantics, unlike the static crate::widget::Image widget: scroll-wheel zoom, click-drag pan, and a deterministic “fit to viewport” reset. Interaction state (zoom, pan, drag origin) lives on the widget directly; CRDT reflection is out of scope.
input_hint
Compact, shared key/controller/gesture legends.
keyboard_map
A physical keyboard map. Geometry and XKB legends are provided by the device’s native compiler; focused pressed keys are private paint state.
link_popover
LinkPopover — search popover for [[Page Title]] inline page links: a FilterMenu over caller-provided pages, matched by title.
list_row
ListRow: one row of a content list (a message, a contact, a request, a file, a device), as a retained widget and as the ListRowFace immediate painter with identical geometry.
marks
Inline marks model used by RichTextLine.
media_card
MediaCard and MediaGrid: albums, videos, books, photos, apps.
modal_dialog
The one modal: a sheet over a scrim that covers the whole window.
modal_prompt
Shared content body for a text-entry ModalDialog.
name_field
A one-line, in-place text field for naming something.
native_view
Retained host for a platform/native child view.
page_preview
Compact, theme-aware page preview for print queues, scan flows, file inspectors, and document pickers. It communicates page shape and progress without pretending to rasterize content that is not available.
page_sidebar
PageSidebar — a shared, reorderable page/slide preview rail: the PDF reader’s page rail and the presentation editor’s slide rail both drive this one widget. It owns the list geometry, scroll, drag-to-reorder (via DragController), a right-click menu, and an optional “add” affordance, emitting PageSidebarEvents the host applies to its model.
paint_damage
Damage certified by the actual retained draw, rather than consumed edit flags.
panic_scope
Which window’s application code is running, for a panic hook to name.
permission_prompt
Inline permission prompt — the bar that pops in at the top of the active strip when a sandboxed app requests a capability.
pie_chart
Interactive pie and donut charts.
polar_area_chart
Interactive polar-area (rose / radial bar) chart.
popover
Popover: the one anchored floating Panel.
progress_bar
ProgressBar — determinate / indeterminate horizontal progress indicator.
property_list
PropertyList: labelled values (a contact’s details, a file’s metadata, a certificate’s fields), as a retained widget and as the PropertyListFace immediate painter with identical geometry.
qr
QR-code widget.
radar_chart
Interactive radar/spider charts with independently scaled axes.
range_chart
Interactive timeline, Gantt, and numeric range bars.
resizable_split
ResizableSplit — a two-pane container with a draggable divider — and the divider itself, SplitHandle, for hosts that paint their panes.
resource_actions
Toolkit-owned host for a small app’s typed resource/action surface.
rich_text_line
A single editable line of text wrapping a local-mode TextInput, the leaf cell of a block editor. The inner TextInput handles cursor placement, selection, IME, copy/paste; RichTextLine adds:
sankey
Automatic-layout interactive Sankey flow diagrams.
screenshot_markup
Exact-pixel screenshot annotation surface shared by applications and shell.
scrollbar
Shared scrollbar interaction model — the single source of truth for thumb geometry, thumb dragging, and track paging used by every scroll-capable widget in the toolkit (Scrollable, DataTable, DocumentViewport).
search_field
SearchField — the in-content filter: a field with a leading magnifier, an editable TextInput, a trailing clear button and a reserved slot for the match count.
search_results
SearchResultsView — the shared results overlay for Tilo global search.
selection_handles
Selection handles for a canvas: the frame around what is selected, its resize handles at the corners and (once the frame is big enough on screen, or always with SelectionHandles::with_edges) at the middle of each edge, and its rotation handle above (unless SelectionHandles::without_rotation: a crop, a text box, a clip), drawn in your colour and hit-tested at a constant size on screen whatever the zoom.
shortcut_recorder
A compact, visual keyboard-shortcut editor.
skeleton
Skeleton: the shape of content that is still loading.
slash_menu
SlashMenu — block-type conversion popover triggered by / inside a BlockEditor block: a FilterMenu over every block kind the editor supports. Filtering matches keywords as well as labels, so /h2 finds “Heading 2”.
spinner
Spinner — a circular indeterminate-progress indicator.
stat_tile
StatTile: one number and what it measures, on the content ground.
stepper
Stepper: where a person is in a short sequence of steps (a setup wizard, writing an image, an import).
sunburst
Interactive hierarchical sunburst charts.
table
tabs
time_picker
TimePicker — three side-by-side vertical spinners for HH : MM : SS.
timeline_density
How much a time grid (a calendar’s week, a schedule) shows of each item, decided from the width of one day column and the theme’s type, so every app that lays out days in columns follows one rule.
toast
Toast + ToastStack primitive — transient notifications anchored top-right of the shell, sinking fallible OS operations (trash/rename/move/copy), ShellError conversions, and confirmations.
toggle_group
ToggleGroup — the segmented control. A strip of segments of which one is chosen (or, before the person has chosen, none). Clicking a segment chooses it and fires the on_change callback with the new index.
toolbar
The toolbar: a measured strip of commands with a shared ContextMenu for overflow, so every command stays reachable however narrow the window. The extent cache is the sole source for intrinsic sizing, fitting and placement.
tooltip
Tooltip primitive — a small label revealed after a short hover delay.
transport
TransportFace: the previous, play/pause and next controls of a media player, for a painted host that owns its hit-testing (a music bar, a video’s controls).
tree_view
TreeView — hierarchical list. One row per visible node, indented by depth; branch nodes carry an expand/collapse glyph. Selection and focus are tracked separately so arrow-key navigation can move the focus ring without committing a selection until the user explicitly chooses.
treemap
Interactive balanced treemaps for hierarchical-area data.
undo_button
The toolkit’s Undo / Redo control.
video_player
VideoPlayer — a reusable video surface with a full playback-controls overlay.
virtual_list
Sparse, variable-height list with retained row delegates.
webview
WebView — a leaf widget that displays the live output of a crate::webview::WebViewEngine and forwards pointer, scroll and keyboard input into it.
window_header
The window’s header row, as a capability: the one place window-level controls stand.

Structs§

Absent
A placeholder that takes no room: no layout box, no gap, no paint.
ActionDirectoryResourcePage
One bounded page from a widget-owned remote root catalogue. next_cursor is meaningful only while exhausted is false and is never interpreted by a different widget or document revision.
ActionEmitter
A reusable action-intent queue for controls, including custom widgets. Widgets call emit from any interaction path. Mounted shared controls install independent host custody; custom producers should use new_in with their actual owner domain. The private take path remains only as explicitly unqualified migration compatibility.
Actions
Standard actions in declaration/focus order: secondaries, then primary. Unspecified buttons use measured content sizing; explicit sizes remain manual. Each wrapped line aligns to the trailing edge.
ActivityTimeline
Scrolling, filterable, groupable activity pane. See module-level docs.
AppCommand
A command palette entry contributed by an app. Invoked with a mutable CRDT handle and the app’s root ObjId so the command can mutate state directly (matching quick-ui’s direct-mutation event model).
AuthoredExtent
A breakpoint or pane width authored at 1× for a painted app’s crate::widget::SidebarDrawer, resolved against the theme once when the tree is built. NavShell reads its widths from the metrics and applies the same rule to them.
Autocomplete
Avatar
A person’s avatar as a retained widget. See the module docs.
AvatarFace
Immediate-mode avatar: the same picture, initials, colour and shape as Avatar, painted into a rect the caller laid out.
AxisTick
Badge
BadgeFace
An immediate-mode badge for hosts that own their row geometry (shell overlays, painted lists): the Badge look without a layout node.
Banner
An inline semantic alert with a title, an optional message, up to two actions and an optional dismiss control.
BannerContent
What an immediate-mode Banner::paint shows: severity, leading icon, title, optional message, up to two actions and whether it offers a dismiss control.
BannerHit
Where Banner::paint put the banner and its controls, for the caller’s hit-testing.
BannerNotice
What a state-bound banner shows (Banner::from_state).
BarFade
The idle fade of an overlay scroll bar: fully visible for a moment after scrolling, then fading out, unless something holds it (the pointer near the bar, a drag, keyboard focus, reduced motion, an always-visible bar). One timer for Scrollable and painted super::ScrollRegions, so every bar in the system appears and fades alike.
BarGauge
Labelled horizontal bar gauge — a rounded track with a left-anchored fill, a top-left label and a right-aligned value readout.
Block
BlockContent
What one block shows, as the owning model says.
BlockEditor
Breadcrumb
segment_rects and visible_origin mirror the truncated cached_visible list (not the original segments) so the click hit-test matches what’s on screen.
Button
ButtonFace
An immediate-mode button: the Button look for a canvas host that owns its own hit-testing. Built fluently: ButtonFace::new(rect, "Save").role(ButtonRole::Primary).hovered(hit).
ButtonInteract
The retained Button tracks these itself; an immediate-mode caller (a canvas app that owns its own hit-testing) passes what it knows — usually just hovered.
Candle
CandlestickChart
CandlestickStyle
CanvasNavigationHint
A quiet bottom-centred overlay that teaches canvas navigation without stealing focus or pointer input.
CaptureButtonFace
Immediate-mode capture button.
CaptureIntent
CapturePreview
CaptureStudio
CaptureTarget
A live shell/app surface that can be selected without first moving it fully onto the physical display. virtual_rect is its place in Tilo’s continuous desktop; visible_rect is the portion currently paintable on this output.
Card
A retained card. See the module docs.
CardFace
Immediate-mode card: the surface, leading stripe, title and focus ring of a Card, for a caller that paints its own body into CardFace::body_rect.
CardGrid
Reflows its cards into equal, aligned columns by width. Each row is as tall as its tallest card; cards share the row’s height so their footers line up, and a row of short cards stays short.
CartesianAnimationStyle
CartesianAnnotation
Presentation for an analytical annotation. Annotations deliberately use data coordinates, so they remain correct through resize, zoom, and pan.
CartesianBrushSelection
CartesianGesturePolicy
CartesianPlot
CartesianRenderingStyle
CartesianStyle
CartesianTooltipStyle
Category
CategoryChart
CategoryChartStyle
CategorySeries
CategoryValue
Chart
Full time-series line/area chart with grid, axis ticks and a legend.
ChartItem
One valued item: a funnel stage, a polar wedge, a treemap tile.
ChartLabels
The text a Chart paints around its plot. Any of them may be empty.
ChartLink
A weighted link from one ChartNode to another, by node id.
ChartNode
A node of a flow or relationship graph (sankey, chord).
ChartStyle
Grid, header and series styling for a Chart.
ChartTouchTracker
Tracks one finger and distinguishes a tap from a scroll/drag. Charts may inspect continuously while only activating on a stationary release.
Checkbox
CheckboxFace
Stateless checkbox presentation for hand-laid-out canvases.
CheckboxInteract
Interaction state for an immediate-mode checkbox face. Canvas apps keep their own hit-testing while sharing the retained checkbox’s visual states.
ChildMeasurement
Allocated size and overflowing content are separate measurements.
Chip
ChipColors
The resolved colours of one pill.
ChipFace
An immediate-mode chip for a canvas that lays out its own rows (a rail, a curve, a toolbar): the Chip widget’s look with no layout node.
ChordChart
ChordStyle
CodeEditor
Wraps the multiline TextInput core and enables its gutter + syntax-highlight path, so all caret/selection/clipboard/undo/IME/a11y behaviour is the one shared implementation.
ColorPicker
ColorSwatch
One colour a person can pick.
ColorSwatchFace
An immediate-mode swatch: paint, hit-test, tooltip and accessibility from one declaration.
ColorSwatchPicker
A grid of ColorSwatches as a widget.
Column
Columns
See the module docs.
Composed
A widget’s composition: the element tree it rebuilds at every layout and lays out as the only child of its own node, plus the box it was given and whether the owner asked for a rebuild. The owning widget forwards its tree methods here.
Container
Each bool below is an independent builder toggle (background, height fill, padding, grow behaviour) set at construction time, not a state machine with meaningful combinations to enumerate — a bitflags/enum refactor would ripple across every one of Container’s call sites in the crate for no behavioural gain.
ContextMenu
ContextMenuArea
An element with a context menu.
ControlBindingMetadata
ControlRow
A selectable row of a short list whose items carry real controls (a layers panel with each layer’s thumbnail, name and switches; a list of versions with a restore button): a crate::widget::Row of widgets standing in the list row’s selection lift.
CropSelection
Normalized source-image crop edges. Values are always clamped to 0..=1 with at least 5% width and height.
CrossStripDetach
Payload published when a tab drag ends outside the row’s own band; the shell hit-tests the release point against other strips and delivers it via GroupRow::accept_cross_strip_drop or returns it to source. The source group is already mutated (detached) by the time this is published, matching what WindowGroup::detach_tab returns.
DateIndexMarker
A durable chronological boundary supplied by the collection owner.
DateIndexPreview
Value used in hover, focus, and live announcements.
DateIndexedScrollbar
A modern chronological scrollbar face plus its ephemeral interaction state. It intentionally has no document binding: scroll position and density are per-user presentation preferences, not shared collection data.
DatePicker
DeviceDisplayMoveReply
Admission result for a topology request, not acknowledgement of peer application.
DistributionChart
DistributionSeries
DistributionStyle
Divider
DocumentOpenCapability
An unguessable capability for one Files document-open route. A capability minted anywhere else is insufficient: the shell compares it against the exact capability installed in its current hosted Files inputs.
DocumentOpenReply
One Files-to-shell document-open request. The Files widget owns the strong cell; the shell receives only a weak witness, so a detached widget cannot leave an actionable request behind.
DocumentPosition
A UTF-8 byte position in a block document.
DocumentSelection
Direction-preserving document selection. Self::ordered provides its normalized start/end pair for editing and serialization.
DocumentViewport
The composing viewport widget: wraps content (a child widget or a draw closure), owns the zoom/pan input, and paints scrollbars on top. See the module docs for when to prefer the standalone ViewportState kernel instead.
DragController
A single-axis drag-to-reorder controller. Construct one per reorderable list (DragController::vertical / DragController::horizontal) and drive it from the owner’s event handler:
DropZone
A retained drop zone. See the module docs.
DropZoneFace
Immediate-mode drop zone.
Dropdown
DropdownFace
An immediate-mode dropdown: the closed Dropdown look for a painted host (a camera’s controls, a reader’s settings) that owns its own hit-testing. Pair it with an option crate::widget::Popover (Popover::new().with_items(..), opened with open_at(face.field_rect(theme), Some(selected))) for the list.
DuplicateListKey
EditableLabel
Edits
The document as a host lends it to one pass that may change it: read freely, changed only through a typed action the action host applies (a resource’s dispatcher applies it), so every change is an action that is attributed, recorded in history and undone like any other. Direct CRDT mutation is rejected at the widget boundary:
Effective
A resolved property and its authoring origin, available after layout build.
Embedded
A widget laid out and driven by the widget that owns it.
EmptyState
A centered empty-state placeholder: hero icon + title + message + action.
EmptyStateContent
What an empty state shows: optional icon or illustration, title, optional message and optional action label.
EmptyStateLayout
Where everything in an empty state goes inside a rect: what EmptyState::paint draws, and what EmptyState::layout hands back without painting.
EventCtx
Host services associated with one retained widget event dispatch.
Field
One visible label and what it labels: a standard control (which takes the label as its accessible name, so it is read once), a custom element, or nothing for a control row. Help copy reads under the label while the label stands beside the control, and under the control once stacked; validation copy always stays with the control.
FieldFace
An immediate-mode text field: the TextInput look for a painted host (a formula bar, a cell editor) that shapes and edits its own text.
FieldLayout
The label policy and measured reason for its current arrangement.
FilePicker
FilePickerEntry
FilterCount
How many rows a filtered view shows out of how many it has.
FilterMenu
Filtered
Content with a filter: a SearchField::filter in a band above the content, narrowing the first Filterable inside it. Ctrl+F (⌘F) focuses the field. A navigation shell’s filter slot is the same field wired with sync_filter.
FindBar
The find bar: a query field with a match counter, option chips, previous/next and close, and an optional replace row.
FindMatch
One match, as a span of the findable’s own content (a byte range of its text, or of its bytes in hex mode). The findable interprets it.
FindOptions
The options the bar’s chips set.
FindScope
Content with find: a FindBar that Ctrl+F (⌘F) opens as a band at the top of the content, driving the first Findable inside it.
FlapState
The eased reveal shared by every flap. See the module docs.
FloatingWindow
Form
Intrinsic ordered sections with a trailing standard action region.
FormLayout
Resolved form defaults; local section/field overrides remain independent.
FormPage
A form under its title, on a page: the title in LargeTitle (or none, FormPage::untitled) with an optional header action, an optional description, then the form, on the readable column aligned to the leading edge, scrolling vertically, with optional pinned actions. with_max_content_width(None) resets only the readable-width override.
FormSection
A meaningful group. Fields align together; content retains an arbitrary standard/manual region at the section edge and in declaration order.
FunctionPlane
A function plot’s viewport: center is the world point under the canvas centre and scale the pixels per world unit (y up in world space).
FunnelChart
FunnelStyle
GaugeReading
What an immediate-mode gauge paints: how full it is, in which colour, and the text around it. Either string may be empty.
GaugeStyle
Paint options of a BarGauge.
GaugeThresholds
Fraction thresholds (inclusive lower bounds) at which a gauge switches from success → warning → danger. The default mirrors the dashboard convention: >= 0.85 danger, >= 0.6 warning, else success.
GraphCanvas
Domain-free canvas. Supplied controls retain their framework action bindings. The canvas paints only connections; applications own typed graph resources.
GraphCanvasConnection
Semantic widget IDs of the two retained port controls.
GraphCanvasNode
One domain-owned node’s placement and ordinary retained content.
GroupRow
GroupTopology
Persistable shape of one live window group after a same-strip tab move. Tile content remains owned by the shell’s WorkspaceTree; the UI only reports identities and presentation state, avoiding a second copy of app data at the widget boundary.
Heatmap
HeatmapCell
HeatmapStyle
Histogram
Fluent builder that bins raw samples and returns a normal CartesianPlot, retaining all of its axis, tooltip and activation APIs.
HistoryAttribution
An author that acted for someone: an agent’s change is the agent’s, on behalf of its person, in every history (an app’s, the Files history, and what the history actions return).
HistoryAuthor
Not crypto material — just enough metadata to render a per-author colour dot, display name, and a short identity hash for disambiguation when two authors share a name.
HistoryEntry
HistoryEntryId
Opaque: only ever compared for equality (revert/restore callbacks pass it back to the caller). The caller picks the byte layout — UUID-v4 today, a content hash later.
HistoryFilter
Empty fields are “match everything” so a freshly-constructed filter behaves like no filter at all. The chrome owns the filter (not the widget) so the host can persist it across remounts, e.g. a workspace switch, without poking at widget internals.
HistoryOpener
The window’s History control in a painted header row: what the host offered, the pointer’s hover over it, and a press waiting to go through the History door. Modelled on crate::search::SearchOpener: return Self::take from ActionControls::take_control_invocation.
HostShellAllow
The person’s answer to AppHostIntent::AllowHostShell: None until they choose, then whether the device’s own shell was allowed.
IconWidget
Themed glyph widget — see module docs.
Image
General-purpose image widget. See module docs for the contract.
ImageCropEditor
ImageViewer
Interactive viewer for a pre-decoded peniko::ImageData. See module docs for the contract.
InputDeviceGlyph
Shared vector controller/Joy-Con silhouette used in device pickers and shortcut help. It intentionally uses theme strokes instead of bundled vendor artwork, so it stays crisp at every scale and in high contrast.
InputHint
Interaction
Hover, press and focus of one pressable surface. Faces take this so an immediate-mode caller and the retained widget paint the same states.
KeyboardMap
Theme-aware map of an explicitly selected physical model. It observes only ordinary focused window events, never global devices or document edits.
KeyboardMapInput
Private, process-local physical press state shared across page recomposition. It contains no entered text or logical input history and never edits a document.
KeyboardMapKey
A key’s physical outline and ordered XKB levels, in model coordinates.
KeyboardMapSelection
Action-bound inspection over the shared physical map. Keyboard presses never select an inspector or publish entered text.
LegendConventions
The platform and device families that decide how a binding is labelled: ⌘ vs Ctrl, A vs ✕.
LineSpans
One logical line’s highlight result: ordered, non-overlapping Spans (gaps render in the default text colour) plus the HlState the next line begins with.
Link
ListMetrics
Uniform geometry of a reorderable list along the drag axis, in the same (logical, scroll-adjusted) coordinate space as the cursor.
ListRow
A retained list row. Construct with a stable id and a title; press activates it (pointer, Enter/Space, or assistive technology).
ListRowFace
Immediate-mode list row. Build one per row per frame, measure it for its height, then paint it into the rect you laid out: the row’s outer rect, the list’s content edge grown by row_bleed on both sides.
LiveCapture
The live apps a FullApp or WholeStrip capture repaints outside the output clip.
Manual
A manual region whose children keep their standard rendering and interaction. The policy measures children, places every child, and returns its desired size. It can run repeatedly before painting and must not change child topology. Rectangles are relative to this region, represented by Taffy’s logical f32.
ManualConflict
An unsatisfied manual constraint, e.g. smaller than a child’s border/padding.
ManualContext
Safe child-indexed measurement/placement services supplied by the host. Measurements solve current retained topology; they never apply geometry or rebuild widgets. Actual placement participates in the normal host settlement.
ManualInvalidation
Explicit invalidation for inputs captured by a retained Manual policy. After changing an input, call Self::invalidate and schedule a normal host layout frame. This handle does not schedule a window redraw itself.
ManualLayout
Actual region allocation, requested child extent, and overflowing content.
MarkSpan
A byte range + a single Mark. Multiple MarkSpans with the same kind never overlap (the toggle helpers merge them); different kinds may share a range.
MarkupExport
MarkupStroke
MediaCard
A retained media card. See the module docs.
MediaCardFace
Immediate-mode media card.
MediaGrid
A responsive grid of MediaCards. See the module docs.
MenuButton
A button that opens a menu anchored to its own rect (crate::widget::Button::with_menu): a header’s More button, a toolbar’s sort menu. The menu opens under the button, lines up with whichever of its edges keeps it in the window, and flips above near the bottom; Enter, Space or a click opens it, and the button reads as expanded while it is open.
MenuEntry
One row of a context menu: what it shows, and what choosing it does.
ModalAction
One button in the footer.
ModalDialog
A modal dialog: a title, any content widget, and up to three footer actions, over a scrim that covers the window. Generic over the content type so callers pass any Widget without boxing.
ModalLayout
Where every part of the modal landed. Pure geometry, computed without a GPU, so the layout rules are tested directly.
ModalSheet
The immediate-mode sheet for a painted host that keeps its own state (a question with three answers, a confirmation over a canvas): it lays the sheet out, paints it with hover, press and keyboard focus on its actions, keeps the layout of its last paint for hit-testing, and turns input into a SheetResponse. The host paints only its body.
ModalSpec
What a modal is being asked to frame.
ModelView
A retained subtree selected by a value projected from application state.
NativeView
Retained widget adapter around a NativeViewBackend.
NativeViewGeometry
Parent-relative geometry in both toolkit-logical and native physical pixels. Backends should use physical_* for child-window APIs.
NativeViewHost
Live parent-window context supplied before a native view is shown.
NativeViewInput
Event coordinates and modifiers already normalized by the toolkit host.
NavAction
A command offered on a row or a section header: an icon, and the name it is announced and tooltipped by.
NavGeometry
The shell’s geometry for one size, in coordinates local to the shell.
NavItem
One destination. Every part but the label is optional; see docs/ui-migration.md, “Rows: what each part of a NavItem means”.
NavItemStatus
A row’s status dot, as NavItem::status keeps it.
NavList
The navigation list. See the module docs.
NavSection
A group of destinations under a sentence-case title.
NavShell
The one window shell. See the module docs.
NumberInput
NumberStepperFace
Immediate-mode number stepper: − value +, the face of a NumberInput. Inline (the default) it is the toolbar stepper of NumberInput::compact, bare steppers either side of the value; Self::framed gives the secondary steppers of the framed control, whose value the host’s field draws.
ObjectHeader
The head of a detail view: an avatar or an icon, the object’s name in Title and one Caption line under it, rhythm.tight apart, on the content edge (“Ada Lovelace / [email protected]”, a password’s site).
OutputSpan
One display’s horizontal extent in the compositor’s combined coordinate space, plus the width window groups on it size themselves against.
Page
A page of sections: optional head items (a summary, a filter), then sections spaced rhythm.group apart, on a readable column aligned to the leading edge of the column it fills, scrolling vertically. It has no title of its own: the shell’s header titles the page. Actions that must stay reachable while it scrolls are pinned under it with Page::with_pinned_actions.
PageEntry
PageLayout
Page width excludes its single pair of outer gutters.
PagePreview
PageSidebar
PaintedTargets
The pressable targets of a widget that paints its own content (a calculator’s keys, a map’s markers, a timeline’s clips): the same hover, press, focus and activation the retained controls have, for rects the host lays out itself.
Pan
Horizontal pan of one run of groups: the whole row, or one lane.
ParticipantPresence
One remote participant’s live presence (caret/selection), published by a multi-participant widget under that participant’s identity. Same key and payload shape as the local window’s own presence (Writer: wp_block key, byte offsets into the caret block).
PenSample
What a stylus reported with one pointer event.
PermissionPrompt
Inline permission prompt widget.
PieChart
A responsive interactive pie/donut widget.
PieSlice
A stable, labelled radial datum. Negative and non-finite values are treated as zero. id survives sorting and updates and is returned on activation.
PieStyle
Visual configuration shared by pies and donuts.
PlotAxis
Axis configuration. Explicit ticks are useful for dates and categories; when empty, the plot produces tick_count compact numeric labels.
PlotDatum
PlotSeries
PolarAreaChart
PolarAreaStyle
Popover
An anchored floating Panel holding an option menu or any content widget. See the module docs for the contract.
PopoverButton
A button that opens a popover anchored to its own rect (crate::widget::Button::with_popover): a filter’s options, a share sheet’s details. A click, Enter or Space opens it and closes it again; the button reads as expanded while it is open.
PopoverPrompt
The body of a prompt popover (Popover::prompt): a caption, one field and a hint under it. Enter submits what was typed; Escape closes the popover without it.
PrimaryScrollRegion
The application’s explicit primary region. Owners stamp component identity.
ProgressBar
ProgressBarFace
Immediate-mode progress bar, for a host that paints into a Scene.
ProgressRing
A retained progress ring. See ProgressRingFace.
ProgressRingFace
Immediate-mode progress ring: a countdown or progress with an optional centred readout.
ProjectedDateMarker
A projected marker with its pixel position along the current track.
PromptBody
Renders caption → label → field, where caption and label are optional.
Property
One property of a retained PropertyList.
PropertyColumn
A label column shared by several property lists, so their values line up (the lists of one Section share one on their own). Clone the handle into each list with PropertyList::shared_column.
PropertyList
A retained property list. See the module docs.
PropertyListFace
Immediate-mode property list. paint takes the list’s outer rect: the content edge grown by row_bleed.
PropertyRow
One label and its value, as the face paints it.
PropertyValue
A read-only value as a control: the value a Field shows where it cannot be edited (an account id, a generated key), in primary ink with its kind’s text treatment and an optional trailing copy action. Unbreakable kinds are elided before the action.
QrWidget
Holds the source bytes plus the cached encoded matrix. Re-encodes when the payload changes via set_payload — the pairing-channel screen calls it every few seconds as the broker rotates the nonce.
RadarAxis
RadarChart
RadarLegendStyle
RadarSeries
RadarStyle
RangeBar
One interval. Equal start/end values render as milestones.
RangeChart
RangeStyle
RedactionDisplay
Optional on HistoryEntry — when present, the widget renders the row with the struck-through summary, suppresses the [Revert] chip, and exposes the redactor + reason on hover.
ResizableSplit
Two panes and the divider between them.
ResizeHandle
The GroupRow constructs one per inter-group gap (N-1 handles for N groups) and refreshes the handle’s (left, right) rect snapshot each layout pass. Width updates flow back through callbacks the row supplies, keeping the widget free of row/group-specific knowledge.
RichTextLine
RingReading
What a state-bound ring shows (ProgressRing::from_state).
RollingSeries
A fixed-capacity rolling window of samples — the store behind a live, streaming chart or sparkline. Once full, every push drops the oldest sample, so as_slice always reads oldest → newest and can be handed straight to Series or Sparkline::paint.
RouteHandle
A cloneable controller for one router’s process-local route stack.
RouteSnapshot
Process-local route history, exported so a dev reload can put the same screen back. Unknown names are rejected by RouteHandle::adopt_stack.
Router
A retained single-screen host driven by an explicit RouteHandle.
Row
RowAction
One of a row’s hover actions: an icon button that names what it does.
RowSelection
A row’s selection with its neighbours’, for a delegate that paints its own selection: a run of selected rows is one lift (crate::chrome::RowJoin), and a separator hides beside a selected row.
SankeyChart
SankeyStyle
ScreenshotMarkup
A modal editor, intentionally implemented in ui rather than shell so an image app can host the identical canvas and controls.
ScreenshotSendDevice
One of your online devices, as the shell offers it to “Send…”.
ScrollMetrics
The scroll geometry along one axis, all lengths in logical px.
ScrollRegion
See the module docs.
Scrollable
Scrollbar
A single-axis scrollbar interaction model.
SearchField
A search-styled input: magnifier + editable text + count slot + clear.
SearchResultsView
The results overlay. Populate it with set_groups each time the query changes, drive selection with the keyboard or pointer, and drain activations with take_activated.
Section
An intrinsic-height group of content with an optional header. See the module docs.
SectionHeader
A section’s header row.
SectionHeaderFace
An immediate-mode section header for a painted host, with the retained SectionHeader’s geometry: the title on the content edge, the count after it, the action’s label on the trailing edge, one fixed height.
SectionLayout
Effective values within one section.
Segment
One choice of a ToggleGroup or a SegmentedFace.
SegmentedFace
An immediate-mode segmented strip over caller-owned segment rects (the rects must be contiguous, except a multi-select strip’s). The caller owns the hit-test; this paints the themed look over them. Size the strip with SegmentedFace::height and SegmentedFace::intrinsic_width, and split it with SegmentedFace::partition_segments.
SegmentedTouch
The retained control and painted strips share one touch recognizer. Only a completed single-finger gesture chooses; cancellation, a second finger, a removed strip or an externally changed selection refuses it.
SegmentedTouchGroup
One painted segmented strip, identified independently of its position. Keep id stable while the strip remains mounted.
SelectionHandles
The frame around a selection, in content coordinates: bounds turned by angle about its centre.
Series
One labelled data series. data is sampled left-to-right across the plot; color is the line/area tint; legend is the label shown in the chart’s legend strip (empty string = omit from the legend).
ShortcutRecorder
SidebarDrawer
A collapsible sidebar or inspector for a painted app. See the module docs.
Skeleton
A retained skeleton. See the module docs.
SkeletonFace
Immediate-mode skeleton.
Slider
SliderFace
An immediate-mode slider face: everything Slider::paint needs to draw one, with no widget instance and no CRDT binding.
Slot
A place in the tree whose content the app replaces in place: transparent to layout, input, paint and semantics.
SlotHandle
What the app holds to replace a Slot’s content.
Spacer
Span
A coloured run within one logical line: a byte range (into that line) and its TokenKind.
Sparkline
Compact, chromeless trend line — no axis, grid, title or legend. Just the area fill + line, sized to fill its rect. Drop one into a table cell or a stat card to show a recent trend.
Spinner
SplitHandle
The divider between two panes: hit-testing, hover, dragging, keyboard steps, painting and its accessible separator node. ResizableSplit keeps one; a host that paints its panes itself (a query editor over its results, a source beside its preview) keeps one too, sets its rect each layout and lays its panes out in SplitHandle::pane_rects.
SplitRatio
The share of a two-pane split the first pane takes, clamped to bounds so neither pane collapses. One model for ResizableSplit and for painted hosts (SplitHandle).
Stack
Children painted on top of one another, each position: Absolute and anchored at the stack’s top-left. There is deliberately no alignment option: a child that wants a corner or the centre positions itself (a Column/Row with its own insets and justify, or a Container with with_centered_max_width), so the stack stays a pure z-order primitive and the layer’s geometry is owned by the layer. If a caller needs the stack itself to anchor, add an opt-in that maps to inset on the child node rather than changing this default.
StatGroup
A set of stat tiles that reflows by width: all in one row when they fit, then half per row (a 2×2 for four), then one per row. Tiles are separated by space, never boxed.
StatTile
A retained stat tile. See the module docs.
StatTileFace
Immediate-mode stat tile.
StatusLine
A non-interactive status: a RowStatus dot and a Caption sentence on the content edge (“Engine running”, “3 containers stopped”), for a list’s footer or a detail’s state.
Stepper
A retained stepper. See the module docs.
StepperFace
Immediate-mode stepper.
StripLane
One display’s share of a strip that is partitioned across displays.
StripView
Suggestion
One completion offered in the dropdown.
SuggestionList
A floating list of suggestions under (or, without room, above) an anchor: the one list behind Autocomplete and a code editor’s caret completion.
SunburstChart
SunburstNode
SunburstStyle
SwipeAction
The action a swipe reveals under the row’s trailing edge.
Switch
One of several parts, chosen by a key, each built once and kept alive while another shows. See the module docs.
TabBar
TabDescriptor
Table
Text
TextActionRequest
A selected-text command requested from a field’s context menu. The host can execute this asynchronously (translate, rewrite, explain, grammar review) without putting model or network work in the widget’s input path.
TextInput
TileHost
TimePicker
Three-spinner time picker. See module docs.
TimeValue
Typed value shared by a TimePicker and application state.
Toggle
A switch: a [BoolControl] drawn as a pill whose knob slides to the checked side.
ToggleColors
The resolved colours of one switch face.
ToggleFace
ToggleGroup
ToggleInteract
Interaction state for the immediate-mode toggle face; the retained Toggle tracks these itself. A canvas app doing its own hit-testing usually only knows hovered.
Toolbar
Tooltip
TooltipHost
One controller owned by crate::app::App — not one tooltip widget per control — is what makes tooltips work for every widget exposing Widget::tooltip with zero per-app wiring, and guarantees at most one chip on screen. Timing is wall-clock through an injected now: Instant, so it’s unit-testable.
TrackMark
One annotation along a scroll track: where a search hit, a change or a diagnostic sits in the content, painted as a short mark across the track so the person sees where to scroll.
TransclusionPreview
Display-only, bounded projection for a live page embed. The source CRDT keeps only the stable UUID mark; hosts refresh this projection on sync.
TransportFace
The face of one transport control at rect (a square: the circle is inscribed in it).
TreeHeadingAction
An icon button at the trailing edge of the heading band (a sidebar’s “new item”).
TreeLoadRequest
TreeNode
TreeRowAction
A compact action shown at the trailing edge of the hovered row (a “new child” plus, a “more” ellipsis). Assistive technology sees every row’s actions as buttons named "{accessible_name} {row label}".
TreeRowDecoration
Per-row presentation painted by the tree itself: a leading icon, a label tone, trailing secondary text (a count, a type) and an accessible description. Unlike TreeView::with_row_delegate nothing is mounted, so decorations are recomputed every frame at no retained cost; disclosure, selection, hover, the current row, focus and semantics stay owned by the tree.
TreeRowInfo
What a TreeView::with_row_decoration callback is told about the row it decorates.
TreeSlot
Stable address of one logical child slot in a paged model. Slots remain present while their data transitions from loading to ready or error.
TreeView
Treemap
TreemapStyle
TrendRange
The value interval a trend maps onto its plot’s height: lo lands on the baseline, hi on the top edge, and values outside clamp to the plot.
TrendStyle
Paint options for a trend line — the one line/area renderer behind Sparkline and every series of a Chart.
UndoButton
An Undo or Redo button wired to the host’s history.
VecListModel
Convenient fully-resident model. Database and paged sources generally implement ListModel directly instead.
VideoPlayer
ViewportState
The pure zoom/pan state kernel. Owns the zoom factor and the scroll offsets, derives the content↔screen transform, and reduces input events (wheel, drag, arrow keys) into new state. Render-agnostic and cheap to clone — a host stores one of these and drives it from its own event + draw paths. See the module docs for the two usage shapes.
VirtualList
WebView
See module docs.
WheelJumpAccum
Turns fractional-detent scroll deltas into whole steps. No quiet-time decay: it would stop slow scrolling from ever accumulating a whole detent, and a stale sub-detent balance is harmless since it clears the next time the user reverses direction.
When
A child shown only while a condition holds. While it does not, the child is out of its container’s flow: no box, no gap around it, no paint, no focus and no accessibility node. The condition is read on every synchronization, so state that changes it (a LocalState, the document) shows or hides the child on the next frame; the child keeps its own state while hidden.
WindowGroup
WindowGroupBounds
Immutable presentation inspection in root logical coordinates. Reading this does not lay out, paint, reveal controls or drain input edges.
WorkspaceView

Enums§

AccessoryAction
What a field’s trailing accessory does when pressed.
ActionDirectoryInvocationDomain
Comparison-only coverage of an owning surface’s effective invocation domain. This never authorizes invocation, disclosure, or document publication.
AppHostIntent
A typed, device-local request from app content to shell chrome. Keeping this on the common app contract lets both in-process tiles and future IPC adapters use one destination without an app reaching into compositor state or pretending a status toast completed the navigation.
AppKind
ArtifactKind
The categorical kind of an artifact.
AudioCaptureMode
AuthorRelation
Who an author is to the person reading the history. Rows draw the reader’s own changes, a collaborator’s and an agent’s differently.
AutocompleteOutcome
How the most recent interaction ended. Returned once by Autocomplete::take_outcome.
AvatarSize
How large an avatar is. Each size reads from the theme’s metrics, so it follows the UI scale.
AxisLabelFormat
Built-in axis label formats for common presentation needs.
AxisRange
AxisScale
BadgeContent
See module docs for content semantics.
BannerKind
Severity of a Banner. Selects the icon and its colour.
BlockEditOp
A semantic, UUID-addressed mutation emitted by the optional action bridge. It intentionally contains no Automerge object ids, making it safe to replay on another replica or use from apps with a different document layout.
BlockKind
Each CodeBlock stores one authored source line. It may wrap visually; Enter creates the next source row without changing existing line breaks.
ButtonRole
What a button does. The role is a button’s whole appearance: an app never picks a fill, an ink, an edge or a radius for one.
CanvasNavigation
The primary direct-manipulation verb used by a domain canvas.
CaptureDestination
CaptureExtent
How far beyond the pixels currently visible on the physical display the compositor should follow the selected source.
CaptureKind
What pressing the capture button does.
CaptureMode
CardWidth
How wide a grid’s cards are at least, before the grid drops a column. Measured in lines of body text, so cards widen with the text scale.
CartesianAnnotationKind
A reference line, highlighted interval, or labelled point rendered in the plot’s data coordinate system.
CartesianBrush
CartesianPan
CartesianTooltipAnchor
CartesianZoom
CategoryLayout
ChartNavAction
ChartTouchAction
ChipLead
What sits in a chip’s leading slot.
ChipStyle
What a chip or badge is. The style is the whole appearance; there is no colour, size or radius to set.
ChordSelection
ColorPickerOutcome
How a confirming picker closed (see ColorPicker::confirming).
ControlBindingKind
Machine-readable classification of a control’s activation path.
ControlSize
Small, regular or large: a control’s height and label role together.
CursorPlacement
DateIndexIntent
What the host should do after one interaction. It contains only stable positions/ids, never an app-specific row index.
DateIndexMarkerKind
Relative importance of a date boundary.
Density
Coordinated spacing within a form region. Does not shrink control targets.
DistributionKind
DividerAxis
DocumentOpenOutcome
Shell-owned result for one exact Files document-open request.
DragAxis
Which way a reorderable list runs. The controller pins the cross axis while dragging so the ghost slides only along the list.
EditOutcome
EditScope
Which blocks the person may have changed, as BlockEditor::take_edit_scope reports it.
EntryKind
What a history entry did, as the history and activity views mark, filter and group it. Read from the change itself (its entry and what it wrote), not from the transport that carried it.
ExtentSizing
What sizes an extent handed to a responsive shell (HIG §9.6).
ExternalDatePickerHit
A host-side hit from an externally laid-out DatePicker.
FilePickerMode
Open picks existing files; Save adds a filename field whose contents resolve to current_dir/<name>; Directory picks existing folders.
FilePickerOutcome
Drained by the host via FilePicker::take_outcome once per frame; None means “user hasn’t decided yet”. The terminal variants resolve the host’s oneshot::Sender<Option<Vec<PathBuf>>>.
FindMode
What a find runs over: text, or a byte view’s hex digits.
FunnelDirection
HistogramNormalization
HistoryClassification
HistoryControl
What the window’s History control shows.
IconDescriptor
A lightweight icon descriptor usable before the full asset pipeline lands. Glyph is a Nerd Font / unicode codepoint (existing approach in both the iced file-explorer and quick-terminal). Named is a symbolic name for future theme-driven icon resolution.
IconSize
Which of the theme’s icon sizes a glyph takes: metrics.icon_sm, icon_md or icon_lg (14, 20 and 24 by default).
ImageDecodeError
Errors that can occur when constructing an Image from encoded bytes.
ImageFit
How the image is fitted within the widget’s rect.
InspectorPlacement
Where the inspector is this frame.
LabelPlacement
Automatic labels use measured content needs, never a caller breakpoint.
Language
A built-in language the editor ships a Highlighter for. Any other language with a grammar is a SyntaxHighlighter::for_token away.
LayoutInfo
Concrete layout policies. Manual layout information can extend this enum.
LayoutOrigin
The nearest source that supplied an effective property, not a source location.
LegendPosition
LineSignal
Emitted when a key would carry the edit out of the line itself; the parent (a BlockEditor) drains these via RichTextLine::take_signal.
ListRowState
State of one stable row in a paged or asynchronously populated list.
Mark
One inline mark applied to a byte range of a RichTextLine.
MarkerShape
MarkupTool
MeasureConstraint
A proposal for one axis of a retained subtree, in logical pixels.
MediaArt
What a card’s art is.
MediaAspect
The shape of a card’s art.
MediaBadge
An overlay mark on the art.
MediaSize
How large the cards of a grid are, in lines of body text so they grow with the text scale.
MediaSource
Where a retained card’s art comes from.
MenuItem
Separators are purely visual and ignored by ContextMenu::click_item.
ModalEmphasis
How an action is weighted in the footer.
ModalHit
What a point landed on.
NativeViewAccessibility
Whether AccessKit or the native child owns this view’s semantic subtree.
NavDrop
Where a dragged item lands (see NavList::on_move).
NavMode
What the sidebar becomes when the window is too narrow to dock it.
NavPane
A screen of the narrow push stack.
OverviewPlacement
Where the overview is this frame.
OwnedBadge
Owned badge for the retained card.
PageSidebarEvent
Something the host should do to its page/slide model in response to a sidebar interaction. The ordering-changing variants flag that a save is needed.
PanelAlign
Which edge of its anchor a floating Panel lines up with on the cross axis.
PhysicalInput
Private foreground feedback, stripped of logical keys and typed text. Observers cannot consume the input or obtain a document edit context.
PieTooltipAnchor
PipLayout
PopoverSide
Which side of its anchor a floating Panel opens on.
PresenceStatus
Whether a person is there: the badge on their avatar’s corner.
PressOutcome
Outcome of a press hit-tested against one bar.
PrimaryScrollAction
PrimaryScrollResult
ProgressRingSize
How large a ProgressRing is. Each size reads from the theme’s metrics, so it follows the UI scale.
PromptChoice
Mirrors the variants of the shell’s consumer-facing quick_shell::shell::state::GrantScope plus an explicit PromptChoice::Deny for the negative path. Held one-shot on PermissionPrompt::pending_choice until the host drains it.
RecordingCommand
Commands for the compositor-owned recording session. Keeping controls in the same semantic intent stream as Start makes shell chrome, shortcuts and future remote controls share one state machine.
ReplayCommand
RouteError
RowLeading
What sits in a row’s leading column.
RowStatus
A status dot on the row’s trailing edge, on the title’s line; beside a check or a disclosure chevron it centres with them.
RowValue
How prominent a row’s trailing value is.
SankeySelection
ScreenshotCommand
ScreenshotMarkupCommand
ScreenshotSendTarget
Where “Send…” delivers the last screenshot.
ScrollAxis
SegmentedStyle
What a segmented strip is. The style never chooses a colour: the chosen segment is always a lift with primary ink.
SegmentedTouchResult
The input owner applies a selection through its existing admitted action.
SelectionHandle
A grip on the selection frame.
SeriesKind
SheetResponse
What an immediate ModalSheet was answered with.
SidebarPlacement
Where the sidebar is this frame.
SidebarSide
Which edge the drawer is anchored to.
SkeletonShape
What a skeleton stands in for.
SmallContentAlign
How the content is positioned along an axis when it is smaller than the viewport along that axis (i.e. nothing to scroll).
SourceMode
SplitLayout
How a sidebar resolves at the current width.
SplitOrientation
StepperPart
One of a stepper’s two buttons.
StructureChange
What a structural change a subtree reported (Widget::take_structure_change) asks of its host. Ordered: a change joined with a larger one is the larger.
TabDropTarget
Where a dragged tab lands within a strip: at an exact index in an existing group, or as a new group at an exact seam between groups.
TabMark
What a tab’s content is doing, marked in the tab’s leading slot in place of its icon: loading, or making sound. A sound mark is a control: a click on it is reported by TabBar::take_mark_click (the host mutes or unmutes).
TextInputKind
Semantic intent of a field. Ordinary TextInput construction defaults to Prose, so apps opt out only for the smaller set of structured fields.
TileContent
TimelineDensity
See the module docs.
TokenKind
The syntactic category a run of source falls into. The editor never hard-codes a colour for these — the theme’s SyntaxPalette resolves each to a concrete colour, so syntax tracks the active theme in light, dark and high contrast.
Tone
What a coloured mark (a card’s leading stripe, a stat’s ticker, an empty state’s glyph) means.
TransportControl
One control of a media transport.
TreeChildState
State returned for a logical child slot. A model can publish its total child count before all child ids are resident, allowing the tree to retain correct scrollbar geometry while requesting only visible pages.
TreeClickActivation
How a pointer press activates a row (see TreeView::on_activate). Keyboard Enter and the accessibility Activate verb activate the focused row in either mode.
TreeLoadReason
TreeModelChange
A granular notification from an external tree model. Structural and slot identity changes reconcile the expanded-order index once per batch; label changes preserve geometry and query fresh data on the next frame.
TreeMove
A structural move of one row — what a drag does, as a single step for the keyboard (Alt + arrows, or Tab / Shift+Tab with TreeView::tab_indents) and for assistive technology, which sees one button per move on every row.
TreeRowIcon
A leading glyph for a decorated row. Colours are resolved by the caller from the Theme handed to the decoration callback, so they track the active theme.
TreeRowKey
Stable identity of either a resident model node or an unresolved child slot. Selection remains node-only, while focus and viewport anchoring can safely include placeholders.
TreeRowTone
The label colour role of a decorated row.
Trend
Direction of a tile’s change line. The arrow says which way the number moved; whether that is good is the tile’s Tone, not the arrow’s.
TrendCurve
How consecutive samples are joined.
TrendFill
How the area under a trend line is filled.
WidgetLayoutError
WindowCloseAdmission
WindowWidth
Persisted width of a [crate::WindowGroup], as a fraction of the strip’s usable width — a stored pixel count would mean a different screen share on every monitor.
WorkspaceSwitchDirection

Constants§

DEFAULT_DRAWER_BREAKPOINT
At or above this width the drawer docks (Metrics::compact_breakpoint).
DEFAULT_DRAWER_DOCKED_WIDTH
The docked sidebar width every shell shares (Metrics::sidebar_width).
DEFAULT_DRAWER_WIDTH
The overlay drawer width (Metrics::drawer_width).
DEFAULT_MAX_ZOOM
Default upper zoom bound (600 %).
DEFAULT_MIN_ZOOM
Default lower zoom bound (25 %).
DEFAULT_PADDING
Default padding (screen px) reserved around the content so it doesn’t sit flush against the viewport edges. Matches the PDF reader’s feel.
DEFAULT_PAN_STEP
Arrow-key pan step in screen px.
DEFAULT_STRIP_USABLE_PX
Only reached from a bare ui host with no output spans; the shell always pushes real geometry first.
DISABLED_ALPHA
Shared disabled-state opacity: wrap draw output in scene.push_layer(.., DISABLED_ALPHA, ..) / pop_layer().
FILTER_MIN_OPTIONS
Lists shorter than this never show a filter: a typed letter jumps to the next option starting with it instead.
HANDLE_HIT_HALF_PX
8 px each side → 16 px total, the smallest touch-friendly target Fitts’-law-wise while still leaving room for the surrounding tab-bar affordances (the bar’s drag-detach pill rect is also ~16 px tall).
HANDLE_HOVER_PX
HANDLE_SLOT_PX
This is the strip’s inter-group gap: the row declares no gap of its own and lets the handle supply the whole footprint, so anything that walks the strip’s canvas (GroupRow::usable_per_group) has to step by this between adjacent groups.
HANDLE_VISIBLE_PX
HISTORY_CONTROL_ID
The id of the window’s History control in a painted header row: its test id, and the action target of its semantic node.
JUMP_PX_PER_DETENT
Touchpad px per wheel detent for the discrete jump gestures; also the scale for hi-res wheel notches reported as pixel deltas.
MIN_HEIGHT
MIN_WIDTH
PAN_SLOP
A drag shorter than this (screen px) is a click, not a pan — lets a host distinguish a selection tap from a drag-to-pan gesture.
PROMPT_HEIGHT
REORDER_THRESHOLD_PX
Pixels of pointer travel before a press is promoted to a reorder drag, so a plain click never jitters into a move.
RESIZE_HANDLE_PX
STRIP_COOLDOWN_MS
TITLE_BAR_HEIGHT
The unscaled title-bar height: a floating window’s title bar is a Bar (HIG §9.1/§9.6), so it takes metrics.bar_height — the same 40 px the top bar, a toolbar and the shared Button use. Live geometry reads the ui_scaled token from the theme the window was laid out with (FloatingWindow::title_bar_height); this constant is for callers that need the reference value in a const context.
WIDTH_FLOOR_PX
A pure fraction has no floor — 15% of an 800px strip is 120px, too narrow for a tab pill or scrollbar — so resolved width clamps up to this (and back down to the strip width if that’s narrower still).
WIDTH_MAX_PERMILLE
WIDTH_MIN_PERMILLE
Narrowest and widest fraction a group may take.
WIDTH_NARROW_PERMILLE
Per-mille (not px) so a tier means the same fraction on every monitor. Thirds tile the strip cleanly; Wide is the full usable width.
WIDTH_NORMAL_PERMILLE
WIDTH_WIDE_PERMILLE

Traits§

AppWidget
Trait every in-process app implements so the shell can host it inside a TileContent::App. AppWidget: Widget means the shell always falls through to the widget contract for layout, draw, and events.
AudiencePresentationProvider
Optional second-output presentation capability for app roots.
AudiencePresentationWidgetExt
Ergonomic host API for optional second-output presentation support.
CheckControl
A boolean form control conventionally paired with an inline label.
Collaborative
Optional session collaboration capability for widgets that own live broker-backed activity.
CompleteContentProvider
Optional full-document/canvas capture capability.
CompleteContentWidgetExt
Ergonomic host API for optional complete-content capture.
Continuable
Optional cross-device continuation capability for an app root.
Decorator
A widget that extends another by overriding a few Widget methods and forwarding the rest. See the module docs.
Filterable
A view a SearchField can narrow: a list, a table, a grid of cards.
Findable
A view whose content can be searched in place.
FloatingSurfaceProvider
Optional capture and detachable-surface capability.
FloatingSurfaceWidgetExt
Ergonomic forwarding API for optional floating-surface capabilities.
FormControl
A control that can receive the accessible name of a visible form label.
FullscreenProvider
Optional OS-fullscreen capability for roots and forwarding containers.
FullscreenWidgetExt
Ergonomic host API for optional fullscreen support.
Highlighter
A pluggable, per-line source tokenizer. The CodeEditor owns rendering, caret, and selection; a Highlighter owns only the language lexing — mapping a line of source to coloured Spans. SyntaxHighlighter covers every language with a grammar; hand it (or a wrapper that adds app-specific spans) to CodeEditor::with_highlighter.
ListModel
Random-access collection contract for VirtualList. Keys must be unique and stable while an item represents the same logical entity.
NativeViewBackend
App/platform implementation of one native child view.
NativeViewLifecycle
Optional lifecycle for widgets backed by a platform-native child view.
TaffyTreeExt
Panic-free node construction, used by every build_layout implementation in this module. TaffyTree::new_leaf and new_with_children are typed -> TaffyResult<NodeId> for API generality, but taffy 0.10’s implementation shows neither can return Err: new_leaf always inserts and returns Ok, and new_with_children only fails for a child NodeId belonging to a different tree, which never happens here since every child passed in was just built in this same tree by the calls immediately above each call site. Widget::build_layout returns a bare NodeId (not a Result) across every implementor, so surfacing a theoretical error here would mean threading a Result through the whole toolkit for a branch that can’t be taken.
TreeModel
Source-agnostic hierarchy queried by stable id. Implementations may be backed by a database, an async cache, a CRDT, or the owned TreeNode adapter. The view asks only for expanded children and visible labels. IDs must be unique, parent/child queries must be inverse, and the reachable hierarchy must be acyclic.
Widget
WindowHeader
A widget that draws the window’s header row.

Functions§

apply_filter
Narrow the first Filterable in widget’s subtree to query, and return its count.
badge_column_width
Measure the leading column that fits every badge in badges, so a list of rows with badges of different lengths keeps one title edge. Pass the result to every row’s ListRowFace::leading_column. A Section does this for the retained rows it holds.
card_column_width
The width of each of cols columns that, with gap between them, fill avail_w exactly. Never negative.
card_columns
How many columns of at least min_card_w fit in avail_w with gap between them. Always at least 1.
chart_nav_action
compute_widget_layout⚠
Measure the host tree and settle allocation-dependent styles before calling Widget::apply_layout. App and the headless runner use this same solver. Manual hosts may use it with the maps from their current build_layout. Raw Taffy layout still works for ordinary Grid tracks, but cannot resolve CardGrid’s below-minimum single-column fallback without this adjustment.
draw_app_mark
A window’s application mark at any size: the app’s own artwork when it has some, else the app-kind glyph its tab pill wears, scaled up from the pill’s 14 px design size. Every surface that names a window by its app (the tab pill, the window switcher, the overview) paints this one mark.
draw_child
Draw child unless what it paints misses the viewport. Off-viewport widgets stay dirty, so they re-emit when scrolled back in.
face_colors
The colours of role in interact: the single source of truth for the retained Button and the immediate-mode Button::paint.
find_test_id
The first widget of root’s subtree, root included, whose Widget::test_id is id.
find_test_id_mut
find_test_id for a widget to change.
format_relative_time
Used by both widgets so the wording stays uniform with every other “time ago” label (crate::format::relative). Re-renders every frame, so the label freshens naturally as now advances — no clock plumbing needed.
hue_to_rgb
HSV(h, 0.65, 0.95) → RGB. Saturation and value held constant so generated author colours stay visually coherent (no neon outliers, no muddy ones).
initials_for_name
The first letters of the first and the last word, upper-cased: "Ada Lovelace" gives "AL", "Grace Brewster Hopper" gives "GH", "ada" gives "A". Words without a letter are skipped, so "Tilo 4" gives "T", never "T4".
insets
Padding per side in CSS order (top, right, bottom, left). Negative values are clamped to zero: taffy treats a negative inset as undefined and a caller subtracting an overlap can otherwise drift below it.
insets_all
Uniform padding on all four sides, in logical pixels. Pass a token (theme.padding_standard, theme.tokens.spacing.s4), not a number.
insets_xy
Symmetric padding: horizontal on left and right, vertical on top and bottom — the toolbar / action-row shape.
justified_rows
Lay aspects (width / height) out in justified rows width wide: each row is filled at target_height, then scaled so it spans the width exactly. The last row keeps the target height instead of stretching, capped at the height of the row above it. Returns one rect per item, relative to the origin.
labeled_check
Compose a checkbox or toggle with one inline visible and accessible label.
labeled_field
Compose a visible semantic label with the control it names.
layout_clip
The window area content is seen through while it is being placed: the viewport of the nearest enclosing scroll view (intersected with any outer one), or None when nothing clips it. A collection reads it in Widget::apply_layout to keep only the rows near what is shown laid out; drawing culls against PresenceCtx::should_cull instead.
layout_rect
node’s laid-out box placed at origin: what apply_layout stores as a leaf’s rect. A node missing from the tree is an empty box at origin.
legacy_block_id
Deterministic stable ID for a legacy block map that has no persisted id.
max_group_px
Widest a group may resolve to on a strip of strip_usable_px.
maximized_chrome_height
Theme-measured system lane reserved above a maximized client.
min_group_px
Narrowest a group may resolve to on a strip of strip_usable_px.
move_chart_index
move_chart_item
Move through a filtered list while preserving the caller’s original item indices (for example, skipping invalid or zero-valued data).
note_resource_presentation_changed
Tell the host that what a widget presents to the resource surface (the resources, actions or semantic controls it declares) changed on input it did not mark handled and without a document edit: hovering a menu row that opens a nested menu. The host keeps the published resource tree across bare pointer motion, so such a widget must call this or the tree agents and assistive technology read would go stale. Clicks, keys and handled events outside the explicit view-only scroll contract republish.
open_external_url
Best-effort and non-blocking — a launch failure is logged, not surfaced. See crate::portal::open_uri for how the URL reaches the desktop.
optional
child when there is one, otherwise an Absent that takes no room and no gap: a caption, a badge or a help line that only some items have.
paint_find_match
Paint one match highlight over rect, the span of the matched glyphs — never a whole line or block. Every match is a wash of the searcher’s own selection colour; the current one is stronger and outlined so it can be told apart at a glance.
paint_focus_ring
The keyboard focus ring around a pressable surface of radius: your colour, 2 px, just outside the surface so it never covers its content. Composites that own their focus (rows, cards) paint it themselves; a painted surface with its own hit-testing calls this.
paint_preedit_underline
Paint the pending input method composition on a shaped line. Editors supply the segment from their own projection (proportional formula text or a fixed-width code line); its appearance follows the shared input role.
pan_within_canvas
Whether a strip panned to scroll (whole pixels) can be drawn in canvas coordinates: the retained canvas spans the content from no pan to the furthest, plus pad past either end for the rubber band.
permille_for_px
Inverse of WindowWidth::resolve: how a pointer drag (pixels) becomes a stored resolution-independent width.
placed
A laid-out box placed at origin, in absolute coordinates.
property_label_column
The label column rows need: the longest label, at most max_share of width. Several lists that must line up share the widest of theirs.
published_resources
Every resource widget’s subtree publishes, as the host’s action catalogue collects them. A host that embeds components under its own root (a desktop surface) reads what its search offers through this.
published_search_providers
Every search provider the components in widget’s subtree publish, each once, as weak proxies the components keep owning.
route_to_children
Route event through a container’s children, first handler wins. A child latching a drag gets it exclusively, so the drag survives the cursor crossing a peer whose handler would otherwise claim it first; a child holding an open modal owns the input the same way, so nothing standing behind the sheet takes the press meant for it.
segment_colors
(fill, label) of one segment; fill == None means nothing is painted under it. On a SegmentedStyle::Segmented track the fill is the thumb.
semantic_action_bindings
Derive native semantic-action provenance for actionable synthetic nodes in a custom widget’s accessibility tree. This is the intended low-level escape hatch: authors draw anything they want, provide stable semantic targets, and opt those targets into the shared action route with one method call.
share_row
Let node share its row’s main axis with its siblings by grow: it grows and shrinks from a zero basis instead of keeping its own width.
skeleton_tone
The skeleton tone on ground: a derived wash that registers even on a near-black ground.
sync_filter
Carry field’s edits to the Filterable in content: call after routing each event. The field shows the count the view reports, and its “Search everywhere” escalation narrows to the view’s scope.
text_control_height
Height of a shell control that carries one line of body text — a Back chip, the slot a search field sits in — authored at 1× as authored logical px.
toggle_accessibility
Build the accessibility node shared by retained toggles and context-specific toggle controls that own a different mutation channel.
toggle_face_colors
Single source of truth for both the retained Toggle’s draw and Toggle::paint, so every switch shares one palette per state.
try_open_external_url
Hand a URL to the current host’s URI handler and report the outcome. May block until the handler answers; call it from a worker thread.
wheel_jump_detents
Scroll delta → fractional jump detents. Winit’s y is flipped (positive = up), so wheel-DOWN yields a positive detent = jump right/next, matching Niri’s Mod+Shift+WheelScrollDown → focus-column-right.
with_findable
Run visit on the first Findable in widget’s subtree; None when there is none.
with_layout_clip
Run place (a scroll view placing its content) with clip as the layout_clip, narrowed by any clip already in effect.

Type Aliases§

AppModel
The app’s model, lent to a widget pass. The toolkit only passes it on to children; the layer that owns the model reads it (the document runtime through crate::doc::document). A host passes its model by reference and it coerces: widget.sync(&mut doc, &root).
ArtPainter
Paints a card’s art into the rect it is given, from theme values.
ContentDraw
A draw callback supplied to DocumentViewport::from_draw. It receives the content→screen Affine already composed with the host transform, so the closure paints in content space and the viewport handles the zoom + pan. The viewport rect is supplied for clipping decisions.
Element
HlState
Opaque cross-line carry so multi-line constructs — block comments, fenced code — survive from one line to the next. 0 is the document start; a Highlighter owns the meaning of every other value. Line-local highlighters ignore it and always return 0.
LinkPopover
ModelPath
Where in the AppModel a widget is bound, forwarded alongside it.
PresenceKeyFn
Maps a block id to the presence key collaborators address it by.
SlashMenu
SpanHighlighter
Colours spans of a field’s text from the theme: each (range, colour) is a byte range of the text and the ink it takes (a reference in a formula, in the colour of the cells it outlines).
Suggester
A suggestion source: given the current text, return the completions to show.
SwatchPainter
Paints swatch index into its rect in place of its flat colour: (scene, transform, rect, index, theme, text).