ratatui_ruby 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +1 -1
  3. data/.builds/ruby-3.3.yml +1 -1
  4. data/.builds/ruby-3.4.yml +1 -1
  5. data/.builds/ruby-4.0.0.yml +1 -1
  6. data/AGENTS.md +8 -1
  7. data/CHANGELOG.md +21 -0
  8. data/README.md +5 -5
  9. data/Rakefile +1 -1
  10. data/doc/{application_architecture.md → concepts/application_architecture.md} +30 -0
  11. data/doc/{event_handling.md → concepts/event_handling.md} +1 -1
  12. data/doc/contributors/auditing/parity.md +233 -0
  13. data/doc/contributors/developing_examples.md +3 -3
  14. data/doc/contributors/v1.0.0_blockers.md +8 -8
  15. data/doc/{quickstart.md → getting_started/quickstart.md} +26 -26
  16. data/doc/{why.md → getting_started/why.md} +1 -1
  17. data/doc/index.md +23 -9
  18. data/doc/{terminal_limitations.md → troubleshooting/terminal_limitations.md} +33 -0
  19. data/examples/app_all_events/README.md +1 -0
  20. data/examples/app_all_events/app.rb +2 -0
  21. data/examples/app_all_events/model/app_model.rb +2 -0
  22. data/examples/app_all_events/model/event_color_cycle.rb +2 -0
  23. data/examples/app_all_events/model/event_entry.rb +2 -0
  24. data/examples/app_all_events/model/msg.rb +2 -0
  25. data/examples/app_all_events/model/timestamp.rb +2 -0
  26. data/examples/app_all_events/update.rb +2 -0
  27. data/examples/app_all_events/view/app_view.rb +2 -0
  28. data/examples/app_all_events/view/controls_view.rb +2 -0
  29. data/examples/app_all_events/view/counts_view.rb +2 -0
  30. data/examples/app_all_events/view/live_view.rb +2 -0
  31. data/examples/app_all_events/view/log_view.rb +2 -0
  32. data/examples/app_all_events/view.rb +2 -0
  33. data/examples/app_color_picker/README.md +2 -0
  34. data/examples/app_color_picker/app.rb +2 -0
  35. data/examples/app_color_picker/clipboard.rb +2 -0
  36. data/examples/app_color_picker/color.rb +2 -0
  37. data/examples/app_color_picker/controls.rb +2 -0
  38. data/examples/app_color_picker/copy_dialog.rb +2 -0
  39. data/examples/app_color_picker/export_pane.rb +2 -0
  40. data/examples/app_color_picker/harmony.rb +2 -0
  41. data/examples/app_color_picker/input.rb +2 -0
  42. data/examples/app_color_picker/main_container.rb +2 -0
  43. data/examples/app_color_picker/palette.rb +2 -0
  44. data/examples/app_login_form/README.md +3 -0
  45. data/examples/app_login_form/app.rb +2 -0
  46. data/examples/app_stateful_interaction/README.md +2 -0
  47. data/examples/app_stateful_interaction/app.rb +2 -0
  48. data/examples/timeout_demo.rb +2 -0
  49. data/examples/verify_quickstart_dsl/README.md +2 -2
  50. data/examples/verify_quickstart_dsl/app.rb +2 -0
  51. data/examples/verify_quickstart_layout/README.md +2 -2
  52. data/examples/verify_quickstart_layout/app.rb +2 -0
  53. data/examples/verify_quickstart_lifecycle/README.md +2 -2
  54. data/examples/verify_quickstart_lifecycle/app.rb +2 -0
  55. data/examples/verify_readme_usage/app.rb +2 -0
  56. data/examples/{widget_barchart_demo → widget_barchart}/README.md +5 -3
  57. data/examples/{widget_barchart_demo → widget_barchart}/app.rb +7 -5
  58. data/examples/{widget_block_demo → widget_block}/README.md +5 -3
  59. data/examples/{widget_block_demo → widget_block}/app.rb +6 -4
  60. data/examples/{widget_box_demo → widget_box}/README.md +7 -4
  61. data/examples/{widget_box_demo → widget_box}/app.rb +7 -5
  62. data/examples/{widget_calendar_demo → widget_calendar}/README.md +6 -3
  63. data/examples/{widget_calendar_demo → widget_calendar}/app.rb +6 -4
  64. data/examples/{widget_canvas_demo → widget_canvas}/README.md +2 -2
  65. data/examples/{widget_canvas_demo → widget_canvas}/app.rb +6 -4
  66. data/examples/{widget_cell_demo → widget_cell}/README.md +6 -3
  67. data/examples/{widget_cell_demo → widget_cell}/app.rb +7 -5
  68. data/examples/{widget_center_demo → widget_center}/README.md +2 -2
  69. data/examples/{widget_center_demo → widget_center}/app.rb +6 -4
  70. data/examples/{widget_chart_demo → widget_chart}/README.md +7 -4
  71. data/examples/{widget_chart_demo → widget_chart}/app.rb +7 -5
  72. data/examples/{widget_gauge_demo → widget_gauge}/README.md +6 -3
  73. data/examples/{widget_gauge_demo → widget_gauge}/app.rb +7 -5
  74. data/examples/widget_layout_split/README.md +5 -2
  75. data/examples/widget_layout_split/app.rb +3 -1
  76. data/examples/{widget_line_gauge_demo → widget_line_gauge}/README.md +6 -3
  77. data/examples/{widget_line_gauge_demo → widget_line_gauge}/app.rb +7 -5
  78. data/examples/{widget_list_demo → widget_list}/README.md +7 -4
  79. data/examples/{widget_list_demo → widget_list}/app.rb +7 -5
  80. data/examples/{widget_map_demo → widget_map}/README.md +7 -4
  81. data/examples/{widget_map_demo → widget_map}/app.rb +4 -2
  82. data/examples/{widget_overlay_demo → widget_overlay}/README.md +6 -3
  83. data/examples/{widget_overlay_demo → widget_overlay}/app.rb +5 -3
  84. data/examples/{widget_popup_demo → widget_popup}/README.md +7 -4
  85. data/examples/{widget_popup_demo → widget_popup}/app.rb +6 -4
  86. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/README.md +6 -3
  87. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/app.rb +8 -6
  88. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/README.md +6 -3
  89. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/app.rb +6 -4
  90. data/examples/widget_rect/README.md +5 -2
  91. data/examples/widget_rect/app.rb +2 -0
  92. data/examples/widget_render/README.md +4 -1
  93. data/examples/widget_render/app.rb +2 -0
  94. data/examples/widget_rich_text/README.md +4 -1
  95. data/examples/widget_rich_text/app.rb +2 -0
  96. data/examples/widget_scroll_text/README.md +4 -1
  97. data/examples/widget_scroll_text/app.rb +3 -1
  98. data/examples/{widget_scrollbar_demo → widget_scrollbar}/README.md +7 -4
  99. data/examples/{widget_scrollbar_demo → widget_scrollbar}/app.rb +6 -4
  100. data/examples/{widget_sparkline_demo → widget_sparkline}/README.md +6 -3
  101. data/examples/{widget_sparkline_demo → widget_sparkline}/app.rb +7 -5
  102. data/examples/widget_style_colors/README.md +4 -1
  103. data/examples/widget_style_colors/app.rb +2 -0
  104. data/examples/{widget_table_demo → widget_table}/README.md +7 -4
  105. data/examples/{widget_table_demo → widget_table}/app.rb +4 -2
  106. data/examples/{widget_tabs_demo → widget_tabs}/README.md +6 -3
  107. data/examples/{widget_tabs_demo → widget_tabs}/app.rb +7 -5
  108. data/examples/widget_text_width/README.md +5 -2
  109. data/examples/widget_text_width/app.rb +2 -0
  110. data/exe/.gitkeep +0 -0
  111. data/ext/ratatui_ruby/Cargo.lock +1 -1
  112. data/ext/ratatui_ruby/Cargo.toml +1 -1
  113. data/ext/ratatui_ruby/extconf.rb +2 -0
  114. data/ext/ratatui_ruby/src/widgets/barchart.rs +8 -6
  115. data/ext/ratatui_ruby/src/widgets/chart.rs +26 -4
  116. data/ext/ratatui_ruby/src/widgets/table.rs +13 -5
  117. data/ext/ratatui_ruby/src/widgets/tabs.rs +49 -9
  118. data/lib/ratatui_ruby/buffer/cell.rb +2 -0
  119. data/lib/ratatui_ruby/buffer.rb +2 -0
  120. data/lib/ratatui_ruby/cell.rb +2 -0
  121. data/lib/ratatui_ruby/event/focus_gained.rb +2 -0
  122. data/lib/ratatui_ruby/event/focus_lost.rb +2 -0
  123. data/lib/ratatui_ruby/event/key/character.rb +2 -0
  124. data/lib/ratatui_ruby/event/key/media.rb +2 -0
  125. data/lib/ratatui_ruby/event/key/modifier.rb +2 -0
  126. data/lib/ratatui_ruby/event/key/navigation.rb +2 -0
  127. data/lib/ratatui_ruby/event/key/system.rb +2 -0
  128. data/lib/ratatui_ruby/event/key.rb +2 -0
  129. data/lib/ratatui_ruby/event/mouse.rb +2 -0
  130. data/lib/ratatui_ruby/event/none.rb +2 -0
  131. data/lib/ratatui_ruby/event/paste.rb +2 -0
  132. data/lib/ratatui_ruby/event/resize.rb +2 -0
  133. data/lib/ratatui_ruby/event.rb +2 -0
  134. data/lib/ratatui_ruby/frame.rb +2 -0
  135. data/lib/ratatui_ruby/layout/constraint.rb +2 -0
  136. data/lib/ratatui_ruby/layout/layout.rb +2 -0
  137. data/lib/ratatui_ruby/layout/rect.rb +2 -0
  138. data/lib/ratatui_ruby/layout.rb +2 -0
  139. data/lib/ratatui_ruby/list_state.rb +2 -0
  140. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -0
  141. data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +2 -0
  142. data/lib/ratatui_ruby/schema/bar_chart.rb +4 -2
  143. data/lib/ratatui_ruby/schema/block.rb +4 -2
  144. data/lib/ratatui_ruby/schema/calendar.rb +4 -2
  145. data/lib/ratatui_ruby/schema/canvas.rb +2 -0
  146. data/lib/ratatui_ruby/schema/center.rb +2 -0
  147. data/lib/ratatui_ruby/schema/chart.rb +4 -2
  148. data/lib/ratatui_ruby/schema/clear.rb +2 -0
  149. data/lib/ratatui_ruby/schema/constraint.rb +2 -0
  150. data/lib/ratatui_ruby/schema/cursor.rb +2 -0
  151. data/lib/ratatui_ruby/schema/draw.rb +2 -0
  152. data/lib/ratatui_ruby/schema/gauge.rb +4 -2
  153. data/lib/ratatui_ruby/schema/layout.rb +2 -0
  154. data/lib/ratatui_ruby/schema/line_gauge.rb +4 -2
  155. data/lib/ratatui_ruby/schema/list.rb +3 -1
  156. data/lib/ratatui_ruby/schema/list_item.rb +2 -0
  157. data/lib/ratatui_ruby/schema/overlay.rb +2 -0
  158. data/lib/ratatui_ruby/schema/paragraph.rb +2 -0
  159. data/lib/ratatui_ruby/schema/ratatui_logo.rb +4 -2
  160. data/lib/ratatui_ruby/schema/ratatui_mascot.rb +4 -2
  161. data/lib/ratatui_ruby/schema/rect.rb +2 -0
  162. data/lib/ratatui_ruby/schema/row.rb +2 -0
  163. data/lib/ratatui_ruby/schema/scrollbar.rb +4 -2
  164. data/lib/ratatui_ruby/schema/shape/label.rb +2 -0
  165. data/lib/ratatui_ruby/schema/sparkline.rb +4 -2
  166. data/lib/ratatui_ruby/schema/style.rb +2 -0
  167. data/lib/ratatui_ruby/schema/table.rb +2 -0
  168. data/lib/ratatui_ruby/schema/tabs.rb +4 -2
  169. data/lib/ratatui_ruby/schema/text.rb +2 -0
  170. data/lib/ratatui_ruby/scrollbar_state.rb +2 -0
  171. data/lib/ratatui_ruby/style/style.rb +2 -0
  172. data/lib/ratatui_ruby/style.rb +2 -0
  173. data/lib/ratatui_ruby/table_state.rb +2 -0
  174. data/lib/ratatui_ruby/test_helper/event_injection.rb +2 -0
  175. data/lib/ratatui_ruby/test_helper/snapshot.rb +2 -0
  176. data/lib/ratatui_ruby/test_helper/style_assertions.rb +2 -0
  177. data/lib/ratatui_ruby/test_helper/terminal.rb +2 -0
  178. data/lib/ratatui_ruby/test_helper/test_doubles.rb +2 -0
  179. data/lib/ratatui_ruby/test_helper.rb +5 -3
  180. data/lib/ratatui_ruby/tui/buffer_factories.rb +2 -0
  181. data/lib/ratatui_ruby/tui/canvas_factories.rb +2 -0
  182. data/lib/ratatui_ruby/tui/core.rb +2 -0
  183. data/lib/ratatui_ruby/tui/layout_factories.rb +2 -0
  184. data/lib/ratatui_ruby/tui/state_factories.rb +2 -0
  185. data/lib/ratatui_ruby/tui/style_factories.rb +2 -0
  186. data/lib/ratatui_ruby/tui/text_factories.rb +2 -0
  187. data/lib/ratatui_ruby/tui/widget_factories.rb +2 -0
  188. data/lib/ratatui_ruby/tui.rb +2 -0
  189. data/lib/ratatui_ruby/version.rb +3 -1
  190. data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +2 -0
  191. data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +2 -0
  192. data/lib/ratatui_ruby/widgets/bar_chart.rb +4 -2
  193. data/lib/ratatui_ruby/widgets/block.rb +4 -2
  194. data/lib/ratatui_ruby/widgets/calendar.rb +4 -2
  195. data/lib/ratatui_ruby/widgets/canvas.rb +2 -0
  196. data/lib/ratatui_ruby/widgets/cell.rb +2 -0
  197. data/lib/ratatui_ruby/widgets/center.rb +2 -0
  198. data/lib/ratatui_ruby/widgets/chart.rb +4 -2
  199. data/lib/ratatui_ruby/widgets/clear.rb +2 -0
  200. data/lib/ratatui_ruby/widgets/cursor.rb +2 -0
  201. data/lib/ratatui_ruby/widgets/gauge.rb +4 -2
  202. data/lib/ratatui_ruby/widgets/line_gauge.rb +4 -2
  203. data/lib/ratatui_ruby/widgets/list.rb +3 -1
  204. data/lib/ratatui_ruby/widgets/list_item.rb +2 -0
  205. data/lib/ratatui_ruby/widgets/overlay.rb +2 -0
  206. data/lib/ratatui_ruby/widgets/paragraph.rb +2 -0
  207. data/lib/ratatui_ruby/widgets/ratatui_logo.rb +4 -2
  208. data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +4 -2
  209. data/lib/ratatui_ruby/widgets/row.rb +2 -0
  210. data/lib/ratatui_ruby/widgets/scrollbar.rb +4 -2
  211. data/lib/ratatui_ruby/widgets/shape/label.rb +2 -0
  212. data/lib/ratatui_ruby/widgets/sparkline.rb +4 -2
  213. data/lib/ratatui_ruby/widgets/table.rb +2 -0
  214. data/lib/ratatui_ruby/widgets/tabs.rb +12 -8
  215. data/lib/ratatui_ruby/widgets.rb +2 -0
  216. data/lib/ratatui_ruby.rb +2 -0
  217. data/tasks/autodoc/examples.rb +2 -0
  218. data/tasks/autodoc/member.rb +2 -0
  219. data/tasks/autodoc/name.rb +2 -0
  220. data/tasks/autodoc.rake +2 -0
  221. data/tasks/bump/cargo_lockfile.rb +2 -0
  222. data/tasks/bump/changelog.rb +2 -0
  223. data/tasks/bump/header.rb +2 -0
  224. data/tasks/bump/history.rb +2 -0
  225. data/tasks/bump/links.rb +2 -0
  226. data/tasks/bump/manifest.rb +2 -0
  227. data/tasks/bump/ruby_gem.rb +2 -0
  228. data/tasks/bump/sem_ver.rb +2 -0
  229. data/tasks/bump/unreleased_section.rb +2 -0
  230. data/tasks/bump.rake +2 -0
  231. data/tasks/doc.rake +268 -0
  232. data/tasks/extension.rake +2 -0
  233. data/tasks/lint.rake +115 -0
  234. data/tasks/rdoc_config.rb +18 -4
  235. data/tasks/sourcehut.rake +2 -0
  236. data/tasks/terminal_preview/app_screenshot.rb +2 -0
  237. data/tasks/terminal_preview/crash_report.rb +2 -0
  238. data/tasks/terminal_preview/example_app.rb +2 -0
  239. data/tasks/terminal_preview/launcher_script.rb +2 -0
  240. data/tasks/terminal_preview/preview_collection.rb +2 -0
  241. data/tasks/terminal_preview/preview_timing.rb +2 -0
  242. data/tasks/terminal_preview/safety_confirmation.rb +2 -0
  243. data/tasks/terminal_preview/saved_screenshot.rb +2 -0
  244. data/tasks/terminal_preview/system_appearance.rb +2 -0
  245. data/tasks/terminal_preview/terminal_window.rb +2 -0
  246. data/tasks/terminal_preview/window_id.rb +2 -0
  247. data/tasks/terminal_preview.rake +2 -0
  248. data/tasks/test.rake +2 -0
  249. data/tasks/website/index_page.rb +2 -0
  250. data/tasks/website/version.rb +12 -2
  251. data/tasks/website/version_menu.rb +2 -0
  252. data/tasks/website/versioned_documentation.rb +2 -0
  253. data/tasks/website/website.rb +2 -0
  254. data/tasks/website.rake +2 -0
  255. metadata +72 -74
  256. data/doc/contributors/architectural_overhaul/chat_conversations.md +0 -4952
  257. data/doc/contributors/architectural_overhaul/implementation_plan.md +0 -60
  258. data/doc/contributors/architectural_overhaul/task.md +0 -37
  259. /data/doc/{application_testing.md → concepts/application_testing.md} +0 -0
  260. /data/doc/{async.md → concepts/async.md} +0 -0
  261. /data/doc/{interactive_design.md → concepts/interactive_design.md} +0 -0
  262. /data/doc/images/{widget_barchart_demo.png → widget_barchart.png} +0 -0
  263. /data/doc/images/{widget_block_demo.png → widget_block.png} +0 -0
  264. /data/doc/images/{widget_box_demo.png → widget_box.png} +0 -0
  265. /data/doc/images/{widget_calendar_demo.png → widget_calendar.png} +0 -0
  266. /data/doc/images/{widget_canvas_demo.png → widget_canvas.png} +0 -0
  267. /data/doc/images/{widget_cell_demo.png → widget_cell.png} +0 -0
  268. /data/doc/images/{widget_center_demo.png → widget_center.png} +0 -0
  269. /data/doc/images/{widget_chart_demo.png → widget_chart.png} +0 -0
  270. /data/doc/images/{widget_gauge_demo.png → widget_gauge.png} +0 -0
  271. /data/doc/images/{widget_line_gauge_demo.png → widget_line_gauge.png} +0 -0
  272. /data/doc/images/{widget_list_demo.png → widget_list.png} +0 -0
  273. /data/doc/images/{widget_map_demo.png → widget_map.png} +0 -0
  274. /data/doc/images/{widget_overlay_demo.png → widget_overlay.png} +0 -0
  275. /data/doc/images/{widget_popup_demo.png → widget_popup.png} +0 -0
  276. /data/doc/images/{widget_ratatui_logo_demo.png → widget_ratatui_logo.png} +0 -0
  277. /data/doc/images/{widget_ratatui_mascot_demo.png → widget_ratatui_mascot.png} +0 -0
  278. /data/doc/images/{widget_scrollbar_demo.png → widget_scrollbar.png} +0 -0
  279. /data/doc/images/{widget_sparkline_demo.png → widget_sparkline.png} +0 -0
  280. /data/doc/images/{widget_table_demo.png → widget_table.png} +0 -0
  281. /data/doc/images/{widget_tabs_demo.png → widget_tabs.png} +0 -0
  282. /data/doc/{v0.7.0_migration.md → migration/v0_7_0.md} +0 -0
  283. /data/doc/{debugging.md → troubleshooting/debugging.md} +0 -0
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -18,10 +20,10 @@ require "ratatui_ruby"
18
20
  #
