Module: RatatuiRuby::TUI::WidgetFactories

Included in:
RatatuiRuby::TUI
Defined in:
lib/ratatui_ruby/tui/widget_factories.rb

Overview

Widget factory methods for Session.

Provides convenient access to all Widgets::* classes without fully qualifying the class names. This is the largest mixin, covering all renderable UI components.

All factories use DWIM hash coercion: both ‘tui.table(hash)` and `tui.table(**hash)` work correctly.

Instance Method Summary collapse

Instance Method Details

#axis(first = nil, **kwargs) ⇒ Widgets::Axis

Creates a Widgets::Axis.

Returns:



142
143
144
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 142

def axis(first = nil, **kwargs)
  Widgets::Axis.coerce_args(first, kwargs)
end

#bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar

Creates a Widgets::BarChart::Bar.



106
107
108
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 106

def bar(first = nil, **kwargs)
  Widgets::BarChart::Bar.coerce_args(first, kwargs)
end

#bar_chart(first = nil, **kwargs) ⇒ Widgets::BarChart

Creates a Widgets::BarChart.

Returns:



100
101
102
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 100

def bar_chart(first = nil, **kwargs)
  Widgets::BarChart.coerce_args(first, kwargs)
end

#bar_chart_bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar

Creates a Widgets::BarChart::Bar (alias).



118
119
120
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 118

def bar_chart_bar(first = nil, **kwargs)
  Widgets::BarChart::Bar.coerce_args(first, kwargs)
end

#bar_chart_bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup

Creates a Widgets::BarChart::BarGroup (alias).



124
125
126
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 124

def bar_chart_bar_group(first = nil, **kwargs)
  Widgets::BarChart::BarGroup.coerce_args(first, kwargs)
end

#bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup

Creates a Widgets::BarChart::BarGroup.



112
113
114
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 112

def bar_group(first = nil, **kwargs)
  Widgets::BarChart::BarGroup.coerce_args(first, kwargs)
end

#block(first = nil, **kwargs) ⇒ Widgets::Block

Creates a Widgets::Block.

Returns:



21
22
23
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 21

def block(first = nil, **kwargs)
  Widgets::Block.coerce_args(first, kwargs)
end

#calendar(first = nil, **kwargs) ⇒ Widgets::Calendar

Creates a Widgets::Calendar.

Returns:



154
155
156
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 154

def calendar(first = nil, **kwargs)
  Widgets::Calendar.coerce_args(first, kwargs)
end

#canvas(first = nil, **kwargs) ⇒ Widgets::Canvas

Creates a Widgets::Canvas.

Returns:



160
161
162
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 160

def canvas(first = nil, **kwargs)
  Widgets::Canvas.coerce_args(first, kwargs)
end

#center(first = nil, **kwargs) ⇒ Widgets::Center

Creates a Widgets::Center.

Returns:



184
185
186
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 184

def center(first = nil, **kwargs)
  Widgets::Center.coerce_args(first, kwargs)
end

#chart(first = nil, **kwargs) ⇒ Widgets::Chart

Creates a Widgets::Chart.

Returns:



130
131
132
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 130

def chart(first = nil, **kwargs)
  Widgets::Chart.coerce_args(first, kwargs)
end

#clear(first = nil, **kwargs) ⇒ Widgets::Clear

Creates a Widgets::Clear.

Returns:



166
167
168
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 166

def clear(first = nil, **kwargs)
  Widgets::Clear.coerce_args(first, kwargs)
end

#cursor(first = nil, **kwargs) ⇒ Widgets::Cursor

Creates a Widgets::Cursor.

Returns:



172
173
174
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 172

def cursor(first = nil, **kwargs)
  Widgets::Cursor.coerce_args(first, kwargs)
end

#dataset(first = nil, **kwargs) ⇒ Widgets::Dataset

Creates a Widgets::Dataset.

Returns:



136
137
138
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 136

def dataset(first = nil, **kwargs)
  Widgets::Dataset.coerce_args(first, kwargs)
end

#gauge(first = nil, **kwargs) ⇒ Widgets::Gauge

Creates a Widgets::Gauge.

Returns:



82
83
84
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 82

def gauge(first = nil, **kwargs)
  Widgets::Gauge.coerce_args(first, kwargs)
end

#line_gauge(first = nil, **kwargs) ⇒ Widgets::LineGauge

Creates a Widgets::LineGauge.

Returns:



88
89
90
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 88

def line_gauge(first = nil, **kwargs)
  Widgets::LineGauge.coerce_args(first, kwargs)
end

#list(first = nil, **kwargs) ⇒ Widgets::List

Creates a Widgets::List.

Returns:



33
34
35
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 33

def list(first = nil, **kwargs)
  Widgets::List.coerce_args(first, kwargs)
end

#list_item(first = nil, **kwargs) ⇒ Widgets::ListItem Also known as: item

Creates a Widgets::ListItem.

Returns:



39
40
41
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 39

def list_item(first = nil, **kwargs)
  Widgets::ListItem.coerce_args(first, kwargs)
end

#overlay(first = nil, **kwargs) ⇒ Widgets::Overlay

Creates a Widgets::Overlay.

Returns:



178
179
180
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 178

def overlay(first = nil, **kwargs)
  Widgets::Overlay.coerce_args(first, kwargs)
end

#paragraph(first = nil, **kwargs) ⇒ Widgets::Paragraph

Creates a Widgets::Paragraph.

Returns:



27
28
29
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 27

def paragraph(first = nil, **kwargs)
  Widgets::Paragraph.coerce_args(first, kwargs)
end

#ratatui_logo(first = nil, **kwargs) ⇒ Widgets::RatatuiLogo

Creates a Widgets::RatatuiLogo.



190
191
192
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 190

def (first = nil, **kwargs)
  Widgets::RatatuiLogo.coerce_args(first, kwargs)
end

#ratatui_mascot(first = nil, **kwargs) ⇒ Widgets::RatatuiMascot

Creates a Widgets::RatatuiMascot.



196
197
198
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 196

def ratatui_mascot(first = nil, **kwargs)
  Widgets::RatatuiMascot.coerce_args(first, kwargs)
end

#row(first = nil, **kwargs) ⇒ Widgets::Row

Creates a Widgets::Row (for Table rows).

Returns:



58
59
60
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 58

def row(first = nil, **kwargs)
  Widgets::Row.coerce_args(first, kwargs)
end

#scrollbar(first = nil, **kwargs) ⇒ Widgets::Scrollbar

Creates a Widgets::Scrollbar.

Returns:



148
149
150
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 148

def scrollbar(first = nil, **kwargs)
  Widgets::Scrollbar.coerce_args(first, kwargs)
end

#shape_label(first = nil, **kwargs) ⇒ Widgets::Shape::Label

Creates a Widgets::Shape::Label.



202
203
204
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 202

def shape_label(first = nil, **kwargs)
  Widgets::Shape::Label.coerce_args(first, kwargs)
end

#sparkline(first = nil, **kwargs) ⇒ Widgets::Sparkline

Creates a Widgets::Sparkline.

Returns:



94
95
96
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 94

def sparkline(first = nil, **kwargs)
  Widgets::Sparkline.coerce_args(first, kwargs)
end

#table(first = nil, **kwargs) ⇒ Widgets::Table

Creates a Widgets::Table.

Returns:



52
53
54
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 52

def table(first = nil, **kwargs)
  Widgets::Table.coerce_args(first, kwargs)
end

#table_cell(first = nil, **kwargs) ⇒ Widgets::Cell

Creates a Widgets::Cell (for Table cells).

Returns:



70
71
72
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 70

def table_cell(first = nil, **kwargs)
  Widgets::Cell.coerce_args(first, kwargs)
end

#table_row(first = nil, **kwargs) ⇒ Widgets::Row

Creates a Widgets::Row (alias for table row).

Returns:



64
65
66
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 64

def table_row(first = nil, **kwargs)
  Widgets::Row.coerce_args(first, kwargs)
end

#tabs(first = nil, **kwargs) ⇒ Widgets::Tabs

Creates a Widgets::Tabs.

Returns:



76
77
78
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 76

def tabs(first = nil, **kwargs)
  Widgets::Tabs.coerce_args(first, kwargs)
end

#widget(type, first = nil) ⇒ Widgets::*

Creates a widget by type symbol.

Plugin systems and config-driven UIs need to instantiate widgets by name. Without a dispatcher, you need tedious case statements or reflection.

This method routes widget creation through a single entry point. Pass the type as a symbol and the remaining parameters as kwargs.

Use it for dynamic UI generation, dashboard builders, or plugin architectures.

Also available as: tui.paragraph, tui.list, etc.

Examples

– SPDX-SnippetBegin SPDX-FileCopyrightText: 2026 Kerrick Long SPDX-License-Identifier: MIT-0 ++

tui.widget(:paragraph, text: "Hello World")
tui.widget(:list, items: %w[One Two Three])

# Config-driven widget creation
widgets_config.each do |cfg|
  frame.render_widget(tui.widget(cfg[:type], **cfg[:options]), area)
end

– SPDX-SnippetEnd ++

Parameters:

  • type (Symbol)

    Widget type (see error message for full list)

Returns:



242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 242

def widget(type, first = nil, **)
  case type
  when :block then block(first, **)
  when :paragraph then paragraph(first, **)
  when :list then list(first, **)
  when :table then table(first, **)
  when :tabs then tabs(first, **)
  when :gauge then gauge(first, **)
  when :line_gauge then line_gauge(first, **)
  when :sparkline then sparkline(first, **)
  when :bar_chart then bar_chart(first, **)
  when :chart then chart(first, **)
  when :scrollbar then scrollbar(first, **)
  when :calendar then calendar(first, **)
  when :canvas then canvas(first, **)
  when :clear then clear(first, **)
  when :cursor then cursor(first, **)
  when :overlay then overlay(first, **)
  when :center then center(first, **)
  when :ratatui_logo then (first, **)
  when :ratatui_mascot then ratatui_mascot(first, **)
  else
    raise ArgumentError, "Unknown widget type: #{type.inspect}. " \
      "Valid types: :block, :paragraph, :list, :table, :tabs, :gauge, :line_gauge, " \
      ":sparkline, :bar_chart, :chart, :scrollbar, :calendar, :canvas, :clear, " \
      ":cursor, :overlay, :center, :ratatui_logo, :ratatui_mascot"
  end
end