Logo FS-Skia-UI

FS.Skia.UI.Controls Namespace

Type/Module Description

Accessibility

Build and validate a control's accessibility contract: `metadata`/`defaultFor` plus `keyboard`/`contrast` evidence.

AccessibilityMetadata

Per-control accessibility record (`AccessibilityMetadata`): the semantic `Role`, `NameSource`, current `State` flags, optional `FocusOrder`, the `Keyboard` contract, optional `Contrast` evidence, optional value-range `Navigation` metadata, and the optional virtualized-`Collection` total/position.

AccessibilityRole

Accessibility/semantic role of a control (`AccessibilityRole`), e.g. `Button`, `Slider`, `Grid`, or `Chart`; drives keyboard routing and assistive-tech naming, with `Custom` for roles outside the built-in set.

Attr

Builder functions (`Attr`) for constructing the typed `Attr<'msg>` values that configure a control — covering content, layout, state, style, theme, and event attributes.

Attr<'msg>

AttrCategory

Classification (`AttrCategory`) of what an attribute affects — `Content`, `Children`, `Layout`, `Style`, `Theme`, `State`, `Validation`, `Accessibility`, `Event`, `Data`, or `Slot` — used to route the attribute during lowering.

AttrValue<'msg>

Badge

Builders for the `Badge` control — a small count/status pill overlaid on or beside content.

BarChart

Bar-chart control rendering each `ChartSeries` as grouped bars; author it through the typed `Props` front door.

Border

Builders for the `Border` container — wraps a single child in a stroked/padded frame.

Button

Builders for the `Button` control — a clickable command surface with a text label.

Catalog

Discovery surface for the standard control library: enumerate every control's authoring contract (required/supported attributes, events) and validate authored `Control` values against the published schema.

CatalogAccessibility

Accessibility facts a catalog entry advertises for a control: its `Role`, where the accessible name comes from (`NameSource`), reported `StateMetadata`, `FocusBehavior`, `KeyboardOperation`, and the `ContrastEvidence` backing it.

ChartPoint

A single plotted datum (`ChartPoint`): `X`/`Y` coordinates plus an optional `Label` for line, bar, pie, and scatter chart kinds.

ChartSeries

A named collection of points (`ChartSeries`): a display `Name` and the ordered `Points` it contributes to a chart control.

CheckBox

Builders for the `CheckBox` control — a labelled boolean toggle with a tick box.

CollectionEffect

Side effect emitted when a collection update shifts the realized window (`VisibleRangeChanged`).

CollectionModel

State of a virtualizing collection: scroll offset, viewport/row geometry, `SelectedKeys`, and the derived `VisibleRange` keyed by `ControlId`.

CollectionMsg

Messages that drive a `CollectionModel`: `ScrollTo`, `SelectKey`/`ToggleKey`, `ReplaceItemCount`.

CollectionPosition

