ExRatatui.Widgets.Paragraph (ExRatatui v0.8.2)

Copy Markdown View Source

A text display widget with optional wrapping, alignment, and scrolling.

Fields

  • :text - the text content. Accepts a plain string (with \n for newlines), a %ExRatatui.Text.Span{}, a %ExRatatui.Text.Line{}, a %ExRatatui.Text{}, or a list of spans/lines. See ExRatatui.Text for the full rich-text model.
  • :style - %ExRatatui.Style{} for foreground/background/modifiers
  • :block - optional %ExRatatui.Widgets.Block{} container (borders, title)
  • :alignment - :left, :center, or :right
  • :wrap - true to wrap text at widget boundary
  • :scroll - {vertical, horizontal} scroll offset

Examples

iex> %ExRatatui.Widgets.Paragraph{text: "Hello!", alignment: :center}
%ExRatatui.Widgets.Paragraph{
  text: "Hello!",
  style: %ExRatatui.Style{},
  block: nil,
  alignment: :center,
  wrap: false,
  scroll: {0, 0}
}

iex> alias ExRatatui.Widgets.{Paragraph, Block}
iex> alias ExRatatui.Style
iex> %Paragraph{
...>   text: "Hello, world!",
...>   style: %Style{fg: :green, modifiers: [:bold]},
...>   alignment: :center,
...>   block: %Block{title: "Greeting", borders: [:all]}
...> }
%ExRatatui.Widgets.Paragraph{
  text: "Hello, world!",
  style: %ExRatatui.Style{fg: :green, modifiers: [:bold]},
  block: %ExRatatui.Widgets.Block{title: "Greeting", borders: [:all]},
  alignment: :center,
  wrap: false,
  scroll: {0, 0}
}

Rich text with per-span styling:

iex> alias ExRatatui.Widgets.Paragraph
iex> alias ExRatatui.Text.{Line, Span}
iex> alias ExRatatui.Style
iex> %Paragraph{
...>   text: [
...>     Line.new([Span.new("error: ", style: %Style{fg: :red, modifiers: [:bold]}),
...>               Span.new("something broke")])
...>   ]
...> }.text
...> |> length()
1

Summary

Types

t()

@type t() :: %ExRatatui.Widgets.Paragraph{
  alignment: :left | :center | :right,
  block: ExRatatui.Widgets.Block.t() | nil,
  scroll: {non_neg_integer(), non_neg_integer()},
  style: ExRatatui.Style.t(),
  text: text_like(),
  wrap: boolean()
}

text_like()