io.worxbend.tui.dsl
Members list
Type members
Classlikes
Where a fixed-size block sits inside a larger area along one axis.
Where a fixed-size block sits inside a larger area along one axis.
Attributes
- Supertypes
-
trait Enumtrait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
Text carrying a time-based effect, themed at construction.
Text carrying a time-based effect, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
The ambient time source the animated elements read, so showing a spinner needs no tick plumbing at all.
The ambient time source the animated elements read, so showing a spinner needs no tick plumbing at all.
Before this existed, an animation cost four separate steps: set a tickRate, declare a Signal[Int], override onTick to advance it, and thread the counter through every call site. All four were boilerplate the framework already had the information to do itself.
Reading it is a tracked read, which is what makes this work rather than merely shorten: a view only subscribes to the clock when it actually renders an animation, so a screen with no spinner on it is not woken up by the ticks — where a hand-rolled ticks.get in the view repaints the whole app forever whether anything is moving or not.
The value is elapsed time since the process started rather than since a particular runner, so it is meaningful without a runner (a plain unit test reads Duration.Zero until something advances it) and consistent across several runners in one JVM.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
AnimationClock.type
A text input with a live suggestion dropdown: typing filters suggestions (subsequence match), Up/Down move the highlight, Enter accepts it into the input and fires onAccept.
A text input with a live suggestion dropdown: typing filters suggestions (subsequence match), Up/Down move the highlight, Enter accepts it into the input and fires onAccept.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
App-owned state for an autocomplete element: the text being typed plus the highlighted suggestion.
App-owned state for an autocomplete element: the text being typed plus the highlighted suggestion.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
A short inline label, themed at construction.
A short inline label, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A coarse width band for a terminal, the vocabulary Element.responsive and TuiApp.breakpoint branch on.
A coarse width band for a terminal, the vocabulary Element.responsive and TuiApp.breakpoint branch on.
Bands are width-only and cumulative: Medium means "at least 80 columns", not "exactly 80 to 119". Height is left out deliberately — a Size => Element builder still sees both axes, and short-but-wide terminals want a different decision than narrow ones, so folding both into one band would hide the distinction rather than name it.
The thresholds are the ones terminals actually cluster around: 80 columns is the historical default, 120 the common width of a maximized modern window, and anything under 60 is a split pane or a phone-sized SSH session.
Attributes
- Companion
- object
- Supertypes
-
trait Enumtrait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- enum
- Supertypes
-
trait Sumtrait Mirrorclass Objecttrait Matchableclass Any
- Self type
-
Breakpoint.type
A pressable button: Enter or Space triggers action while focused.
A pressable button: Enter or Space triggers action while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A labelled checkbox over a caller-owned Signal. Space/Enter (or a click) flips it while focused.
A labelled checkbox over a caller-owned Signal. Space/Enter (or a click) flips it while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A toggleable section: ▸ title collapsed, ▾ title plus the body expanded; Enter/Space toggle while focused. Collapsed bodies leave the tab order entirely.
A toggleable section: ▸ title collapsed, ▾ title plus the body expanded; Enter/Space toggle while focused. Collapsed bodies leave the tab order entirely.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A sortable, filterable table. Up/Down move the row selection while focused, and PageUp/PageDown turn the page once state.pageSize is set (they are left unconsumed otherwise, so they keep bubbling). Sorting and filtering have no built-in keys — drive state.sortBy/state.setFilter from the app's own bindings.
A sortable, filterable table. Up/Down move the row selection while focused, and PageUp/PageDown turn the page once state.pageSize is set (they are left unconsumed otherwise, so they keep bubbling). Sorting and filtering have no built-in keys — drive state.sortBy/state.setFilter from the app's own bindings.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A filesystem browser. Up/Down move the selection, Enter expands or collapses the selected directory, while focused. Listings are read lazily and cached in state — it touches the disk on expansion, never per frame.
A filesystem browser. Up/Down move the selection, Enter expands or collapses the selected directory, while focused. Listings are read lazily and cached in state — it touches the disk on expansion, never per frame.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A node of the retained-mode UI tree.
A node of the retained-mode UI tree.
Every element ultimately renders through a tui-core Widget — the DSL is a declarative layer over tui-widgets, never a parallel rendering path. The sealed hierarchy is plain data: construction tests can pattern-match it, and styling extensions rebuild nodes instead of mutating them.
Attributes
- Companion
- object
- Supertypes
-
class Objecttrait Matchableclass Any
- Known subtypes
-
class AnimatedTextElementclass AutocompleteElementclass BadgeElementclass ButtonElementclass CheckboxElementclass CollapsibleElementclass ColumnElementclass DataTableElementclass DirectoryTreeElementclass FilePickerElementclass FilledElementclass GaugeElementclass IndeterminateElementclass InputElementclass LayersElementclass LinearSpinnerElementclass ListElementclass LogElementclass MaskedInputElementclass MenuElementclass NoticeElementclass NumberInputElementclass OrbitSpinnerElementclass PaginatorElementclass PanelElementclass PositionedElementclass ProgressBarElementclass RadioGroupElementclass ResponsiveElementclass RowElementclass ScrollViewElementclass SelectElementclass SelectionListElementclass SkeletonElementclass SliderElementclass SpacerElementclass SparklineElementclass SpinnerElementclass SpinnerGridElementclass SplitPaneElementclass TabbedContentElementclass TableElementclass TabsElementclass TextAreaElementclass TextElementclass ToggleElementclass TreeElementclass WidgetElementShow all
The factory set: one obvious home, re-exported at the package top level so import io.worxbend.tui.dsl.* brings every factory in.
The cross-cutting properties every Element carries: its style, an optional layout constraint (how much space it claims inside a row/column/panel), its event handlers, and focus participation. Styling and layout extension methods produce a new element with updated props — elements stay immutable values.
The cross-cutting properties every Element carries: its style, an optional layout constraint (how much space it claims inside a row/column/panel), its event handlers, and focus participation. Styling and layout extension methods produce a new element with updated props — elements stay immutable values.
focusable opts the element into tab-order traversal; focused is set by the framework's focus pass each render, never by user code. inert marks a subtree a modal layer covers: it takes no key and no mouse event at all and supplies no focus or hit-test path. Like focused, the framework's passes set it each render, never user code.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
A file chooser over a FilePickerState: arrows navigate, Enter opens directories or accepts a file into state.chosen.
A file chooser over a FilePickerState: arrows navigate, Enter opens directories or accepts a file into state.chosen.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
App-owned state for a filePicker: the directory tree plus the accepted file.
App-owned state for a filePicker: the directory tree plus the accepted file.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
Fills its whole area with fill (a solid background) before rendering inner — what the chrome bars use to read as continuous surfaces. Transparent to focus and event routing.
Fills its whole area with fill (a solid background) before rendering inner — what the chrome bars use to read as continuous surfaces. Transparent to focus and event routing.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Renders a FormState as labeled controls with inline validation errors — the Tier 2 Form widget, composed from input/checkbox so it inherits focus traversal for free.
Live state for a compile-time-derived form: text/int fields become inputs, boolean fields become checkboxes; submit runs each field's parser/validators — errors land in errors per field, a fully valid form lands in result.
Live state for a compile-time-derived form: text/int fields become inputs, boolean fields become checkboxes; submit runs each field's parser/validators — errors land in errors per field, a fully valid form lands in result.
Custom validation attaches per field name via cue4s-style Field composition: FormState.of(deriveForm[Signup], Field.int("age").mapValidated(...)).
Attributes
- Companion
- object
- Supertypes
-
class Objecttrait Matchableclass Any
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A one-row indeterminate progress bar, themed at construction.
A one-row indeterminate progress bar, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Single-line text input. Editing state (value + cursor) is app-owned; editing keys are handled by the built-in handler while focused, and any consumed key triggers a redraw.
Single-line text input. Editing state (value + cursor) is app-owned; editing keys are handled by the built-in handler while focused, and any consumed key triggers a redraw.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Named key constants and constructors, so handlers read onKey(Key.Up){ … } instead of matching raw KeyEvent(KeyCode.Up, _). Mirrors terminus's Key.up / Key.controlQ vocabulary.
Named key constants and constructors, so handlers read onKey(Key.Up){ … } instead of matching raw KeyEvent(KeyCode.Up, _). Mirrors terminus's Key.up / Key.controlQ vocabulary.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
Key.type
One declared application key: the trigger, the short label shown in status-bar hints, a description for the help overlay, and the action.
One declared application key: the trigger, the short label shown in status-bar hints, a description for the help overlay, and the action.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
The application's declared keys (bubbles' key+help pattern): one declaration drives dispatch, the status-bar hints, and the help overlay. TuiApp consults these for events no element consumed.
The application's declared keys (bubbles' key+help pattern): one declaration drives dispatch, the status-bar hints, and the help overlay. TuiApp consults these for events no element consumed.
Attributes
- Companion
- object
- Supertypes
-
class Objecttrait Matchableclass Any
Attributes
- Companion
- class
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
KeyBindings.type
Z-ordered stacking: every child renders over the full area in order, so later children paint over earlier ones — the primitive under dialogs, toasts, palettes, and splash overlays.
Z-ordered stacking: every child renders over the full area in order, so later children paint over earlier ones — the primitive under dialogs, toasts, palettes, and splash overlays.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A head travelling a one-cell track, themed at construction.
A head travelling a one-cell track, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A scrollable single-selection list. Up/Down move the selection while focused, the wheel does the same on hover; the widget scrolls to keep the selection visible. state is caller-owned, so the app can read or set the selection.
A scrollable single-selection list. Up/Down move the selection while focused, the wheel does the same on hover; the widget scrolls to keep the selection visible. state is caller-owned, so the app can read or set the selection.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
The styles the loading and progress animations draw from.
The styles the loading and progress animations draw from.
Split out of Theme rather than flattened into it because these five travel together: retheming a progress bar means changing track and fill consistently, and a theme that got one of them wrong would be hard to spot. It also keeps Theme's own vocabulary semantic (accent, muted) rather than widget-specific.
fillRamp is optional because a color ramp is a deliberate choice, not a default: a bar that walks red-to-green reads as "danger receding", which is right for disk usage and wrong for a download. Themes leave it unset and a call site opts in with .ramp(...).
Attributes
- Companion
- object
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- class
- Supertypes
-
trait Producttrait Mirrorclass Objecttrait Matchableclass Any
- Self type
-
LoadingTheme.type
A scrollable log panel: Up/Down (and PageUp/PageDown) scroll while focused; the tail re-follows when scrolled back to the bottom.
A scrollable log panel: Up/Down (and PageUp/PageDown) scroll while focused; the tail re-follows when scrolled back to the bottom.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A template-driven input (##/##/####): # accepts a digit, A a letter, literals insert themselves.
A template-driven input (##/##/####): # accepts a digit, A a letter, literals insert themselves.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A vertical menu / dropdown / context menu popup. Up/Down move the highlight (skipping separators and disabled items), Enter (or a click) fires onSelect with the chosen index, the wheel scrolls. Escape is left unconsumed so an enclosing app can close it.
A vertical menu / dropdown / context menu popup. Up/Down move the highlight (skipping separators and disabled items), Enter (or a click) fires onSelect with the chosen index, the wheel scrolls. Escape is left unconsumed so an enclosing app can close it.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
One styled message line, themed at construction.
One styled message line, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A text input restricted to numbers (optional single leading minus and, with allowDecimal, one dot).
A text input restricted to numbers (optional single leading minus and, with allowDecimal, one dot).
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
An orbit spinner whose colors were resolved from the ambient Theme at construction.
An orbit spinner whose colors were resolved from the ambient Theme at construction.
The LoadingTheme supplies both: the resting path takes track, the arc takes spinner. Anything the call site sets with .color/.bold/.style layers onto the arc only, so orbitSpinner().color(Color.Red) recolors the moving part and leaves the path themed — the rule SpinnerElement follows for its glyph and label.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A page indicator: Left/Right change the page while focused.
A page indicator: Left/Right change the page while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Renders content at an absolute offset inside whatever area it is given, sized width x height (clipped to the area). The building block for context menus and tooltips anchored at a mouse or widget position — compose it over a base with Element.layers.
Renders content at an absolute offset inside whatever area it is given, sized width x height (clipped to the area). The building block for context menus and tooltips anchored at a mouse or widget position — compose it over a base with Element.layers.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A one-row determinate progress bar, themed at construction.
A one-row determinate progress bar, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Mutually exclusive options: Up/Down move the selection while focused.
Mutually exclusive options: Up/Down move the selection while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A subtree chosen by the terminal's size — a media query, not a container query.
A subtree chosen by the terminal's size — a media query, not a container query.
build is handed the size of the whole terminal, not this node's allotted area, and runs during ResponsivePass before the focus pass, so whatever it returns is an ordinary part of the tree: its focusables take Tab stops, its handlers receive keys, and clicks hit-test into it — unless the node sits on a layer a modal covers, in which case ResponsivePass suppresses the branch along with the rest of that layer. That is what makes swapping components work and not just constraints — a row of three panes at 120 columns can become a tabbedContent at 60.
The node is otherwise transparent: it holds the built branch as its single child, so a constraint, a style, or an onKeyEvent set on it applies exactly as it would on a column wrapping the same content, and the branch's own layout claim becomes the node's when none is set explicitly.
resolved is filled in by ResponsivePass on every render, never by user code — the same contract ElementProps.focused has. While it is empty the node still renders: it falls back to building against its own area, so a construction test that draws element.widget straight into a buffer without a TuiApp behind it shows content rather than blank space. That fallback has no focus pass behind it, so focusables inside it are inert — which is why the pass exists rather than doing this at render time.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
One entry of the app's screen stack.
One entry of the app's screen stack.
A modal screen renders layered over what's beneath it, with everything below removed from the tab order; a full screen replaces the view entirely. Push/pop via TuiApp.pushScreen/popScreen.
Attributes
- Companion
- object
- Supertypes
-
class Objecttrait Matchableclass Any
A scrollable viewport over taller-than-the-screen content. Up/Down/PageUp/PageDown scroll while focused.
A scrollable viewport over taller-than-the-screen content. Up/Down/PageUp/PageDown scroll while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A one-row option cycler. Left/Right step through options while focused (wrapping at both ends) and a click advances one; the selection is an index into options, so it survives nothing but a stable option list.
A one-row option cycler. Left/Right step through options while focused (wrapping at both ends) and a click advances one; the selection is an index into options, so it survives nothing but a stable option list.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A multi-select list: Up/Down move the cursor, Space toggles membership of the cursor row.
A multi-select list: Up/Down move the cursor, Space toggles membership of the cursor row.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A skeleton placeholder, themed at construction.
A skeleton placeholder, themed at construction.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A value slider: Left/Right adjust by step, Home/End jump to the bounds, while focused.
A value slider: Left/Right adjust by step, Home/End jump to the bounds, while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A spinner whose colors were resolved from the ambient Theme at construction.
A spinner whose colors were resolved from the ambient Theme at construction.
The theme supplies the glyph and label styles; anything the call site sets with .color/.bold/.style layers on top of the glyph style, so spinner(tick).color(Color.Red) recolors the moving part and leaves the label alone.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A themed block of phase-offset spinners.
A themed block of phase-offset spinners.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
An intro shown before the first view render: content (typically a bigText logo composition) plays effect and holds for at least minimumDuration; any key skips it. Wire via TuiApp.splash.
An intro shown before the first view render: content (typically a bigText logo composition) plays effect and holds for at least minimumDuration; any key skips it. Wire via TuiApp.splash.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
Two panes split by an adjustable divider: [/] shift the split while the pane itself is focused.
Two panes split by an adjustable divider: [/] shift the split while the pane itself is focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A tab row plus the selected page (Textual's TabbedContent): Left/Right switch pages while focused. Only the active page's focusables participate in the tab order.
A tab row plus the selected page (Textual's TabbedContent): Left/Right switch pages while focused. Only the active page's focusables participate in the tab order.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Multi-line editor element. While focused it consumes printable characters, Enter (newline), Backspace, Delete, arrows, Home/End, Ctrl+Z (undo) and Ctrl+Y (redo) — Tab stays free for focus traversal. A bracketed paste lands as one edit, with carriage returns stripped.
Multi-line editor element. While focused it consumes printable characters, Enter (newline), Backspace, Delete, arrows, Home/End, Ctrl+Z (undo) and Ctrl+Y (redo) — Tab stays free for focus traversal. A bracketed paste lands as one edit, with carriage returns stripped.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Semantic styles the chrome presets (and applications) draw from, provided ambiently via given Theme.
Semantic styles the chrome presets (and applications) draw from, provided ambiently via given Theme.
The default is Theme.Dark; an application overrides it by defining its own given (or by rendering from a Signal[Theme] for runtime switching — the view re-evaluates, presets pick up the new value).
Attributes
- Companion
- object
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Objecttrait Matchableclass AnyShow all
A labelled on/off switch — a CheckboxElement in switch clothing, with the same Space/Enter/click activation.
A labelled on/off switch — a CheckboxElement in switch clothing, with the same Space/Enter/click activation.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
A collapsible tree over an in-memory node list. Up/Down move the selection through the visible rows and Enter expands or collapses the selected branch (a no-op on a leaf), all while focused.
A collapsible tree over an in-memory node list. Up/Down move the selection through the visible rows and Enter expands or collapses the selected branch (a no-op on a leaf), all while focused.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
The application entry point for the declarative DSL.
The application entry point for the declarative DSL.
view is re-evaluated under a tracking ReactiveScope: any Signal read during the last evaluation schedules a redraw when it changes — state lives in signals, not in an explicitly threaded State value.
Focus and events: focusable elements form a tab order in depth-first view order; Tab / Shift+Tab cycle focus and a mouse press focuses the innermost focusable under the pointer. Key events start at the focused element and bubble to its ancestors (true consumes), then the app's bindings run; an unconsumed Ctrl+P opens the command palette (when bindings exist) and Ctrl+C quits.
App services: pushScreen/popScreen for modal or full-screen navigation (layers below a modal leave the tab order), notify for tick-aged toasts, openPalette for the fuzzy command palette over the declared bindings. Call quit from any handler to exit cleanly.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
Escape hatch: any core Widget as a leaf element (its rendering ignores the element style). measure lets width-dependent content (wrapped markdown, images) report its height to the measurement pass.
Escape hatch: any core Widget as a leaf element (its rendering ignores the element style). measure lets width-dependent content (wrapped markdown, images) report its height to the measurement pass.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait Elementclass Objecttrait Matchableclass AnyShow all
Types
The shape of an app's view (and any sub-view helper): a computation, run under a tracking ReactiveScope, that produces the current Element tree. Reading a Signal inside it subscribes the next redraw. Mirrors terminus's type Program[A] = Terminal ?=> A — one named shape every view has.
The shape of an app's view (and any sub-view helper): a computation, run under a tracking ReactiveScope, that produces the current Element tree. Reading a Signal inside it subscribes the next redraw. Mirrors terminus's type Program[A] = Terminal ?=> A — one named shape every view has.
Attributes
Value members
Concrete methods
Declares one binding from a key spec string: "q", "ctrl+s", "shift+tab", "esc", "f2", "up", "+"… A malformed spec is a programmer error and throws at construction (bindings are static app declarations).
Declares one binding from a key spec string: "q", "ctrl+s", "shift+tab", "esc", "f2", "up", "+"… A malformed spec is a programmer error and throws at construction (bindings are static app declarations).
Attributes
content at a fixed size, centered both ways in whatever space is available.
content at a fixed size, centered both ways in whatever space is available.
Attributes
A centered help dialog listing every hinted binding — render it last (over the view) while visible.
A centered help dialog listing every hinted binding — render it last (over the view) while visible.
Attributes
The classic list-left, detail-right split.
The classic list-left, detail-right split.
Attributes
Positions content (sized width x height) inside whatever area it is given, aligned horizontal x vertical (both Center by default — the centered case). Pass fill to paint the surrounding whitespace with a style (Lip Gloss Place-style), e.g. a dimmed backdrop behind a dialog.
Positions content (sized width x height) inside whatever area it is given, aligned horizontal x vertical (both Center by default — the centered case). Pass fill to paint the surrounding whitespace with a style (Lip Gloss Place-style), e.g. a dimmed backdrop behind a dialog.
Attributes
The application shell: optional top bar, optional sidebar (left or right of the content), the content filling the middle, and an optional status bar.
The application shell: optional top bar, optional sidebar (left or right of the content), the content filling the middle, and an optional status bar.
Attributes
Side pane + main pane.
Side pane + main pane.
Attributes
A one-row status bar of key description hints over the theme surface.
A one-row status bar of key description hints over the theme surface.
Attributes
Status bar fed directly from the app's declared KeyBindings.
A one-row title bar over the theme surface: title left, optional tabs center, optional right-side text.
A one-row title bar over the theme surface: title left, optional tabs center, optional right-side text.
Attributes
Pushes a default style onto a whole subtree (terminus's auto-restoring foreground.green { … }, as a retained transform): every style-aware descendant renders with transform(...) as its base, with any style the node set itself layered on top. Style-ignoring leaves (raw widget(...), images) are unaffected.
Pushes a default style onto a whole subtree (terminus's auto-restoring foreground.green { … }, as a retained transform): every style-aware descendant renders with transform(...) as its base, with any style the node set itself layered on top. Style-ignoring leaves (raw widget(...), images) are unaffected.
Attributes
Extensions
Extensions
Ergonomic key handlers that hide the true/false stop-propagation ceremony.
Ergonomic key handlers that hide the true/false stop-propagation ceremony.
onKey binds an action to one or more keys; it consumes the event only when a bound key matches, delegating anything else to a handler already on the element — so several .onKey(…) calls compose instead of overwriting each other. Use Element.onKeyEvent directly when a handler needs the raw event or conditional consumption.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Extra blank cells inserted between a row/column's children.
Extra blank cells inserted between a row/column's children.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Row/Column flex alignment and inter-child spacing. flex/center/spaceBetween/… only bite on row/column containers whose children leave leftover space (no fill child); elsewhere they are the identity.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Double-line borders — meaningful on panels, identity elsewhere.
Double-line borders — meaningful on panels, identity elsewhere.
Attributes
Opts a non-interactive element into the tab order (interactive elements are focusable by default).
Opts a non-interactive element into the tab order (interactive elements are focusable by default).
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
A stable focus identity: focus follows this key across renders even when the tree changes shape (without a key, focus is positional and can jump when elements appear or disappear).
A stable focus identity: focus follows this key across renders even when the tree changes shape (without a key, focus is positional and can jump when elements appear or disappear).
Attributes
A handler returning true consumes the event; false lets it continue to the next candidate.
A handler returning true consumes the event; false lets it continue to the next candidate.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Rounded borders — meaningful on panels, identity elsewhere.
Rounded borders — meaningful on panels, identity elsewhere.
Attributes
Fluent styling — each call returns a new element.
Fluent styling — each call returns a new element.
Attributes
Layout constraints — how much space the element claims inside its container.
Layout constraints — how much space the element claims inside its container.
Attributes
Layout constraints — how much space the element claims inside its container.
Layout constraints — how much space the element claims inside its container.
Attributes
Layout constraints — how much space the element claims inside its container.
Layout constraints — how much space the element claims inside its container.
Attributes
Layout constraints — how much space the element claims inside its container.
Layout constraints — how much space the element claims inside its container.
Attributes
Layout constraints — how much space the element claims inside its container.
Layout constraints — how much space the element claims inside its container.