Feature 114 (Phase 6): the logical size + current position of a virtualized collection (e.g. a DataGrid), reported to assistive technology INDEPENDENT of how many items are materialized. TotalItems is the total logical item count (from the collection's RowCount/ItemCount); FocusedIndex is the focused item's logical index within that total (None when nothing is focused). Both are computed from the logical model, never from the realized slice (FR-012).

Collections

Virtualization model for large scrolling lists: `visibleRange`/`init`/`update` over `CollectionModel`.

ContrastEvidence

Recorded contrast measurement (`ContrastEvidence`): the `Foreground`/`Background` colors, the measured `Ratio`, and the `RequiredRatio` it is checked against.

Control

Core authoring and rendering verbs for `Control<'msg>` — construction, standard/custom lowering, keying, single-control preview `render` and nested `renderTree`.

Control<'msg>

The core declarative control node (`Control<'msg>`): its `Kind`, optional stable `Key` identity, its `Attributes` and `Children`, optional text `Content`, and optional `Accessibility` metadata. The unit of the authoring tree and the reconciler diff.

ControlCaret

The text caret position (`Index`) within a focused control identified by `ControlId`.

ControlComposition

In-flight IME composition `Text` being entered into the control identified by `ControlId`.

ControlDefinition

One control's full authoring contract as published by `Catalog`: identity (`Id`/`DisplayName`/`Category`/`Module`), `Purpose`, its `RequiredAttributes` and `CommonAttributes`, bindable `Events`, `VisualStates`, `Accessibility`, plus `Examples`/`Tests`/`Evidence` and `SupportStatus`/`Owner` provenance.

ControlDiagnostic

A reported authoring/runtime issue (`ControlDiagnostic`): the offending `ControlId` and `ControlKind`, the diagnostic `Code` and `Severity`, a human-readable `Message`, and an optional `EvidencePath`.

ControlDiagnosticCode

Closed classification (`ControlDiagnosticCode`) of an authoring or runtime defect, from `MissingRequiredAttribute` and `MissingStableKey` to `ContrastFailure`, `KeyCollision`, `StaleGeneratedReference`, and the feature-113 `UnstableReuseInput`.

ControlDiagnosticSeverity

Severity level of a `ControlDiagnostic` (`ControlDiagnosticSeverity`): `Info`, `Warning`, or `Error`, ordered from advisory to authoring-blocking.

ControlDrag

An active pointer drag on `ControlId`, tracking start (`StartX`/`StartY`) and current (`CurrentX`/`CurrentY`) coordinates.

ControlEvent

A dispatched control event (`ControlEvent`): its `Kind`, the source `ControlId`, the `Origin` input source, an optional string `Payload`, and an optional typed `Nav` outcome.

ControlEventBinding<'msg>

A wired event handler (`ControlEventBinding<'msg>`): binds a `ControlId` and `EventKind` to a `Dispatch` function turning a `ControlEvent` into a host message.

ControlEventOrigin

ControlRenderResult<'msg>

Output of rendering a control tree (`ControlRenderResult<'msg>`): the painted `Scene`, the `Layout` root, the per-control `Bounds`, any `Diagnostics`, the `EventBindings` and their `BoundIds`, and the total `NodeCount`.

ControlRuntime

MVU runtime tracking control focus, hover, press, caret/selection, composition, drag, and derived visual state.

ControlRuntimeEffect

An observable side effect emitted by `ControlRuntime.update` when interaction state changes (focus, hover, caret, selection, drag, diagnostics).

ControlRuntimeModel

The aggregate runtime interaction state: focused/hovered/pressed controls, `Caret`, `Selection`, `Composition`, `ActiveDrag`, and accumulated `Diagnostics`.

ControlRuntimeMsg

An input message driving the runtime transition, e.g. `FocusControl`, `HoverControl`, `PressControl`, `SetCaret`, `StartDrag`, or `Reset`.

ControlSchema

Per-kind authoring contract (`ControlSchema`): the control `Kind`, its `RequiredAttributes` and `SupportedAttributes`, the `SupportedEvents` it raises, and whether `CustomAllowed` extension attributes are permitted.

ControlSelection

A text selection range (`Start`..`End`) within the control identified by `ControlId`.

CustomControl

Author a bespoke control from a `CustomControlDefinition`: `create` it as a `Control<'msg>` and `validate` it.

CustomControlDefinition<'msg>

The author-supplied definition of a custom control: measure/render/layout/hit-test/event callbacks plus optional `Accessibility` and `Diagnostics`, keyed by `Id`.

DataGrid

Virtualized data-grid control: an MVU `init`/`update` core plus attribute builders for authoring a grid against the typed `Props` front door.

DataGridCell

A single grid cell addressed by `RowKey` and `ColumnKey`, carrying its rendered string `Value`.

DataGridColumn

A grid column definition: its stable `Key`, displayed `Header`, pixel `Width`, and `ColumnType` controlling cell rendering.

DataGridColumnType

How a `DataGridColumn` renders and interprets its cells — `TextColumn`, `NumericColumn`, `BooleanColumn`, or a `CustomColumn` named by its tag.

DataGridEffect

Outbound notifications a `DataGridModel` emits when its visible range, selection, focus, sort, or filter changes, plus diagnostic reports.

DataGridFocusedCell

The currently focused cell, located by `RowKey` and `ColumnKey` for keyboard navigation.

DataGridModel

The full virtualized data-grid state: identity, `Columns`, `RowCount`, row/viewport metrics, the visible window, selection, focus, sort, filter, and accumulated `Diagnostics`.

DataGridMsg

Messages driving a `DataGridModel` through `update`: scroll, row select/toggle, cell focus, sort, filter, and row-count replacement.

DataGridRow

A grid row identified by `Key`, holding its `Cells` in column order.

DataGridSort

The active sort: which column (`ColumnKey`) is ordered and in which `Direction`.

DataGridSortDirection

Direction of a column sort — `Ascending` or `Descending`.

DesignTokens

Typed, compiler-checked design-token values generated from `src/Controls/design-tokens.tokens.json` (the DTCG single source of truth). Token VALUES are generated; this curated signature is the sole public-surface declaration. Token references are greppable and stay in lock-step with the DTCG source via DesignTokenDrift.

Diagnostics

Constructors for `ControlDiagnostic` values reported by the controls runtime and validation passes.

Dialog

Builders for the `Dialog` container — a modal surface holding a focused task's content.

Direction

Feature 100 (R5): closed selection-move direction for a linear-selection role (Home/End fold to First/Last). Exhaustive. `RequireQualifiedAccess` keeps `Previous`/`Next` distinct from the E4 `FocusMove` cases (Direction.Previous etc.).

Dock

Builders for the `Dock` container — pins its children to the edges, the last filling the remaining centre.

Focus

The pure focus model: derive tab `order`, `traverse` it, and `route` a delivered key against the focused control.

FocusMove

A traversal command derived from an unconsumed traversal key (FR-002).

FocusStop

Feature 094 (E4) — the pure focus model: a deterministic single tab order derived purely from `AccessibilityMetadata`, keyboard traversal over that order, and classification of a delivered key against the focused control's `KeyboardOperation`. Pure, total, deterministic — no I/O, no live window, property-testable to >=1000 generated combinations (SC-006). The `ControlId`<->`RetainedId` binding lives at the host seam (`Controls.Elmish.routeFocusedKey`), so `RetainedId` is absent here (R4). One focusable stop in the computed tab order, derived purely from AccessibilityMetadata.

GraphView

Graph-view control rendering a set of named nodes and their relationships; author it through the typed `Props` front door.

Grid

Builders for the `Grid` container — arranges its children in a two-dimensional row/column matrix.

Icon

Builders for the `Icon` control — a glyph chosen from the icon set by name.

IconButton

Builders for the `IconButton` control — a compact, glyph-only clickable command.

Image

Builders for the `Image` control — a bitmap displayed from a source reference.

KeyboardOperation

Keyboard contract of a control (`KeyboardOperation`): whether it is `Focusable`, the `ActivationKeys` that trigger it, and the `NavigationKeys` it consumes for internal movement.

KeyRouting

How a delivered key routes against the focused control's KeyboardOperation (FR-003/FR-007). Closed -> the host's match is total. Text delivery is the host's E1 seam, consulted first, so there is no text case here. Feature 100 (R5): the `Navigate` case now CARRIES a closed, role-derived `NavIntent`.

KnownAttribute

KnownControl

KnownEvent

Label

Builders for the `Label` control — a short, single-line caption, typically naming an adjacent field.

LineChart

Line-chart control plotting one or more `ChartSeries` as connected lines; author it through the typed `Props` front door.

Menu

Builders for the `Menu` control — a list of selectable command entries.

NavIntent

Feature 100 (R5): the closed, role-derived classification of a focused control's navigation key (FR-001). One role maps to exactly one case. `ValueStep` carries a SIGNED STEP DELTA (declared `NavRange.Step` x key sign; Home/End fold to a delta that clamps to Min/Max), NOT a resolved value — the host applies it to the live value and clamps. `SelectionMove`/`GridMove` carry only direction/2-D delta; the host reads the live selection/grid model.

NavPayload

Typed navigation outcome (`NavPayload`): `SteppedValue` for a value change, `MovedSelection` for a selection move, or `MovedCell` for grid cell movement. Feature 100 (R5): the closed set of navigation-outcome payload shapes (FR-005, SC-005). Mirrors NavIntent one-to-one; exhaustively matched at the host edge.

NavRange

Declared value/range metadata (`NavRange`) for slider/progress/numeric roles. Feature 100 (R5): declared range metadata for value/range roles — the SOLE source of step/bounds, replacing the host's hardcoded 0.1 / 0..1 slider constant (FR-002). A DEFAULT-step slider declares { Step = 0.1; Min = 0.0; Max = 1.0 } so the pre-R5 numeric path is reproduced byte-identically (FR-007). Validation: Min <= Max; Step > 0.

NumericInput

Builders for the `NumericInput` control — a typed numeric field, typically with stepper affordances.

Overlay

Builders for the `Overlay` container — a layer drawn above the rest of the UI to host a single child (scrims, popovers).

Panel

Builders for the `Panel` container — a surface grouping child controls, with optional Header/Footer slots (Feature 095).

PieChart

Pie-chart control rendering `ChartPoint` values as proportional slices; author it through the typed `Props` front door.

Pointer

Public contract module exposed by this FS.Skia.UI package: the pointer coordination front door (pure, host-independent, replayable). FR-001/FR-009.

PointerButton

Framework-neutral mouse button identity (FR-013). Qualified access is required because the bare case names (`Primary`/`Secondary`) otherwise collide with the existing `ButtonIntent` cases in this namespace; consumers write `PointerButton.Primary`.

PointerDiagnostic

A diagnostic emitted when a pointer event could not be resolved to a control, carrying the reason code, a human-readable message, the candidate control (if any), and the pointer coordinates (FR-010).

PointerDiagnosticCode

Reason a pointer event could not be resolved to a current control (FR-010).

PointerInteraction

Consumer-facing, control-addressed interactions emitted in order by update.

PointerMsg

Internal transition input derived from a PointerSample.

PointerOrigin

Where a consumer-facing interaction originated (FR-011: distinguish from keyboard).

PointerPhase

The kind of raw pointer sample fed into coordination. Qualified access is required because the bare case names (`Moved`/`Pressed`/`Released`) otherwise collide with the `VisualState` cases in this namespace; consumers write `PointerPhase.Moved`.

PointerSample

Host-independent input value. Consumers build this from ViewerEvent (or any source), applying the same device-pixel scaling / pixel-snap policy already applied to layout so X/Y share the control-bounds coordinate space.

PointerState

Durable coordination state (the MVU Model), owned alongside ControlRuntimeModel.

PressCandidate

A press in flight for a single button (the click-or-drag candidate).

ProgressBar

Builders for the `ProgressBar` control — a horizontal fill showing completion of a task.

RadioGroup

Builders for the `RadioGroup` control — a set of mutually-exclusive options, one selected at a time.

ResolvedStyle

Resolved paint and typography for a control (`ResolvedStyle`): `Foreground`, `Fill`, `Stroke`/`StrokeWidth`, and `FontFamily`/`FontSize`/`FontWeight`, produced by `Style.resolve`. Feature 093 (E3) — the per-control output of style resolution: the concrete paint/typography the migrated kinds apply. A FLAT record so the fixed precedence is last-writer-wins per field and the parity proof is a plain structural record comparison. Geometry is NOT here — the resolver governs paint/typography only; geometry stays computed as today (data-model R3). Declared before `Theme` so the shared field names (`Foreground`/`FontFamily`/`FontSize`) resolve to `Theme` for unannotated `theme.*` accesses; produced by `Style.resolve`.

RichText

Builders for styled rich-text `RichTextRun`/`RichTextBlock` values and their lowering to a `Control`.

RichTextBlock

An ordered sequence of `Runs` with optional `MaxWidth`, clipping, effects, and accessibility metadata, forming a layout unit.

RichTextMeasurement

The measured layout of a `RichTextBlock`: `Width`, `Height`, `LineCount`, and any measurement diagnostics.

RichTextRun

A single span of `Text` carrying one `RichTextStyle`, the atomic unit composed into a `RichTextBlock`.

RichTextStyle

The visual styling of a `RichTextRun`: font family/size, `Weight`, foreground/background colors, underline, and italic.

RichTextWeight

The font weight applied to a `RichTextRun`: `Regular`, `Medium`, or `Bold`.

ScatterPlot

Scatter-plot control rendering each `ChartSeries` as discrete points; author it through the typed `Props` front door.

Separator

Builders for the `Separator` control — a thin divider rule between adjacent content.

Slider

Builders for the `Slider` control — a draggable thumb selecting a continuous value along a track.

Spinner

Builders for the `Spinner` control — an indeterminate busy/loading indicator.

Stack

Builders for the `Stack` container — lays its children single-file along one axis (vertical by default; see `Stack.orientation`).

StandardAttributeName

StandardAttributeValue<'msg>

Schema-facing attribute value (`StandardAttributeValue`): a typed union over the primitive shapes an attribute may carry — `StandardText`/`StandardBool`/`StandardFloat`, a `StandardStringList`, a `StandardMessage`/`StandardEvent` payload, or `StandardUntyped`.

StandardControlKind

StandardEventKind

Style

Feature 093 (E3) — the single, pure, total, deterministic state→style resolver that replaces procedural per-kind styling for the migrated controls. No selector matching, no specificity algebra, no cross-control cascade (permanent roadmap non-goals).

StyleClass

One attached style class (`StyleClass`): a typed `Variant` wrapping a `StyleVariant`, or a free-form `Custom` consumer-defined class name. Feature 093 (E3): one attached-class entry — either a typed StyleVariant or a free-form, consumer-defined class. A control carries a StyleClass list whose list position IS the attach order the resolver folds left-to-right (FR-001, FR-003).

StyleVariant

Switch

Builders for the `Switch` control — a sliding on/off toggle (the track-and-thumb form of a boolean).

TabOrder

The deterministic single tab order over a view's focusable controls (FR-001). Stops are in traversal order: FocusOrder ascending, None last, document-order tiebreak.

Tabs

Builders for the `Tabs` control — a row of tab headers selecting one active page.

TextArea

Builders for the `TextArea` control — a multi-line editable text field (the wrapping counterpart to `TextBox`).

TextBlock

Builders for the `TextBlock` control — a multi-line, wrapping run of body text.

TextBox

Builders for the `TextBox` control — a single-line editable text field.

TextInput

MVU text-field component covering caret, selection, IME composition, clipboard, and validation.

TextInputEffect

A side effect raised by `TextInput.update`: a clipboard read request, a committed-text notification, or a reported diagnostic.

TextInputMode

Whether a `TextInputModel` accepts a `SingleLine` or `MultiLine` of text.

TextInputModel

The MVU state of a text field: committed vs. draft text, `CaretIndex`, `Selection`, in-flight `Composition`, `Validation`, and focus.

TextInputMsg

An input message driving `TextInput.update`, e.g. `Focus`, `InsertText`, `MoveCaret`, `Commit`, `Cancel`, or composition events.

TextSelection

A selected character range (`Start`..`End`) within a `TextInputModel`.

Theme (Module)

Theme (Type)

Design-token palette and metrics (`Theme`): the named color roles (`Foreground`/`Background`/`Accent`/`Danger`/`Muted`), typography (`FontFamily`/`FontSize`), and layout metrics (`Density`/`CornerRadius`/`ContrastRequiredRatio`).

Toast

Builders for the `Toast` control — a brief, auto-dismissing notification banner.

Toolbar

Builders for the `Toolbar` container — a horizontal band of command controls (buttons, icons, separators).

Tooltip

Builders for the `Tooltip` control — a transient hover hint floating over content.

ValidationMessage

Builders for the `ValidationMessage` control — inline error/hint text shown beneath a field.

ValidationState

Validation status of an input control (`ValidationState`): `Valid`, `Invalid` with an error message, or `Pending` with an in-progress message.

VisibleRange

The slice of a virtualized list currently realized: `FirstIndex`/`Count` within `Total`.

VisualState

Interaction/render state of a control (`VisualState`) consumed by the style resolver: `Normal`, `Disabled`, `Hover`, `Pressed`, `Focused`, `Selected`, `Loading`, or a `Validation`-wrapped `ValidationState`.

Widget

The typed-tree lowering bridge: `ofControl`/`toControl` convert to and from the legacy IR, and `render` paints a `Widget<'msg>`.

Widget<'msg>

Opaque public return type of every typed `view`. Wraps the lowered `Control<'msg>` IR. The internal representation (`{ Lowered: Control<'msg> }`) stays in the implementation — Principle II. Additive-only: nothing in the existing public surface changes.

Wrap

Builders for the `Wrap` container — flows its children along an axis, wrapping to the next line when they overflow.

Type something to start searching.