19
21
  # Run the demo from the terminal:
20
22
  #
21
- # ruby examples/widget_box_demo/app.rb
23
+ # ruby examples/widget_box/app.rb
22
24
  #
23
- # rdoc-image:/doc/images/widget_box_demo.png
24
- class WidgetBoxDemo
25
+ # rdoc-image:/doc/images/widget_box.png
26
+ class WidgetBox
25
27
  def initialize
26
28
  # Border Types (ratatui native styles)
27
29
  @border_types = [
@@ -141,7 +143,7 @@ set: {
141
143
  end
142
144
 
143
145
  block = @tui.block(
144
- title: "Box Demo",
146
+ title: "Box",
145
147
  title_alignment: title_alignment_config[:alignment],
146
148
  title_style: title_style_config[:style],
147
149
  borders: [:all],
@@ -247,4 +249,4 @@ set: {
247
249
  end
248
250
  end
249
251
 
250
- WidgetBoxDemo.new.run if __FILE__ == $0
252
+ WidgetBox.new.run if __FILE__ == $0
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
5
5
 
6
6
  # Calendar Widget Example
7
7
 
8
- [![widget_calendar_demo](../../doc/images/widget_calendar_demo.png)](app.rb)
8
+ [![widget_calendar](../../doc/images/widget_calendar.png)](app.rb)
9
9
 
10
10
  Demonstrates a monthly calendar with customizable headers and event highlighting.
11
11
 
@@ -28,12 +28,15 @@ Rendering dates in a grid involves complex calculations for leap years and weekd
28
28
  ## Usage
29
29
 
30
30
  ```bash
31
- ruby examples/widget_calendar_demo/app.rb
31
+ ruby examples/widget_calendar/app.rb
32
32
  ```
33
33
 
34
34
  ## Learning Outcomes
35
35
 
36
36
  Use this example if you need to...
37
+
37
38
  - Display a date picker.
38
39
  - Show a schedule or timeline view.
39
- - Highlight specific dates (deadlines, holidays) on a calendar grid.
40
+ - Highlight specific dates (deadlines, holidays) on a calendar grid.
41
+
42
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -19,10 +21,10 @@ require "ratatui_ruby"
19
21
  #
20
22
  # Run the demo from the terminal:
21
23
  #
22
- # ruby examples/widget_calendar_demo/app.rb
24
+ # ruby examples/widget_calendar/app.rb
23
25
  #
24
- # rdoc-image:/doc/images/widget_calendar_demo.png
25
- class WidgetCalendarDemo
26
+ # rdoc-image:/doc/images/widget_calendar.png
27
+ class WidgetCalendar
26
28
  def initialize(date: nil)
27
29
  @date = date
28
30
  end
@@ -110,4 +112,4 @@ class WidgetCalendarDemo
110
112
  end
111
113
  end
112
114
 
113
- WidgetCalendarDemo.new.run if __FILE__ == $PROGRAM_NAME
115
+ WidgetCalendar.new.run if __FILE__ == $PROGRAM_NAME
@@ -1,6 +1,6 @@
1
- # Canvas Widget Demo
1
+ # Canvas (Circle, Line, Point, Rectangle) Example
2
2
 
3
- [![widget_canvas_demo](../../doc/images/widget_canvas_demo.png)](app.rb)
3
+ [![widget_canvas](../../doc/images/widget_canvas.png)](app.rb)
4
4
 
5
5
  <!--
6
6
  SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
@@ -1,15 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
8
10
 
9
- # Demo: Canvas Widget
11
+ # Canvas Widget
10
12
  # Demonstrates how to draw geometric shapes (Points, Lines, Rects, Circles)
11
13
  # on a high-resolution canvas.
12
- class WidgetCanvasDemo
14
+ class WidgetCanvas
13
15
  def initialize
14
16
  @x_offset = 0.0
15
17
  @y_offset = 0.0
@@ -78,7 +80,7 @@ class WidgetCanvasDemo
78
80
  x_bounds: [-100.0, 100.0],
79
81
  y_bounds: [-100.0, 100.0],
80
82
  marker: :braille,
81
- block: @tui.block(title: "Canvas Demo", borders: [:all])
83
+ block: @tui.block(title: "Canvas", borders: [:all])
82
84
  )
83
85
 
84
86
  # Main area for canvas
@@ -120,4 +122,4 @@ class WidgetCanvasDemo
120
122
  end
121
123
  end
122
124
 
123
- WidgetCanvasDemo.new.run if __FILE__ == $0
125
+ WidgetCanvas.new.run if __FILE__ == $0
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
5
5
 
6
6
  # Cell Widget Example
7
7
 
8
- [![widget_cell_demo](../../doc/images/widget_cell_demo.png)](app.rb)
8
+ [![widget_cell](../../doc/images/widget_cell.png)](app.rb)
9
9
 
10
10
  Demonstrates using `Cell` objects for granular control over individual character grid units.
11
11
 
@@ -25,12 +25,15 @@ Sometimes you need to render specific characters with unique styles outside of s
25
25
  ## Usage
26
26
 
27
27
  ```bash
28
- ruby examples/widget_cell_demo/app.rb
28
+ ruby examples/widget_cell/app.rb
29
29
  ```
30
30
 
31
31
  ## Learning Outcomes
32
32
 
33
33
  Use this example if you need to...
34
+
34
35
  - Create a custom widget (like a game board or specialized graph).
35
36
  - Style specific cells in a Table (e.g., Green "OK", Red "FAIL").
36
- - Understand how to position content precisely with `Cell`.
37
+ - Understand how to position content precisely with `Cell`.
38
+
39
+ [Read the source code →](app.rb)
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
1
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
2
5
  #
3
6
  # SPDX-License-Identifier: AGPL-3.0-or-later
4
-
5
- # frozen_string_literal: true
7
+ #++
6
8
 
7
9
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
8
10
  require "ratatui_ruby"
@@ -29,7 +31,7 @@ class CheckeredBackground
29
31
  end
30
32
  end
31
33
 
32
- class WidgetCellDemo
34
+ class WidgetCell
33
35
  def run
34
36
  RatatuiRuby.run do |tui|
35
37
  @tui = tui
@@ -82,7 +84,7 @@ class WidgetCellDemo
82
84
  width_percent: 50,
83
85
  height_percent: 50,
84
86
  child: @tui.paragraph(
85
- text: "Custom Widget Demo\n(CheckeredBackground)",
87
+ text: "Custom Widget\n(CheckeredBackground)",
86
88
  alignment: :center,
87
89
  block: @tui.block(borders: :all, title: "Overlay")
88
90
  )
@@ -107,5 +109,5 @@ class WidgetCellDemo
107
109
  end
108
110
 
109
111
  if __FILE__ == $0
110
- WidgetCellDemo.new.run
112
+ WidgetCell.new.run
111
113
  end
@@ -1,6 +1,6 @@
1
- # Center Widget Demo
1
+ # Center Example
2
2
 
3
- [![widget_center_demo](../../doc/images/widget_center_demo.png)](app.rb)
3
+ [![widget_center](../../doc/images/widget_center.png)](app.rb)
4
4
 
5
5
  <!--
6
6
  SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
@@ -1,15 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
8
10
 
9
- # Demo: Center Widget
11
+ # Center Widget
10
12
  # Demonstrates how to center content horizontally and vertically
11
13
  # with adjustable width/height percentages.
12
- class WidgetCenterDemo
14
+ class WidgetCenter
13
15
  def initialize
14
16
  @width_percent = 50
15
17
  @height_percent = 50
@@ -39,7 +41,7 @@ class WidgetCenterDemo
39
41
  # 1. Main Area
40
42
  # Background block frames the centered content
41
43
  bg_block = @tui.block(
42
- title: "Center Widget Demo",
44
+ title: "Center Widget",
43
45
  borders: [:all],
44
46
  style: @tui.style(fg: :gray)
45
47
  )
@@ -113,4 +115,4 @@ class WidgetCenterDemo
113
115
  end
114
116
  end
115
117
 
116
- WidgetCenterDemo.new.run if __FILE__ == $0
118
+ WidgetCenter.new.run if __FILE__ == $0
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
3
  SPDX-License-Identifier: CC-BY-SA-4.0
4
4
  -->
5
5
 
6
- # Chart Widget Example
6
+ # Chart (Dataset, Axis) Example
7
7
 
8
- [![widget_chart_demo](../../doc/images/widget_chart_demo.png)](app.rb)
8
+ [![widget_chart](../../doc/images/widget_chart.png)](app.rb)
9
9
 
10
10
  Demonstrates Cartesian plotting with interactive styling and configuration.
11
11
 
@@ -30,12 +30,15 @@ Trends and patterns are invisible in raw logs. Charts visualize X/Y datasets to
30
30
  ## Usage
31
31
 
32
32
  ```bash
33
- ruby examples/widget_chart_demo/app.rb
33
+ ruby examples/widget_chart/app.rb
34
34
  ```
35
35
 
36
36
  ## Learning Outcomes
37
37
 
38
38
  Use this example if you need to...
39
+
39
40
  - Plot real-time data monitoring (CPU history, request latency).
40
41
  - Visualize mathematical functions.
41
- - Compare multiple datasets on the same axis.
42
+ - Compare multiple datasets on the same axis.
43
+
44
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -18,10 +20,10 @@ require "ratatui_ruby"
18
20
  #
19
21
  # Run the demo from the terminal:
20
22
  #
21
- # ruby examples/widget_chart_demo/app.rb
23
+ # ruby examples/widget_chart/app.rb
22
24
  #
23
- # rdoc-image:/doc/images/widget_chart_demo.png
24
- class WidgetChartDemo
25
+ # rdoc-image:/doc/images/widget_chart.png
26
+ class WidgetChart
25
27
  MARKERS = [
26
28
  { name: "Dot (·)", marker: :dot },
27
29
  { name: "Braille", marker: :braille },
@@ -137,7 +139,7 @@ class WidgetChartDemo
137
139
  labels_alignment: Y_ALIGNMENTS[@y_alignment_index][:alignment]
138
140
  ),
139
141
  block: @tui.block(
140
- title: "Chart Widget Demo",
142
+ title: "Chart Widget",
141
143
  borders: [:all]
142
144
  ),
143
145
  legend_position: LEGEND_POSITIONS[@legend_position_index][:position],
@@ -215,4 +217,4 @@ class WidgetChartDemo
215
217
  end
216
218
  end
217
219
 
218
- WidgetChartDemo.new.run if __FILE__ == $PROGRAM_NAME
220
+ WidgetChart.new.run if __FILE__ == $PROGRAM_NAME
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
5
5
 
6
6
  # Gauge Widget Example
7
7
 
8
- [![widget_gauge_demo](../../doc/images/widget_gauge_demo.png)](app.rb)
8
+ [![widget_gauge](../../doc/images/widget_gauge.png)](app.rb)
9
9
 
10
10
  Demonstrates progress bars with interactive configuration.
11
11
 
@@ -30,12 +30,15 @@ Long-running tasks create anxiety. Users need to know the system is working. Gau
30
30
  ## Usage
31
31
 
32
32
  ```bash
33
- ruby examples/widget_gauge_demo/app.rb
33
+ ruby examples/widget_gauge/app.rb
34
34
  ```
35
35
 
36
36
  ## Learning Outcomes
37
37
 
38
38
  Use this example if you need to...
39
+
39
40
  - Show download or upload progress.
40
41
  - Visualize resource quotas (disk space, memory usage).
41
- - Create "health bars" or status indicators.
42
+ - Create "health bars" or status indicators.
43
+
44
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -18,10 +20,10 @@ require "ratatui_ruby"
18
20
  #
19
21
  # Run the demo from the terminal:
20
22
  #
21
- # ruby examples/widget_gauge_demo/app.rb
23
+ # ruby examples/widget_gauge/app.rb
22
24
  #
23
- # rdoc-image:/doc/images/widget_gauge_demo.png
24
- class WidgetGaugeDemo
25
+ # rdoc-image:/doc/images/widget_gauge.png
26
+ class WidgetGauge
25
27
  def initialize
26
28
  @ratio = 0.65
27
29
  @ratios = [0.0, 0.25, 0.5, 0.65, 0.8, 0.95, 1.0]
@@ -108,7 +110,7 @@ class WidgetGaugeDemo
108
110
 
109
111
  # Render title
110
112
  title = @tui.paragraph(
111
- text: "Gauge Widget Demo",
113
+ text: "Gauge Widget",
112
114
  style: @tui.style(modifiers: [:bold])
113
115
  )
114
116
  frame.render_widget(title, title_area)
@@ -209,4 +211,4 @@ class WidgetGaugeDemo
209
211
  end
210
212
  end
211
213
 
212
- WidgetGaugeDemo.new.run if __FILE__ == $PROGRAM_NAME
214
+ WidgetGauge.new.run if __FILE__ == $PROGRAM_NAME
@@ -3,7 +3,7 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
3
  SPDX-License-Identifier: CC-BY-SA-4.0
4
4
  -->
5
5
 
6
- # Layout Split Example
6
+ # Layout (Split, Grid) Example
7
7
 
8
8
  [![widget_layout_split](../../doc/images/widget_layout_split.png)](app.rb)
9
9
 
@@ -38,7 +38,10 @@ ruby examples/widget_layout_split/app.rb
38
38
  ## Learning Outcomes
39
39
 
40
40
  Use this example if you need to...
41
+
41
42
  - Build responsive dashboards.
42
43
  - Create 3-column layouts where the middle content fills remaining space.
43
44
  - Center a modal dialog on the screen.
44
- - Distribute buttons evenly across a control bar.
45
+ - Distribute buttons evenly across a control bar.
46
+
47
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -174,7 +176,7 @@ class WidgetLayoutSplit
174
176
 
175
177
  # Render title
176
178
  title = @tui.paragraph(
177
- text: "Layout.split Demo",
179
+ text: "Layout.split",
178
180
  style: @tui.style(modifiers: [:bold])
179
181
  )
180
182
  frame.render_widget(title, title_area)
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
5
5
 
6
6
  # Line Gauge Widget Example
7
7
 
8
- [![widget_line_gauge_demo](../../doc/images/widget_line_gauge_demo.png)](app.rb)
8
+ [![widget_line_gauge](../../doc/images/widget_line_gauge.png)](app.rb)
9
9
 
10
10
  Demonstrates compact progress bars for constrained spaces.
11
11
 
@@ -30,12 +30,15 @@ Standard block gauges take up vertical space. Sometimes you only have one line t
30
30
  ## Usage
31
31
 
32
32
  ```bash
33
- ruby examples/widget_line_gauge_demo/app.rb
33
+ ruby examples/widget_line_gauge/app.rb
34
34
  ```
35
35
 
36
36
  ## Learning Outcomes
37
37
 
38
38
  Use this example if you need to...
39
+
39
40
  - Add a progress bar to a list item or table row.
40
41
  - Create a status line at the bottom of the screen.
41
- - Show multiple metrics (CPU, RAM, Net) in a compact list.
42
+ - Show multiple metrics (CPU, RAM, Net) in a compact list.
43
+
44
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -18,10 +20,10 @@ require "ratatui_ruby"
18
20
  #
19
21
  # Run the demo from the terminal:
20
22
  #
21
- # ruby examples/widget_line_gauge_demo/app.rb
23
+ # ruby examples/widget_line_gauge/app.rb
22
24
  #
23
- # rdoc-image:/doc/images/widget_line_gauge_demo.png
24
- class WidgetLineGaugeDemo
25
+ # rdoc-image:/doc/images/widget_line_gauge.png
26
+ class WidgetLineGauge
25
27
  def initialize
26
28
  @ratio = 0.5
27
29
  @ratios = [0.2, 0.35, 0.5, 0.65, 0.8, 0.95]
@@ -119,7 +121,7 @@ class WidgetLineGaugeDemo
119
121
  )
120
122
 
121
123
  # Render title
122
- title = @tui.paragraph(text: "LineGauge Widget Demo - Cycle attributes with hotkeys")
124
+ title = @tui.paragraph(text: "LineGauge Widget - Cycle attributes with hotkeys")
123
125
  frame.render_widget(title, title_area)
124
126
 
125
127
  # Example 1: Static gauge showing all features
@@ -214,4 +216,4 @@ class WidgetLineGaugeDemo
214
216
  end
215
217
  end
216
218
 
217
- WidgetLineGaugeDemo.new.run if __FILE__ == $PROGRAM_NAME
219
+ WidgetLineGauge.new.run if __FILE__ == $PROGRAM_NAME
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
3
  SPDX-License-Identifier: CC-BY-SA-4.0
4
4
  -->
5
5
 
6
- # List Widget Example
6
+ # List (ListItem) Example
7
7
 
8
- [![widget_list_demo](../../doc/images/widget_list_demo.png)](app.rb)
8
+ [![widget_list](../../doc/images/widget_list.png)](app.rb)
9
9
 
10
10
  Demonstrates a selectable list with extensive configuration options.
11
11
 
@@ -37,13 +37,16 @@ Lists are the workhorse of terminal interfaces. Managing selection state, scroll
37
37
  ## Usage
38
38
 
39
39
  ```bash
40
- ruby examples/widget_list_demo/app.rb
40
+ ruby examples/widget_list/app.rb
41
41
  ```
42
42
 
43
43
  ## Learning Outcomes
44
44
 
45
45
  Use this example if you need to...
46
+
46
47
  - Create a file explorer.
47
48
  - Build a navigation menu.
48
49
  - Display a log where users can scroll back to read history.
49
- - Implement "infinite select" behaviors.
50
+ - Implement "infinite select" behaviors.
51
+
52
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -19,10 +21,10 @@ require "faker" # Use Faker for large, realistic datasets
19
21
  #
20
22
  # Run the demo from the terminal:
21
23
  #
22
- # ruby examples/widget_list_demo/app.rb
24
+ # ruby examples/widget_list/app.rb
23
25
  #
24
- # rdoc-image:/doc/images/widget_list_demo.png
25
- class WidgetListDemo
26
+ # rdoc-image:/doc/images/widget_list.png
27
+ class WidgetList
26
28
  # Initializes the demo with example data and default configuration.
27
29
  def initialize
28
30
  Faker::Config.random = Random.new(12345)
@@ -253,7 +255,7 @@ class WidgetListDemo
253
255
  )
254
256
 
255
257
  # Render title
256
- title = @tui.paragraph(text: "List Widget Demo - Interactive Attribute Cycling")
258
+ title = @tui.paragraph(text: "List Widget - Interactive Attribute Cycling")
257
259
  frame.render_widget(title, title_area)
258
260
 
259
261
  # Render list
@@ -363,4 +365,4 @@ class WidgetListDemo
363
365
  end
364
366
  end
365
367
 
366
- WidgetListDemo.new.run if __FILE__ == $PROGRAM_NAME
368
+ WidgetList.new.run if __FILE__ == $PROGRAM_NAME
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
3
3
  SPDX-License-Identifier: CC-BY-SA-4.0
4
4
  -->
5
5
 
6
- # Canvas Widget Example
6
+ # Map (World Map, Canvas) Example
7
7
 
8
- [![widget_map_demo](../../doc/images/widget_map_demo.png)](app.rb)
8
+ [![widget_map](../../doc/images/widget_map.png)](app.rb)
9
9
 
10
10
  Demonstrates drawing custom graphics and maps using the standard Braille and Block patterns.
11
11
 
@@ -28,12 +28,15 @@ Standard widgets are great for text, but sometimes you need to draw. The `Canvas
28
28
  ## Usage
29
29
 
30
30
  ```bash
31
- ruby examples/widget_map_demo/app.rb
31
+ ruby examples/widget_map/app.rb
32
32
  ```
33
33
 
34
34
  ## Learning Outcomes
35
35
 
36
36
  Use this example if you need to...
37
+
37
38
  - Render geographic data (World, USA, Europe).
38
39
  - Overlay custom labels and markers on a map.
39
- - Animate visual elements on top of a static background.
40
+ - Animate visual elements on top of a static background.
41
+
42
+ [Read the source code →](app.rb)
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
8
10
 
9
11
  # An example of the Canvas widget showing a world map and animated shapes.
10
- class WidgetMapDemo
12
+ class WidgetMap
11
13
  include RatatuiRuby::Widgets
12
14
 
13
15
  COLORS = [:black, :blue, :white, nil].freeze
@@ -90,4 +92,4 @@ class WidgetMapDemo
90
92
  end
91
93
  end
92
94
 
93
- WidgetMapDemo.new.run if __FILE__ == $PROGRAM_NAME
95
+ WidgetMap.new.run if __FILE__ == $PROGRAM_NAME
@@ -2,9 +2,9 @@
2
2
  SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
3
3
  SPDX-License-Identifier: CC-BY-SA-4.0
4
4
  -->
5
- # Overlay Widget Demo
5
+ # Overlay Example
6
6
 
7
- [![Overlay Demo](../../doc/images/widget_overlay_demo.png)](app.rb)
7
+ [![](../../doc/images/widget_overlay.png)](app.rb)
8
8
 
9
9
  This example demonstrates the `Overlay` composition pattern for layering widgets with depth. Modals, notifications, and floating panels all require stacking widgets on top of each other.
10
10
 
@@ -25,12 +25,15 @@ This example demonstrates the `Overlay` composition pattern for layering widgets
25
25
  ## Usage
26
26
 
27
27
  ```bash
28
- ruby examples/widget_overlay_demo/app.rb
28
+ ruby examples/widget_overlay/app.rb
29
29
  ```
30
30
 
31
31
  ## Learning Outcomes
32
32
 
33
33
  Use this example if you need to...
34
+
34
35
  - Build modal dialogs or confirmation popups.
35
36
  - Layer notifications over existing content.
36
37
  - Understand the Clear widget's role in opaque overlays.
38
+
39
+ [Read the source code →](app.rb)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  $LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
7
9
  require "ratatui_ruby"
@@ -33,9 +35,9 @@ HEADLINES = [
33
35
  "Innovative Urban Planning Reduces Traffic Congestion by 30%",
34
36
  ].freeze
35
37
 
36
- # Overlay Demo Example
38
+ # Overlay Example
37
39
  # Demonstrates the Overlay widget for layering widgets with depth.
38
- class WidgetOverlayDemo
40
+ class WidgetOverlay
39
41
  def initialize
40
42
  @layer_count = 2 # Start with 2 layers visible
41
43
  @swapped = false
@@ -245,4 +247,4 @@ class WidgetOverlayDemo
245
247
  end
246
248
  end
247
249
 
248
- WidgetOverlayDemo.new.run if __FILE__ == $PROGRAM_NAME
250
+ WidgetOverlay.new.run if __FILE__ == $PROGRAM_NAME