← Interface components

UI.OrbitNode

luastra/ui
UI.OrbitNode(input: Input): Node

Creates an interactive leaf, constellation destination, or bounded action with priority, optional ring hint, relationships, compact icon, status, selection, busy, and disabled semantics.

Mental model

This is a declarative node: app.render describes it again from current state, while the host matches its stable id to the existing view.

Before you use it

Add luastra/ui to this module's dependencies in luastra.json, then import it with require("luastra/ui"). The project must declare the ui.render capability. app.render must return one UI.Screen root; place this node inside that tree rather than invoking it for a hidden side effect.

How it fits

The constructor validates its fields immediately and returns a UI.Node. After app.render returns, the host reconciles that node by stable id with the current semantic DOM-based interface. Current desktop and mobile hosts package the same web artifact; native adapters are used at capability boundaries.

When to use it

Use UI.OrbitNode for every individually actionable concept in a constellation. Supply stable meaning and state; let the host select coordinates and the visible Signal, Identity, or Preview tier.

Shared parameter groups

actionsemantic

Parameters

ParameterType / valuesDescription
idlowercase path, requiredUnique node ID.
titlestring 1…160 bytes, requiredStable node identity.
descriptionstring ≤ 320 bytes?Supporting Preview content.
nodeKindconstellation | leaf | action?Semantic activation kind.
priorityinteger 1…3?Detail and placement importance; one is highest.
ringinteger 1…3?Optional authoritative ring hint.
relatedTocomponent ID[] 1…8?Neutral same-constellation relationships.
signalIconbounded icon name?Host-rendered compact Signal icon.
statusstring 1…80 bytes?Human-readable state.
statusToneneutral | active | success | warning | error?Redundant visual state treatment.
selectedboolean?Current leaf selection.
onTapaction string, requiredSemantic activation action.
paddingnone | xs | sm | md | lg | xl | responsiveAll-side inner spacing; responsive is supported only by padding. Group: Layout and surfaces.
marginnone | xs | sm | md | lg | xlAll-side outer spacing. Group: Layout and surfaces.
paddingX / paddingYnone | xs | sm | md | lg | xlAxis-specific inner spacing. Group: Layout and surfaces.
paddingTop / paddingBottom / paddingStart / paddingEndnone | xs | sm | md | lg | xlLogical side-specific inner spacing. Group: Layout and surfaces.
marginX / marginYnone | xs | sm | md | lg | xlAxis-specific outer spacing. Group: Layout and surfaces.
marginTop / marginBottom / marginStart / marginEndnone | xs | sm | md | lg | xlLogical side-specific outer spacing. Group: Layout and surfaces.
surfaceplain | card | elevated | accentBackground, border, and elevation. Group: Layout and surfaces.
widthfull | content | wideAvailable width, 720 px maximum, or 1180 px maximum. Group: Layout and surfaces.
classNamesafe string ≤ 256 bytesAdditional admitted class tokens. Group: Layout and surfaces.
labelstringAccessible name. Group: State and semantics.
hiddenbooleanVisibility state. Group: State and semantics.
disabledbooleanDisabled state. Group: State and semantics.
busybooleanaria-busy state. Group: State and semantics.

Children and layout

This component does not accept arbitrary child nodes; named parameters provide its content.

Accessibility and keyboard

The complete title, description, status, relationships, and native button semantics remain accessible at every semantic zoom tier.

Common mistakes

  • Using a single letter instead of a bounded signalIcon.
  • Encoding essential status only through statusTone color.

Returns

Node — a validated declarative UI node that becomes part of the next host-neutral render tree.

What happens next

A validated declarative node appears after it is returned as part of the current render tree.

Failures and fixes

Invalid fields, duplicate IDs, unsupported child combinations, or a missing ui.render capability fail during check, render-tree validation, or host startup.

Availability

Experimental Constellation Orbit API in 0.5.0-alpha. Verify it against the selected SDK before depending on its shape.

Focused example

UI.OrbitNode {
    id = "map/build",
    title = "Build",
    description = "Compose the interface.",
    nodeKind = "constellation",
    signalIcon = "spark",
    priority = 1,
    onTap = "open-build",
}

Continue learning

Prerequisites

UI.Orbit

Companions

UI.OrbitPathUI.OrbitSearch

Next steps

UI.Constellation

Complete inventory

View all pages in Interface components
← Previous: UI.OrbitCenterNext: UI.OrbitCluster →