Controls Catalog
This is the authoritative answer to "what controls exist, and what does each do?" —
every supported FS.Skia.UI.Controls control, grouped by category. Each entry links to a
detail page with prose, a usage example where one exists, a rendered preview (or an honest
note where a control cannot be previewed), and a link to its generated API reference.
The list below is generated from the single-source control catalog
(CatalogGen.catalogFacts) — the same source that drives src/Controls/catalog.yml and
src/Controls/Catalog.fs — so it can never drift from the controls the framework actually
ships. The ControlsCatalogDocsCheck gate fails if it does. To change it, edit the catalog
single source and run ./fake.sh build -t RefreshSurfaceBaselines; never hand-edit the
generated region below.
New here? Start with the Controls in the Spec Kit workflow narrative, which explains where controls are chosen, authored, and validated.
**52 supported controls**, grouped by category.Display
Control |
Purpose |
|---|---|
Static model-owned text display. |
|
Skia-specific rich text display with measurement, clipping, effects, diagnostics, and accessibility metadata. |
|
Short form label text. |
|
Image placeholder or drawing-surface reference. |
|
Named icon glyph or product symbol. |
|
Visual divider between regions. |
|
Compact status label. |
Input
Control |
Purpose |
|---|---|
Pointer and keyboard activatable command. |
|
Icon-only activatable command. |
|
Plain single-line text entry. |
|
Plain multi-line text entry. |
|
Model-owned numeric value editor. |
|
Continuous numeric value selection. |
|
On/off command with product-owned pressed state. |
|
Primary action plus a popup menu of secondary commands. |
|
Typed date entry with a popup calendar. |
|
Typed time entry with hour and minute segments. |
Selection
Control |
Purpose |
|---|---|
Boolean choice with checked state. |
|
Single selection from a visible option set. |
|
Compact Boolean setting. |
|
Single-selection list box. |
|
Multiple-selection list with model-owned selected keys. |
|
Compact selection list. |
|
Palette swatch color selection. |
Data
Control |
Purpose |
|---|---|
Bounded visible-range list display. |
|
Hierarchical item display. |
|
Table-like bounded visible-range data control with product-owned rows, selection, focus, sort, and filter metadata. |
Layout
Control |
Purpose |
|---|---|
Ordered vertical or horizontal child composition. |
|
Structured child composition. |
|
Docked region composition. |
|
Wrapping child layout. |
|
Single child with border and padding. |
|
General-purpose child surface. |
|
Scrollable child viewport. |
|
Resizable two-region layout. |
Navigation
Control |
Purpose |
|---|---|
Model-owned active page selection. |
|
Command menu selection. |
|
Contextual command menu. |
|
Compact command group. |
Overlay
Control |
Purpose |
|---|---|
Auxiliary hover/focus explanation. |
|
Modal content region. |
|
Layered child content. |
Feedback
Control |
Purpose |
|---|---|
Transient status message. |
|
Determinate progress indicator. |
|
Indeterminate progress indicator. |
|
Validation text tied to model state. |
Chart
Control |
Purpose |
|---|---|
Controls-owned line data visualization. |
|
Controls-owned bar data visualization. |
|
Controls-owned part-to-whole visualization. |
|
Controls-owned point cloud visualization. |
Graph
Control |
Purpose |
|---|---|
Controls-owned node and edge visualization. |
Custom
Control |
Purpose |
|---|---|
Product-owned wrapper; renderTree paints a labeled placeholder, not the custom Render/Draw content — build must-show geometry from primitive controls (Border/TextBlock/Stack). |