A tab bar widget for switching between views.
Fields
:titles- list of tab titles. Each title accepts anyExRatatui.Text-coercible line-like value: aString.t(), a%ExRatatui.Text.Span{}, a%ExRatatui.Text.Line{}, or a list of spans. Titles are single-line — strings with embedded newlines raise.:selected- zero-based index of the selected tab, ornilfor no selection:style-%ExRatatui.Style{}for non-selected tabs:highlight_style-%ExRatatui.Style{}for the selected tab:divider- separator string between tabs (default:nil; the Rust backend uses"│"):block- optional%ExRatatui.Widgets.Block{}container:padding-{left, right}padding around each tab title (default:{1, 1})
Examples
iex> %ExRatatui.Widgets.Tabs{titles: ["Tab 1", "Tab 2", "Tab 3"], selected: 0}
%ExRatatui.Widgets.Tabs{
titles: ["Tab 1", "Tab 2", "Tab 3"],
selected: 0,
style: %ExRatatui.Style{},
highlight_style: %ExRatatui.Style{},
divider: nil,
block: nil,
padding: {1, 1}
}
Summary
Types
@type t() :: %ExRatatui.Widgets.Tabs{ block: ExRatatui.Widgets.Block.t() | nil, divider: String.t() | nil, highlight_style: ExRatatui.Style.t(), padding: {non_neg_integer(), non_neg_integer()}, selected: non_neg_integer() | nil, style: ExRatatui.Style.t(), titles: [title()] }
@type title() :: String.t() | ExRatatui.Text.Span.t() | ExRatatui.Text.Line.t() | [ExRatatui.Text.Span.t()]