{"id":"language--yui-surfaces-layout","name":"Surfaces, layouts, and widgets","owner":"yeho","package":"language","kind":"language","signature":"surface Name { ... }\ncolumn Name { ... }\nrow Name { ... }\nWidgetKind Name { property = value }","description":"A surface is the root of an authored interface. Layout containers such as column, row, grid, stack, dock, overlay, and panel organize semantic widgets without turning the file into pixel-by-pixel drawing code.","context":"Start with the smallest surface and one clear layout container. Add nested layout only when it expresses a real visual or interaction relationship.","parameters":[],"returns":"","members":[],"tags":["column","complete-program","cpu","language","layout","panel","row","surface","windows","yeho","yui","yui-start"],"updated":"2026-09-09","source":{"repository":"yeho","path":"docs/teaching/first-yui-app.md; packages/frontend/yui/widget-definitions.inc"},"status":"candidate","notes":["The compiler validates widget names, properties, bindings, commands, and source spans before rendering.","Programmatic definitions and .yui documents lower to the same typed widget model and retained scene."],"examples":[{"id":"settings","title":"Complete native settings application","description":"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.","code":"using window\nusing time\nusing input.keyboard\nusing input.mouse\nusing ui\nusing frontend.yui\nusing frontend.yui.host.window\nusing frontend.yui.host.windows\n\nApplySettingsDomainAction(yuiAuthoredInteractionRuntime interaction, yuiAuthoredAction action) returns yuiAuthoredInteractionRuntime\n{\n    if !action.handled\n    {\n        return interaction\n    }\n    if action.command == \"settings.toggleCompact\" and !action.stateChanged\n    {\n        interaction.Activate(\"SettingsStudio.Content.Preferences.Compact\", \"\", \"shortcut\")\n    }\n    else if action.command == \"settings.toggleUpdates\" and !action.stateChanged\n    {\n        interaction.Activate(\"SettingsStudio.Content.Preferences.Updates\", \"\", \"shortcut\")\n    }\n    else if action.command == \"settings.save\"\n    {\n        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\")))\n    }\n    return interaction\n}\n\nSettingsAddDirtyOwner(list of text owners, text ownerId) returns list of text\n{\n    if Text.Length(ownerId) == 0 { return owners }\n    for existing in owners\n    {\n        if existing == ownerId { return owners }\n    }\n    owners.Add(ownerId)\n    return owners\n}\n\nSettingsHasDirtyOwner(list of text owners, text ownerId) returns bool\n{\n    for existing in owners\n    {\n        if existing == ownerId { return true }\n    }\n    return false\n}\n\nOpenWindow(\"YUI authored settings\", 1120, 760)\nwindowHandle mainWindow = CreateWindowHandle(1)\nyuiWindowsHostInputAdapter hostInput = CreateYuiWindowsHostInputAdapter(mainWindow)\nyuiAuthoredInteractionRuntime interaction = CreateYuiAuthoredInteractionRuntime(BuildSettingsStudioYuiRuntime(), \"settings.surface\", 6)\nyuiThemeDefinition theme = CreateYuiModernDarkTheme()\nbool tabWasDown = false\nbool leftWasDown = false\nbool rightWasDown = false\nbool upWasDown = false\nbool downWasDown = false\nbool enterWasDown = false\nbool spaceWasDown = false\nbool updatesWasDown = false\nbool saveWasDown = false\nbool escapeWasDown = false\n\nif !interaction.AddShortcut(CreateYuiCommandBinding(\"settings-updates\", \"\", \"Ctrl+U\", \"settings.toggleUpdates\", \"settings\")) or !interaction.AddShortcut(CreateYuiCommandBinding(\"settings-save\", \"\", \"Ctrl+S\", \"settings.save\", \"settings\"))\n{\n    Console.Error(interaction.diagnostic)\n}\n\nConsole.Log(interaction.authored.RenderReport())\nConsole.Log(interaction.authored.RenderAccessibilityReport())\nConsole.Log(\"authored-settings-controls: mouse=focus/activate; Tab/arrows=focus; Enter/Space=activate; Ctrl+U=updates; Ctrl+S=save; Escape=close\")\n\nyuiCanvasViewport viewport = CreateYuiFluidCanvasViewport(1120, 760)\nyuiAuthoredApplicationLayoutPlan plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)\ninteraction.SyncLayout(plan.placements)\nyuiDisplayList display = BuildYuiAuthoredApplicationDisplayList(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)\n// Authored applications discover their window target's color capability from\n// the live graphics provider. `BuildYuiAuthoredApplicationComposition` is a\n// convenience wrapper that declares the legacy encoded-sRGB profile as a\n// constant, which does not present on a provider that enforces sRGB; the\n// `ForTarget` seam exists precisely so a host can supply the real one.\nAuthoredWindowTarget(int width, int height) returns yuiRenderTarget\n{\n    int targetWidth = width\n    int targetHeight = height\n    if targetWidth <= 0 { targetWidth = 1 }\n    if targetHeight <= 0 { targetHeight = 1 }\n    return CreateCurrentYuiCanvasWindowTargetV1(\"main\", targetWidth, targetHeight, \"surface.canvas\")\n}\n\nBuildAuthoredCompositionForCurrentProvider(yuiAuthoredRuntime runtime, yuiAuthoredApplicationLayoutPlan plan, yuiDisplayList display) returns yuiCompositionPlan\n{\n    yuiRenderTarget target = AuthoredWindowTarget(plan.width, plan.height)\n    return BuildYuiAuthoredApplicationCompositionForTarget(runtime, plan, display, target)\n}\n\nyuiCompositionPlan composition = BuildAuthoredCompositionForCurrentProvider(interaction.authored, plan, display)\nyuiRenderExecution headless = ExecuteYuiHeadlessRenderer(display, composition)\nyuiRenderExecution canvasModel = ExecuteYuiCanvasDisplayList(display, composition, false)\nbool rendererEquivalent = headless.StructureEquivalent(canvasModel)\nConsole.Log(RenderYuiCanvasDisplayListAdapterContract())\nConsole.Log(RenderYuiAuthoredDisplayListReport(interaction.authored, display, composition))\nConsole.Log(Text.Format(\"authored-settings-renderer-parity: equivalent={0}\", rendererEquivalent))\nif headless.diagnostic != \"ok\" or canvasModel.diagnostic != \"ok\" or !rendererEquivalent\n{\n    Process.Exit(41)\n}\nyuiVisualResolution retainedBackground = theme.Resolve(\"surface.canvas\", \"yeho-yui-authored-settings\")\nyuiAuthoredRetainedScheduler scheduler = SeedYuiAuthoredRetainedScheduler(interaction.authored, plan, display, \"settings.initial\")\nscheduler.ConfigureLowering(interaction.authored, theme)\nyuiRetainedFramePlan initialRetainedPlan = scheduler.cache.Plan()\nyuiPersistentCanvasExecutionV1 retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, initialRetainedPlan, true, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, \"settings.initial\")\nbool initialPresented = scheduler.diagnostic == \"ok\" and retainedExecution.diagnostic == \"ok\" and retainedExecution.presented\nConsole.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))\nif !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\n{\n    Process.Exit(42)\n}\n\nint started = MonotonicMicroseconds()\nbool smokeClose = YuiSmokeCloseRequested()\nbool verificationEvidenceRequired = Environment.Get(\"YEHO_YUI_AUTHORED_SETTINGS_VERIFY\") == \"1\"\nint previousWidth = viewport.designWidth\nint previousHeight = viewport.designHeight\ntext previousHoverNodeId = interaction.input.hoverNodeId\ntext previousPressedNodeId = interaction.input.pressedNodeId\ntext previousFocusedNodeId = interaction.focus.focusedNodeId\nbool observedDirtyPresent = false\nbool observedIdleSkip = false\nbool observedAuthoredOwnerLocal = false\nbool observedIdleZero = false\nbool verificationMutationInjected = false\nint interactionMutationRevision = 1000000\nint evidenceBindingsScanned = 0\nint evidenceOwnersLowered = 0\nint evidenceRebuilt = 0\nint evidenceReused = 0\nint evidenceDamage = 0\nint evidenceReplay = 0\nbool evidenceRedraw = false\nbool evidencePresent = false\nbool running = true\nbool closeRequested = false\nwhile running and WindowOpen()\n{\n    interaction.authored.BeginMutationBatch()\n    viewport = CreateYuiFluidCanvasViewport(1120, 760)\n    bool sizeChanged = viewport.designWidth != previousWidth or viewport.designHeight != previousHeight\n    if sizeChanged\n    {\n        plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)\n        interaction.SyncLayout(plan.placements)\n    }\n\n    if verificationEvidenceRequired and observedIdleSkip and !verificationMutationInjected\n    {\n        yuiAuthoredAction verificationAction = interaction.Activate(\"SettingsStudio.Content.Preferences.Updates\", \"\", \"verification\")\n        interaction = ApplySettingsDomainAction(interaction, verificationAction)\n        verificationMutationInjected = verificationAction.stateChanged\n    }\n\n    int sourceX = YuiViewportSourceX(viewport, MouseX())\n    int sourceY = YuiViewportSourceY(viewport, MouseY())\n    yuiAuthoredInteractionResult pointerMove = interaction.HandlePointer(\"move\", \"mouse.primary\", sourceX, sourceY)\n    yuiWindowsHostInputEvent hostEvent = hostInput.Poll()\n    if hostEvent.changed and hostEvent.PointerEdge()\n    {\n        int eventSourceX = YuiViewportSourceX(viewport, hostEvent.pointer.localX)\n        int eventSourceY = YuiViewportSourceY(viewport, hostEvent.pointer.localY)\n        text pointerId = Text.Format(\"pointer.{0}\", hostEvent.pointer.pointerId)\n        if hostEvent.kind == \"pointer-down\"\n        {\n            yuiAuthoredInteractionResult pointerDown = interaction.HandlePointer(\"down\", pointerId, eventSourceX, eventSourceY)\n        }\n        else if hostEvent.kind == \"pointer-up\"\n        {\n            yuiAuthoredInteractionResult pointerUp = interaction.HandlePointer(\"up\", pointerId, eventSourceX, eventSourceY)\n            interaction = ApplySettingsDomainAction(interaction, pointerUp.action)\n        }\n        else if hostEvent.kind == \"pointer-cancel\"\n        {\n            yuiAuthoredInteractionResult pointerCancel = interaction.HandlePointer(\"cancel\", pointerId, eventSourceX, eventSourceY)\n        }\n    }\n\n    bool tabDown = IsKeyDown(\"tab\")\n    bool leftDown = IsKeyDown(\"left\")\n    bool rightDown = IsKeyDown(\"right\")\n    bool upDown = IsKeyDown(\"up\")\n    bool downDown = IsKeyDown(\"down\")\n    bool enterDown = IsKeyDown(\"enter\")\n    bool spaceDown = IsKeyDown(\"space\")\n    bool updatesDown = hostEvent.controlDown and IsKeyDown(\"u\")\n    bool saveDown = hostEvent.controlDown and IsKeyDown(\"s\")\n    bool escapeDown = IsKeyDown(\"escape\")\n    if tabDown and !tabWasDown\n    {\n        text tabKey = \"tab\"\n        if hostEvent.shiftDown\n        {\n            tabKey = \"shift+tab\"\n        }\n        yuiAuthoredInteractionResult tabAction = interaction.HandleKey(tabKey, \"\")\n    }\n    else if leftDown and !leftWasDown\n    {\n        yuiAuthoredInteractionResult leftAction = interaction.HandleKey(\"left\", \"\")\n    }\n    else if rightDown and !rightWasDown\n    {\n        yuiAuthoredInteractionResult rightAction = interaction.HandleKey(\"right\", \"\")\n    }\n    else if upDown and !upWasDown\n    {\n        yuiAuthoredInteractionResult upAction = interaction.HandleKey(\"up\", \"\")\n    }\n    else if downDown and !downWasDown\n    {\n        yuiAuthoredInteractionResult downAction = interaction.HandleKey(\"down\", \"\")\n    }\n    else if enterDown and !enterWasDown\n    {\n        yuiAuthoredInteractionResult enterAction = interaction.HandleKey(\"enter\", \"\")\n        interaction = ApplySettingsDomainAction(interaction, enterAction.action)\n    }\n    else if spaceDown and !spaceWasDown\n    {\n        yuiAuthoredInteractionResult spaceAction = interaction.HandleKey(\"space\", \"\")\n        interaction = ApplySettingsDomainAction(interaction, spaceAction.action)\n    }\n    else if updatesDown and !updatesWasDown\n    {\n        yuiAuthoredInteractionResult updatesAction = interaction.HandleKey(\"shortcut\", \"Ctrl+U\")\n        interaction = ApplySettingsDomainAction(interaction, updatesAction.action)\n    }\n    else if saveDown and !saveWasDown\n    {\n        yuiAuthoredInteractionResult saveAction = interaction.HandleKey(\"shortcut\", \"Ctrl+S\")\n        interaction = ApplySettingsDomainAction(interaction, saveAction.action)\n    }\n    else if escapeDown and !escapeWasDown\n    {\n        yuiAuthoredInteractionResult escapeAction = interaction.HandleKey(\"escape\", \"\")\n        closeRequested = true\n    }\n    tabWasDown = tabDown\n    leftWasDown = leftDown\n    rightWasDown = rightDown\n    upWasDown = upDown\n    downWasDown = downDown\n    enterWasDown = enterDown\n    spaceWasDown = spaceDown\n    updatesWasDown = updatesDown\n    saveWasDown = saveDown\n    escapeWasDown = escapeDown\n\n    bool authoredLayoutDirty = false\n    for receipt in interaction.authored.dirtyReceipts\n    {\n        if receipt.scope == \"layout\" { authoredLayoutDirty = true }\n    }\n    if authoredLayoutDirty and !sizeChanged\n    {\n        plan = ResolveYuiAuthoredApplicationLayout(interaction.authored, 0, 0, viewport.designWidth, viewport.designHeight)\n        interaction.SyncLayout(plan.placements)\n    }\n    bool hoverChanged = interaction.input.hoverNodeId != previousHoverNodeId\n    bool pressedChanged = interaction.input.pressedNodeId != previousPressedNodeId\n    bool focusChanged = interaction.focus.focusedNodeId != previousFocusedNodeId\n    bool fullReseed = sizeChanged or authoredLayoutDirty\n    if fullReseed\n    {\n        display = BuildYuiAuthoredApplicationDisplayList(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)\n        composition = BuildAuthoredCompositionForCurrentProvider(interaction.authored, plan, display)\n        headless = ExecuteYuiHeadlessRenderer(display, composition)\n        canvasModel = ExecuteYuiCanvasDisplayList(display, composition, false)\n        rendererEquivalent = rendererEquivalent and headless.StructureEquivalent(canvasModel)\n        scheduler = SeedYuiAuthoredRetainedScheduler(interaction.authored, plan, display, \"settings.resize-reseed\")\n        scheduler.ConfigureLowering(interaction.authored, theme)\n        yuiRetainedFramePlan reseedPlan = scheduler.cache.Plan()\n        retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, reseedPlan, true, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, \"settings.resize-reseed\")\n        observedDirtyPresent = observedDirtyPresent or retainedExecution.presented\n        if headless.diagnostic != \"ok\" or canvasModel.diagnostic != \"ok\" or scheduler.diagnostic != \"ok\" or retainedExecution.diagnostic != \"ok\" or !retainedExecution.presented or !rendererEquivalent\n        {\n            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))\n            Process.Exit(43)\n        }\n    }\n    else\n    {\n        if !scheduler.BeginTick(interaction.authored, \"settings.owner-update\")\n        {\n            Console.Error(scheduler.diagnostic)\n            Process.Exit(43)\n        }\n        list of text scheduledVisualOwners = []\n        int authoredReceiptCount = interaction.authored.dirtyReceipts.count\n        if !scheduler.ApplyDirtyBatch(interaction.authored, theme, plan, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)\n        {\n            Console.Error(scheduler.diagnostic)\n            Process.Exit(43)\n        }\n        for receipt in interaction.authored.dirtyReceipts\n        {\n            if receipt.scope != \"semantic\"\n            {\n                scheduledVisualOwners = SettingsAddDirtyOwner(scheduledVisualOwners, receipt.ownerId)\n            }\n        }\n        if authoredReceiptCount > 0\n        {\n            yuiRetainedFramePlan authoredOnlyPlan = scheduler.cache.Plan()\n            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\n            evidenceBindingsScanned = scheduler.changedBindingsScanned\n            evidenceOwnersLowered = scheduler.ownersLowered\n            evidenceRebuilt = authoredOnlyPlan.rebuiltOwners\n            evidenceReused = authoredOnlyPlan.reusedOwners\n            evidenceDamage = authoredOnlyPlan.damageRegionCount\n            evidenceReplay = authoredOnlyPlan.replayedCommands\n            evidenceRedraw = authoredOnlyPlan.redraw\n        }\n        list of text interactionDirtyOwners = []\n        if hoverChanged\n        {\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousHoverNodeId)\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.input.hoverNodeId)\n        }\n        if pressedChanged\n        {\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousPressedNodeId)\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.input.pressedNodeId)\n        }\n        if focusChanged\n        {\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, previousFocusedNodeId)\n            interactionDirtyOwners = SettingsAddDirtyOwner(interactionDirtyOwners, interaction.focus.focusedNodeId)\n        }\n        for ownerId in interactionDirtyOwners\n        {\n            if scheduler.cache.IndexOf(ownerId) >= 0 and !SettingsHasDirtyOwner(scheduledVisualOwners, ownerId)\n            {\n                interactionMutationRevision = interactionMutationRevision + 1\n                yuiAuthoredDirtyReceipt interactionReceipt = CreateYuiAuthoredDirtyReceipt(ownerId, \"interaction.visual\", \"paint\", interactionMutationRevision, \"settings.interaction\")\n                if !scheduler.ApplyReceipt(interaction.authored, theme, plan, interactionReceipt, interaction.input.hoverNodeId, interaction.input.pressedNodeId, interaction.focus.focusedNodeId)\n                {\n                    Console.Error(scheduler.diagnostic)\n                    Process.Exit(43)\n                }\n                scheduledVisualOwners = SettingsAddDirtyOwner(scheduledVisualOwners, ownerId)\n            }\n        }\n        yuiRetainedFramePlan retainedPlan = scheduler.cache.Plan()\n        retainedExecution = ExecuteYuiPersistentCanvasStoredRetainedPlanV1(scheduler.resourceStore, retainedPlan, false, retainedBackground.token.colorValue.red, retainedBackground.token.colorValue.green, retainedBackground.token.colorValue.blue, \"settings.owner-update\")\n        if retainedExecution.diagnostic != \"ok\"\n        {\n            Console.Error(Text.Format(\"authored-settings-retained-error: {0}\", retainedExecution.diagnostic))\n            Process.Exit(43)\n        }\n        if retainedPlan.present\n        {\n            observedDirtyPresent = observedDirtyPresent or retainedExecution.presented\n        }\n        if authoredReceiptCount > 0 { evidencePresent = retainedExecution.presented }\n        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\n        {\n            observedIdleSkip = true\n            observedIdleZero = true\n        }\n    }\n    previousWidth = viewport.designWidth\n    previousHeight = viewport.designHeight\n    previousHoverNodeId = interaction.input.hoverNodeId\n    previousPressedNodeId = interaction.input.pressedNodeId\n    previousFocusedNodeId = interaction.focus.focusedNodeId\n    int elapsed = MonotonicMicroseconds() - started\n    bool verificationClose = verificationEvidenceRequired and elapsed >= 3000000\n    if closeRequested or verificationClose or smokeClose and elapsed >= YuiSmokeCloseAfterMicroseconds()\n    {\n        running = false\n        CloseWindow()\n    }\n}\nConsole.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))\nConsole.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))\nConsole.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))\nif !initialPresented or !rendererEquivalent or retainedExecution.diagnostic != \"ok\" or (verificationEvidenceRequired and (!verificationMutationInjected or !observedDirtyPresent or !observedIdleSkip or !observedAuthoredOwnerLocal or !observedIdleZero))\n{\n    Process.Exit(44)\n}\n","manifest":"manifestVersion = \"2\"\npackage = \"api.example.yui_settings\"\nversion = \"0.1.0\"\nlanguageEdition = \"yeho-core-2026.1\"\n\n[app]\nkind = \"frontend\"\nconsole = false\n\n[frontend]\nkind = \"yui\"\nentry = \"ui/app.yui\"\n\n[[dependencies]]\npackage = \"frontend.yui\"\nversion = \"0.2.0\"\npath = \"../../../yeho/packages/frontend/yui\"\n\n[[dependencies]]\npackage = \"frontend.yui.host.window\"\nversion = \"0.2.0\"\npath = \"../../../yeho/packages/frontend/yui/host/window\"\n\n[[dependencies]]\npackage = \"frontend.yui.host.windows\"\nversion = \"0.2.0\"\npath = \"../../../yeho/packages/frontend/yui/host/windows\"\n\n[[dependencies]]\npackage = \"graphics.canvas\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/graphics/canvas\"\n\n[[dependencies]]\npackage = \"graphics.image\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/graphics/image\"\n\n[[dependencies]]\npackage = \"graphics.image.processing\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/graphics/image/processing\"\n\n[[dependencies]]\npackage = \"graphics.text\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/graphics/text\"\n\n[[dependencies]]\npackage = \"graphics.text.windows\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/graphics/text/windows\"\n\n[[dependencies]]\npackage = \"host.ui_services\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/host/ui_services\"\n\n[[dependencies]]\npackage = \"host.windows\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/host/windows\"\n\n[[dependencies]]\npackage = \"input.keyboard\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/input/keyboard\"\n\n[[dependencies]]\npackage = \"input.mouse\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/input/mouse\"\n\n[[dependencies]]\npackage = \"input.text\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/input/text\"\n\n[[dependencies]]\npackage = \"time\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/time\"\n\n[[dependencies]]\npackage = \"ui\"\nversion = \"0.2.0\"\npath = \"../../../yeho/packages/ui\"\n\n[[dependencies]]\npackage = \"window\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/window\"\n\n[[dependencies]]\npackage = \"window.multi\"\nversion = \"0.1.0\"\npath = \"../../../yeho/packages/window/multi\"\n","files":{"ui/app.yui":"import \"components/settings-section.yui\"\n\ncommands SettingsCommands {\n    settings.save = command\n    settings.toggleCompact = command\n    settings.toggleUpdates = command\n}\n\nstate SettingsState {\n    profile.name = \"Ari Morgan\"\n    profile.email = \"ari@starfish.local\"\n    preferences.compact = false\n    preferences.updates = true\n}\n\nslots SettingsSlots {\n    settings.profile = one\n    settings.preferences = one\n    settings.about = one\n}\n\nsurface SettingsStudio {\n    label = \"Settings Studio\"\n    theme = modern-dark\n    density = comfortable\n    layout = column\n\n    column Content {\n        spacing = 12\n        label Eyebrow { text = \"YEHO / YUI\" }\n        label Title { text = \"A calmer way to build software\" }\n        label Subtitle { text = \"This entire screen is lowered from modular .yui into one shared runtime tree.\" }\n\n        SettingsSection Profile {\n            heading = \"Profile\"\n            theme = modern-dark\n            slot = settings.profile\n            slot Content {\n                textBox Name { label = \"Display name\" value = profile.name }\n                textBox Email { label = \"Email\" value = profile.email }\n            }\n        }\n\n        SettingsSection Preferences {\n            heading = \"Preferences\"\n            tone = \"interactive\"\n            slot = settings.preferences\n            slot Content {\n                toggle Compact { text = \"Compact interface\" checked = preferences.compact command = settings.toggleCompact }\n                toggle Updates { text = \"Experimental updates\" checked = preferences.updates command = settings.toggleUpdates }\n            }\n        }\n\n        SettingsSection About {\n            heading = \"Runtime\"\n            slot = settings.about\n            slot Content {\n                label Backend { text = \"Kyber-ready, renderer-independent component state\" }\n            }\n        }\n\n        button Save { text = \"Save settings\" command = settings.save onClick = settings.save }\n    }\n}\n","ui/components/settings-section.yui":"component SettingsSection {\n    property heading { type = text required = true }\n    property tone { type = text default = \"quiet\" }\n    slot Content { required = true }\n}\n"},"tags":["cpu","yui","windows","complete-program"],"run":"cpu-oracle","verification":"type checked","sha256":"754424d950eded80192658f618677f8da6859edde0e109a536f94dea2464bf32","checked":"2026-09-09","diagnostic":"","observedOutput":null,"checkedBackend":null}],"searchTerms":[],"url":"https://demonhunterlabs.com/academy/api?item=language--yui-surfaces-layout","json":"https://demonhunterlabs.com/reference/items/language--yui-surfaces-layout.json","markdown":"https://demonhunterlabs.com/reference/text/language--yui-surfaces-layout.md"}
