language · language ·
One semantic tree for interaction and accessibility
The same semantic nodes drive pointer and keyboard interaction, focus, accessible roles and names, visible state, bounds, commands, and custom rendering state.
Give every interactive control a clear semantic widget kind, visible label, deterministic command, and explicit disabled, selected, required, invalid, busy, or empty state when it applies.
label = "Accessible name"
required = true
disabled = state.path
command = action.pathStatus: candidate
Complete native settings application
A maintained YUI application with typed settings state, commands, controls, and a reusable component. All source files are included; Windows runtime qualification remains separate from a type check.
cpu · yui · windows · complete-program · type checked
using window
using time
using input.keyboard
using input.mouse
using ui
using frontend.yui
using frontend.yui.host.window
using frontend.yui.host.windows
ApplySettingsDomainAction(yuiAuthoredInteractionRuntime interaction, yuiAuthoredAction action) returns yuiAuthoredInteractionRuntime
{
if !action.handled
{
return interaction
}
if action.command == "settings.toggleCompact" and !action.stateChanged
{
interaction.Activate("SettingsStudio.Content.Preferences.Compact", "", "shortcut")
}
else if action.command == "settings.toggleUpdates" and !action.stateChanged
{
interaction.Activate("SettingsStudio.Content.Preferences.Updates", "", "shortcut")
}
else if action.command == "settings.save"
{
Console.Log(Text.Format("settings.save: name={0}; compact={1}; updates={2}", interaction.authored.StateValue("profile.name"), interaction.authored.StateValue("preferences.compact"), interaction.authored.StateValue("preferences.updates")))
}
return interaction
}
SettingsAddDirtyOwner(list of text owners, text ownerId) returns list of text
{
if Text.Length(ownerId) == 0 { return owners }
for existing in owners
{
if existing == ownerId { return owners }
}
owners.Add(ownerId)
return owners
}
SettingsHasDirtyOwner(list of text owners, text ownerId) returns bool
{
for existing in owners
{
if existing == ownerId { return true }
}
return false
}
OpenWindow("YUI authored settings", 1120, 760)
windowHandle mainWindow = CreateWindowHandle(1)
yuiWindowsHostInputAdapter hostInput = CreateYuiWindowsHostInputAdapter(mainWindow)
yuiAuthoredInteractionRuntime interaction = CreateYuiAuthoredInteractionRuntime(BuildSettingsStudioYuiRuntime(), "settings.surface", 6)
yuiThemeDefinition theme = CreateYuiModernDarkTheme()
bool tabWasDown = false
bool leftWasDown = false
bool rightWasDown = false
bool upWasDown = false
bool downWasDown = false
bool enterWasDown = false
bool spaceWasDown = false
bool updatesWasDown = false
bool saveWasDown = false
bool escapeWasDown = false
if !interaction.AddShortcut(CreateYuiCommandBinding("settings-updates", "", "Ctrl+U", "settings.toggleUpdates", "settings")) or !interaction.AddShortcut(CreateYuiCommandBinding("settings-save", "", "Ctrl+S", "settings.save", "settings"))
{
Console.Error(interaction.diagnostic)
}
Console.Log(interaction.authored.RenderReport())
Console.Log(interaction.authored.RenderAccessibilityReport())
Console.Log("authored-settings-controls: mouse=focus/activate; Tab/arrows=focus; Enter/Space=activate; Ctrl+U=updates; Ctrl+S=save; Escape=close")
yuiCanvasViewport viewport = CreateYuiFluidCanvasViewport(1120, 760)
yuiAuthoredApplicationLayoutPlan plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)
interaction.SyncLayout(plan.placements)
yuiDisplayList display = BuildYuiAuthoredApplicationDisplayList(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)
// Authored applications discover their window target's color capability from
// the live graphics provider. `BuildYuiAuthoredApplicationComposition` is a
// convenience wrapper that declares the legacy encoded-sRGB profile as a
// constant, which does not present on a provider that enforces sRGB; the
// `ForTarget` seam exists precisely so a host can supply the real one.
AuthoredWindowTarget(int width, int height) returns yuiRenderTarget
{
int targetWidth = width
int targetHeight = height
if targetWidth <= 0 { targetWidth = 1 }
if targetHeight <= 0 { targetHeight = 1 }
return CreateCurrentYuiCanvasWindowTargetV1("main", targetWidth, targetHeight, "surface.canvas")
}
BuildAuthoredCompositionForCurrentProvider(yuiAuthoredRuntime runtime, yuiAuthoredApplicationLayoutPlan plan, yuiDisplayList display) returns yuiCompositionPlan
{
yuiRenderTarget target = AuthoredWindowTarget(plan.width, plan.height)
return BuildYuiAuthoredApplicationCompositionForTarget(runtime, plan, display, target)
}
yuiCompositionPlan composition = BuildAuthoredCompositionForCurrentProvider(interaction.authored, plan, display)
yuiRenderExecution headless = ExecuteYuiHeadlessRenderer(display, composition)
yuiRenderExecution canvasModel = ExecuteYuiCanvasDisplayList(display, composition, false)
bool rendererEquivalent = headless.StructureEquivalent(canvasModel)
Console.Log(RenderYuiCanvasDisplayListAdapterContract())
Console.Log(RenderYuiAuthoredDisplayListReport(interaction.authored, display, composition))
Console.Log(Text.Format("authored-settings-renderer-parity: equivalent={0}", rendererEquivalent))
if headless.diagnostic != "ok" or canvasModel.diagnostic != "ok" or !rendererEquivalent
{
Process.Exit(41)
}
yuiVisualResolution retainedBackground = theme.Resolve("surface.canvas", "yeho-yui-authored-settings")
yuiAuthoredRetainedScheduler scheduler = SeedYuiAuthoredRetainedScheduler(interaction.authored, plan, display, "settings.initial")
scheduler.ConfigureLowering(interaction.authored, theme)
yuiRetainedFramePlan initialRetainedPlan = scheduler.cache.Plan()
yuiPersistentCanvasExecutionV1 retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, initialRetainedPlan, true, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, "settings.initial")
bool initialPresented = scheduler.diagnostic == "ok" and retainedExecution.diagnostic == "ok" and retainedExecution.presented
Console.Log(Text.Format("authored-settings-retained-initial: owners={0}; commands={1}; rebuilt={2}; damage={3}; replay={4}; redraw={5}; present={6}; diagnostic={7}/{8}", scheduler.seededOwners, scheduler.seededCommands, initialRetainedPlan.rebuiltOwners, initialRetainedPlan.damageRegionCount, initialRetainedPlan.replayedCommands, initialRetainedPlan.redraw, retainedExecution.presented, scheduler.diagnostic, retainedExecution.diagnostic))
if !initialPresented or !YuiPersistentCanvasRetainedPlanCoversSurfaceV1(initialRetainedPlan, viewport.designWidth, viewport.designHeight) or scheduler.resourceStore.State() != "open" or scheduler.resourceStore.OwnerCount() != scheduler.seededOwners or scheduler.resourceStore.CommandCount() != scheduler.seededCommands or scheduler.resourceStore.EntryCount() == 0
{
Process.Exit(42)
}
int started = MonotonicMicroseconds()
bool smokeClose = YuiSmokeCloseRequested()
bool verificationEvidenceRequired = Environment.Get("YEHO_YUI_AUTHORED_SETTINGS_VERIFY") == "1"
int previousWidth = viewport.designWidth
int previousHeight = viewport.designHeight
text previousHoverNodeId = interaction.input.hoverNodeId
text previousPressedNodeId = interaction.input.pressedNodeId
text previousFocusedNodeId = interaction.focus.focusedNodeId
bool observedDirtyPresent = false
bool observedIdleSkip = false
bool observedAuthoredOwnerLocal = false
bool observedIdleZero = false
bool verificationMutationInjected = false
int interactionMutationRevision = 1000000
int evidenceBindingsScanned = 0
int evidenceOwnersLowered = 0
int evidenceRebuilt = 0
int evidenceReused = 0
int evidenceDamage = 0
int evidenceReplay = 0
bool evidenceRedraw = false
bool evidencePresent = false
bool running = true
bool closeRequested = false
while running and WindowOpen()
{
interaction.authored.BeginMutationBatch()
viewport = CreateYuiFluidCanvasViewport(1120, 760)
bool sizeChanged = viewport.designWidth != previousWidth or viewport.designHeight != previousHeight
if sizeChanged
{
plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)
interaction.SyncLayout(plan.placements)
}
if verificationEvidenceRequired and observedIdleSkip and !verificationMutationInjected
{
yuiAuthoredAction verificationAction = interaction.Activate("SettingsStudio.Content.Preferences.Updates", "", "verification")
interaction = ApplySettingsDomainAction(interaction, verificationAction)
verificationMutationInjected = verificationAction.stateChanged
}
int sourceX = YuiViewportSourceX(viewport, MouseX())
int sourceY = YuiViewportSourceY(viewport, MouseY())
yuiAuthoredInteractionResult pointerMove = interaction.HandlePointer("move", "mouse.primary", sourceX, sourceY)
yuiWindowsHostInputEvent hostEvent = hostInput.Poll()
if hostEvent.changed and hostEvent.PointerEdge()
{
int eventSourceX = YuiViewportSourceX(viewport, hostEvent.pointer.localX)
int eventSourceY = YuiViewportSourceY(viewport, hostEvent.pointer.localY)
text pointerId = Text.Format("pointer.{0}", hostEvent.pointer.pointerId)
if hostEvent.kind == "pointer-down"
{
yuiAuthoredInteractionResult pointerDown = interaction.HandlePointer("down", pointerId, eventSourceX, eventSourceY)
}
else if hostEvent.kind == "pointer-up"
{
yuiAuthoredInteractionResult pointerUp = interaction.HandlePointer("up", pointerId, eventSourceX, eventSourceY)
interaction = ApplySettingsDomainAction(interaction, pointerUp.action)
}
else if hostEvent.kind == "pointer-cancel"
{
yuiAuthoredInteractionResult pointerCancel = interaction.HandlePointer("cancel", pointerId, eventSourceX, eventSourceY)
}
}
bool tabDown = IsKeyDown("tab")
bool leftDown = IsKeyDown("left")
bool rightDown = IsKeyDown("right")
bool upDown = IsKeyDown("up")
bool downDown = IsKeyDown("down")
bool enterDown = IsKeyDown("enter")
bool spaceDown = IsKeyDown("space")
bool updatesDown = hostEvent.controlDown and IsKeyDown("u")
bool saveDown = hostEvent.controlDown and IsKeyDown("s")
bool escapeDown = IsKeyDown("escape")
if tabDown and !tabWasDown
{
text tabKey = "tab"
if hostEvent.shiftDown
{
tabKey = "shift+tab"
}
yuiAuthoredInteractionResult tabAction = interaction.HandleKey(tabKey, "")
}
else if leftDown and !leftWasDown
{
yuiAuthoredInteractionResult leftAction = interaction.HandleKey("left", "")
}
else if rightDown and !rightWasDown
{
yuiAuthoredInteractionResult rightAction = interaction.HandleKey("right", "")
}
else if upDown and !upWasDown
{
yuiAuthoredInteractionResult upAction = interaction.HandleKey("up", "")
}
else if downDown and !downWasDown
{
yuiAuthoredInteractionResult downAction = interaction.HandleKey("down", "")
}
else if enterDown and !enterWasDown
{
yuiAuthoredInteractionResult enterAction = interaction.HandleKey("enter", "")
interaction = ApplySettingsDomainAction(interaction, enterAction.action)
}
else if spaceDown and !spaceWasDown
{
yuiAuthoredInteractionResult spaceAction = interaction.HandleKey("space", "")
interaction = ApplySettingsDomainAction(interaction, spaceAction.action)
}
else if updatesDown and !updatesWasDown
{
yuiAuthoredInteractionResult updatesAction = interaction.HandleKey("shortcut", "Ctrl+U")
interaction = ApplySettingsDomainAction(interaction, updatesAction.action)
}
else if saveDown and !saveWasDown
{
yuiAuthoredInteractionResult saveAction = interaction.HandleKey("shortcut", "Ctrl+S")
interaction = ApplySettingsDomainAction(interaction, saveAction.action)
}
else if escapeDown and !escapeWasDown
{
yuiAuthoredInteractionResult escapeAction = interaction.HandleKey("escape", "")
closeRequested = true
}
tabWasDown = tabDown
leftWasDown = leftDown
rightWasDown = rightDown
upWasDown = upDown
downWasDown = downDown
enterWasDown = enterDown
spaceWasDown = spaceDown
updatesWasDown = updatesDown
saveWasDown = saveDown
escapeWasDown = escapeDown
bool authoredLayoutDirty = false
for receipt in interaction.authored.dirtyReceipts
{
if receipt.scope == "layout" { authoredLayoutDirty = true }
}
if authoredLayoutDirty and !sizeChanged
{
plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)
interaction.SyncLayout(plan.placements)
}
bool hoverChanged = interaction.input.hoverNodeId != previousHoverNodeId
bool pressedChanged = interaction.input.pressedNodeId != previousPressedNodeId
bool focusChanged = interaction.focus.focusedNodeId != previousFocusedNodeId
bool fullReseed = sizeChanged or authoredLayoutDirty
if fullReseed
{
display = BuildYuiAuthoredApplicationDisplayList(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)
composition = BuildAuthoredCompositionForCurrentProvider(interaction.authored, plan, display)
headless = ExecuteYuiHeadlessRenderer(display, composition)
canvasModel = ExecuteYuiCanvasDisplayList(display, composition, false)
rendererEquivalent = rendererEquivalent and headless.StructureEquivalent(canvasModel)
scheduler = SeedYuiAuthoredRetainedScheduler(interaction.authored, plan, display, "settings.resize-reseed")
scheduler.ConfigureLowering(interaction.authored, theme)
yuiRetainedFramePlan reseedPlan = scheduler.cache.Plan()
retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, reseedPlan, true, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, "settings.resize-reseed")
observedDirtyPresent = observedDirtyPresent or retainedExecution.presented
if headless.diagnostic != "ok" or canvasModel.diagnostic != "ok" or scheduler.diagnostic != "ok" or retainedExecution.diagnostic != "ok" or !retainedExecution.presented or !rendererEquivalent
{
Console.Error(Text.Format("authored-settings-renderer-error: headless={0}; canvas={1}; retained={2}/{3}; parity={4}", headless.diagnostic, canvasModel.diagnostic, scheduler.diagnostic, retainedExecution.diagnostic, rendererEquivalent))
Process.Exit(43)
}
}
else
{
if !scheduler.BeginTick(interaction.authored, "settings.owner-update")
{
Console.Error(scheduler.diagnostic)
Process.Exit(43)
}
list of text scheduledVisualOwners = []
int authoredReceiptCount = interaction.authored.dirtyReceipts.count
if !scheduler.ApplyDirtyBatch(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)
{
Console.Error(scheduler.diagnostic)
Process.Exit(43)
}
for receipt in interaction.authored.dirtyReceipts
{
if receipt.scope != "semantic"
{
scheduledVisualOwners = SettingsAddDirtyOwner(scheduledVisualOwners, receipt.ownerId)
}
}
if authoredReceiptCount > 0
{
yuiRetainedFramePlan authoredOnlyPlan = scheduler.cache.Plan()
observedAuthoredOwnerLocal = scheduler.changedBindingsScanned == interaction.authored.lastMutationBindingsScanned and scheduler.receiptsScheduled == authoredReceiptCount and scheduler.ownersLowered == interaction.authored.lastMutationOwnersAffected and scheduler.resourceValidations == 0 and scheduler.resourcePayloadComparisons == 0 and scheduler.resourceEntriesAdded == 0 and authoredOnlyPlan.touchedOwners == interaction.authored.lastMutationOwnersAffected and authoredOnlyPlan.rebuiltOwners <= scheduler.ownersLowered
evidenceBindingsScanned = scheduler.changedBindingsScanned
evidenceOwnersLowered = scheduler.ownersLowered
evidenceRebuilt = authoredOnlyPlan.rebuiltOwners
evidenceReused = authoredOnlyPlan.reusedOwners
evidenceDamage = authoredOnlyPlan.damageRegionCount
evidenceReplay = authoredOnlyPlan.replayedCommands
evidenceRedraw = authoredOnlyPlan.redraw
}
list of text interactionDirtyOwners = []
if hoverChanged
{
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousHoverNodeId)
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.input.hoverNodeId)
}
if pressedChanged
{
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousPressedNodeId)
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.input.pressedNodeId)
}
if focusChanged
{
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousFocusedNodeId)
interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.focus.focusedNodeId)
}
for ownerId in interactionDirtyOwners
{
if scheduler.cache.IndexOf(ownerId) >= 0 and !SettingsHasDirtyOwner(scheduledVisualOwners, ownerId)
{
interactionMutationRevision = interactionMutationRevision + 1
yuiAuthoredDirtyReceipt interactionReceipt = CreateYuiAuthoredDirtyReceipt(ownerId, "interaction.visual", "paint", interactionMutationRevision, "settings.interaction")
if !scheduler.ApplyReceipt(interaction.authored, theme, plan, interactionReceipt, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)
{
Console.Error(scheduler.diagnostic)
Process.Exit(43)
}
scheduledVisualOwners = SettingsAddDirtyOwner(scheduledVisualOwners, ownerId)
}
}
yuiRetainedFramePlan retainedPlan = scheduler.cache.Plan()
retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, retainedPlan, false, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, "settings.owner-update")
if retainedExecution.diagnostic != "ok"
{
Console.Error(Text.Format("authored-settings-retained-error: {0}", retainedExecution.diagnostic))
Process.Exit(43)
}
if retainedPlan.present
{
observedDirtyPresent = observedDirtyPresent or retainedExecution.presented
}
if authoredReceiptCount > 0 { evidencePresent = retainedExecution.presented }
if retainedPlan.Idle() and scheduler.changedBindingsScanned == 0 and scheduler.ownersLowered == 0 and scheduler.commandsLowered == 0 and scheduler.resourceValidations == 0 and scheduler.resourceExplicitComparisons == 0 and scheduler.resourcePayloadComparisons == 0 and scheduler.resourceAdmissions == 0 and scheduler.resourceEntriesAdded == 0 and !retainedExecution.rendered and !retainedExecution.presented
{
observedIdleSkip = true
observedIdleZero = true
}
}
previousWidth = viewport.designWidth
previousHeight = viewport.designHeight
previousHoverNodeId = interaction.input.hoverNodeId
previousPressedNodeId = interaction.input.pressedNodeId
previousFocusedNodeId = interaction.focus.focusedNodeId
int elapsed = MonotonicMicroseconds() - started
bool verificationClose = verificationEvidenceRequired and elapsed >= 3000000
if closeRequested or verificationClose or smokeClose and elapsed >= YuiSmokeCloseAfterMicroseconds()
{
running = false
CloseWindow()
}
}
Console.Log(Text.Format("authored-settings-retained-owner-evidence: bindings-scanned={0}; owners-lowered={1}; rebuilt={2}; reused={3}; damage={4}; replay={5}; redraw={6}; present={7}; owner-local={8}", evidenceBindingsScanned, evidenceOwnersLowered, evidenceRebuilt, evidenceReused, evidenceDamage, evidenceReplay, evidenceRedraw, evidencePresent, observedAuthoredOwnerLocal))
Console.Log(Text.Format("authored-settings-retained-idle-evidence: scanned=0; lowered=0; rebuilt=0; damage=0; replay=0; redraw=false; present=false; observed={0}", observedIdleZero))
Console.Log(Text.Format("authored-settings-frame-evidence: initial-present={0}; dirty-present={1}; idle-skip={2}; parity={3}; diagnostic={4}", initialPresented, observedDirtyPresent, observedIdleSkip, rendererEquivalent, retainedExecution.diagnostic))
if !initialPresented or !rendererEquivalent or retainedExecution.diagnostic != "ok" or (verificationEvidenceRequired and (!verificationMutationInjected or !observedDirtyPresent or !observedIdleSkip or !observedAuthoredOwnerLocal or !observedIdleZero))
{
Process.Exit(44)
}
project.mech
manifestVersion = "2"
package = "api.example.yui_settings"
version = "0.1.0"
languageEdition = "yeho-core-2026.1"
[app]
kind = "frontend"
console = false
[frontend]
kind = "yui"
entry = "ui/app.yui"
[[dependencies]]
package = "frontend.yui"
version = "0.2.0"
path = "../../../yeho/packages/frontend/yui"
[[dependencies]]
package = "frontend.yui.host.window"
version = "0.2.0"
path = "../../../yeho/packages/frontend/yui/host/window"
[[dependencies]]
package = "frontend.yui.host.windows"
version = "0.2.0"
path = "../../../yeho/packages/frontend/yui/host/windows"
[[dependencies]]
package = "graphics.canvas"
version = "0.1.0"
path = "../../../yeho/packages/graphics/canvas"
[[dependencies]]
package = "graphics.image"
version = "0.1.0"
path = "../../../yeho/packages/graphics/image"
[[dependencies]]
package = "graphics.image.processing"
version = "0.1.0"
path = "../../../yeho/packages/graphics/image/processing"
[[dependencies]]
package = "graphics.text"
version = "0.1.0"
path = "../../../yeho/packages/graphics/text"
[[dependencies]]
package = "graphics.text.windows"
version = "0.1.0"
path = "../../../yeho/packages/graphics/text/windows"
[[dependencies]]
package = "host.ui_services"
version = "0.1.0"
path = "../../../yeho/packages/host/ui_services"
[[dependencies]]
package = "host.windows"
version = "0.1.0"
path = "../../../yeho/packages/host/windows"
[[dependencies]]
package = "input.keyboard"
version = "0.1.0"
path = "../../../yeho/packages/input/keyboard"
[[dependencies]]
package = "input.mouse"
version = "0.1.0"
path = "../../../yeho/packages/input/mouse"
[[dependencies]]
package = "input.text"
version = "0.1.0"
path = "../../../yeho/packages/input/text"
[[dependencies]]
package = "time"
version = "0.1.0"
path = "../../../yeho/packages/time"
[[dependencies]]
package = "ui"
version = "0.2.0"
path = "../../../yeho/packages/ui"
[[dependencies]]
package = "window"
version = "0.1.0"
path = "../../../yeho/packages/window"
[[dependencies]]
package = "window.multi"
version = "0.1.0"
path = "../../../yeho/packages/window/multi"
ui/app.yui
import "components/settings-section.yui"
commands SettingsCommands {
settings.save = command
settings.toggleCompact = command
settings.toggleUpdates = command
}
state SettingsState {
profile.name = "Ari Morgan"
profile.email = "ari@starfish.local"
preferences.compact = false
preferences.updates = true
}
slots SettingsSlots {
settings.profile = one
settings.preferences = one
settings.about = one
}
surface SettingsStudio {
label = "Settings Studio"
theme = modern-dark
density = comfortable
layout = column
column Content {
spacing = 12
label Eyebrow { text = "YEHO / YUI" }
label Title { text = "A calmer way to build software" }
label Subtitle { text = "This entire screen is lowered from modular .yui into one shared runtime tree." }
SettingsSection Profile {
heading = "Profile"
theme = modern-dark
slot = settings.profile
slot Content {
textBox Name { label = "Display name" value = profile.name }
textBox Email { label = "Email" value = profile.email }
}
}
SettingsSection Preferences {
heading = "Preferences"
tone = "interactive"
slot = settings.preferences
slot Content {
toggle Compact { text = "Compact interface" checked = preferences.compact command = settings.toggleCompact }
toggle Updates { text = "Experimental updates" checked = preferences.updates command = settings.toggleUpdates }
}
}
SettingsSection About {
heading = "Runtime"
slot = settings.about
slot Content {
label Backend { text = "Kyber-ready, renderer-independent component state" }
}
}
button Save { text = "Save settings" command = settings.save onClick = settings.save }
}
}
ui/components/settings-section.yui
component SettingsSection {
property heading { type = text required = true }
property tone { type = text default = "quiet" }
slot Content { required = true }
}
Notes and source
Windows projects the semantic tree through its accessibility bridge without replacing YUI controls with native widgets.
Keyboard-only, screen-reader, high-contrast, IME, clipboard, DPI, and recovery workflows remain explicit promotion evidence rather than inferred support.
yeho/docs/yui/interaction-accessibility.md; docs/yui/text-media-i18n.md