ratatui_ruby 0.3.1 → 0.5.0

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 (350) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +14 -12
  3. data/.builds/ruby-3.3.yml +14 -12
  4. data/.builds/ruby-3.4.yml +14 -12
  5. data/.builds/ruby-4.0.0.yml +14 -12
  6. data/AGENTS.md +89 -132
  7. data/CHANGELOG.md +223 -1
  8. data/README.md +23 -16
  9. data/REUSE.toml +20 -0
  10. data/doc/application_architecture.md +176 -0
  11. data/doc/application_testing.md +17 -10
  12. data/doc/contributors/design/ruby_frontend.md +11 -7
  13. data/doc/contributors/developing_examples.md +261 -0
  14. data/doc/contributors/documentation_style.md +104 -0
  15. data/doc/contributors/dwim_dx.md +366 -0
  16. data/doc/contributors/index.md +2 -0
  17. data/doc/custom.css +14 -0
  18. data/doc/event_handling.md +125 -0
  19. data/doc/images/app_all_events.png +0 -0
  20. data/doc/images/app_analytics.png +0 -0
  21. data/doc/images/app_color_picker.png +0 -0
  22. data/doc/images/app_custom_widget.png +0 -0
  23. data/doc/images/app_login_form.png +0 -0
  24. data/doc/images/app_map_demo.png +0 -0
  25. data/doc/images/app_mouse_events.png +0 -0
  26. data/doc/images/app_table_select.png +0 -0
  27. data/doc/images/verify_quickstart_dsl.png +0 -0
  28. data/doc/images/verify_quickstart_layout.png +0 -0
  29. data/doc/images/verify_quickstart_lifecycle.png +0 -0
  30. data/doc/images/verify_readme_usage.png +0 -0
  31. data/doc/images/widget_barchart_demo.png +0 -0
  32. data/doc/images/widget_block_padding.png +0 -0
  33. data/doc/images/widget_block_titles.png +0 -0
  34. data/doc/images/widget_box_demo.png +0 -0
  35. data/doc/images/widget_calendar_demo.png +0 -0
  36. data/doc/images/widget_cell_demo.png +0 -0
  37. data/doc/images/widget_chart_demo.png +0 -0
  38. data/doc/images/widget_gauge_demo.png +0 -0
  39. data/doc/images/widget_layout_split.png +0 -0
  40. data/doc/images/widget_line_gauge_demo.png +0 -0
  41. data/doc/images/widget_list_demo.png +0 -0
  42. data/doc/images/widget_list_styles.png +0 -0
  43. data/doc/images/widget_popup_demo.png +0 -0
  44. data/doc/images/widget_ratatui_logo_demo.png +0 -0
  45. data/doc/images/widget_ratatui_mascot_demo.png +0 -0
  46. data/doc/images/widget_rect.png +0 -0
  47. data/doc/images/widget_render.png +0 -0
  48. data/doc/images/widget_rich_text.png +0 -0
  49. data/doc/images/widget_scroll_text.png +0 -0
  50. data/doc/images/widget_scrollbar_demo.png +0 -0
  51. data/doc/images/widget_sparkline_demo.png +0 -0
  52. data/doc/images/widget_style_colors.png +0 -0
  53. data/doc/images/widget_table_flex.png +0 -0
  54. data/doc/images/widget_tabs_demo.png +0 -0
  55. data/doc/index.md +1 -0
  56. data/doc/interactive_design.md +116 -0
  57. data/doc/quickstart.md +186 -84
  58. data/examples/app_all_events/README.md +81 -0
  59. data/examples/app_all_events/app.rb +93 -0
  60. data/examples/app_all_events/model/event_color_cycle.rb +41 -0
  61. data/examples/app_all_events/model/event_entry.rb +75 -0
  62. data/examples/app_all_events/model/events.rb +180 -0
  63. data/examples/app_all_events/model/highlight.rb +57 -0
  64. data/examples/app_all_events/model/timestamp.rb +54 -0
  65. data/examples/app_all_events/test/snapshots/after_focus_lost.txt +24 -0
  66. data/examples/app_all_events/test/snapshots/after_focus_regained.txt +24 -0
  67. data/examples/app_all_events/test/snapshots/after_horizontal_resize.txt +24 -0
  68. data/examples/app_all_events/test/snapshots/after_key_a.txt +24 -0
  69. data/examples/app_all_events/test/snapshots/after_key_ctrl_x.txt +24 -0
  70. data/examples/app_all_events/test/snapshots/after_mouse_click.txt +24 -0
  71. data/examples/app_all_events/test/snapshots/after_mouse_drag.txt +24 -0
  72. data/examples/app_all_events/test/snapshots/after_multiple_events.txt +24 -0
  73. data/examples/app_all_events/test/snapshots/after_paste.txt +24 -0
  74. data/examples/app_all_events/test/snapshots/after_resize.txt +24 -0
  75. data/examples/app_all_events/test/snapshots/after_right_click.txt +24 -0
  76. data/examples/app_all_events/test/snapshots/after_vertical_resize.txt +24 -0
  77. data/examples/app_all_events/test/snapshots/initial_state.txt +24 -0
  78. data/examples/app_all_events/view/app_view.rb +78 -0
  79. data/examples/app_all_events/view/controls_view.rb +50 -0
  80. data/examples/app_all_events/view/counts_view.rb +55 -0
  81. data/examples/app_all_events/view/live_view.rb +69 -0
  82. data/examples/app_all_events/view/log_view.rb +60 -0
  83. data/{lib/ratatui_ruby/output.rb → examples/app_all_events/view.rb} +1 -1
  84. data/examples/app_all_events/view_state.rb +42 -0
  85. data/examples/app_color_picker/README.md +94 -0
  86. data/examples/app_color_picker/app.rb +112 -0
  87. data/examples/app_color_picker/clipboard.rb +84 -0
  88. data/examples/app_color_picker/color.rb +191 -0
  89. data/examples/app_color_picker/copy_dialog.rb +170 -0
  90. data/examples/app_color_picker/harmony.rb +56 -0
  91. data/examples/app_color_picker/input.rb +142 -0
  92. data/examples/app_color_picker/palette.rb +80 -0
  93. data/examples/app_color_picker/scene.rb +201 -0
  94. data/examples/app_login_form/app.rb +108 -0
  95. data/examples/app_map_demo/app.rb +93 -0
  96. data/examples/app_table_select/app.rb +201 -0
  97. data/examples/verify_quickstart_dsl/app.rb +45 -0
  98. data/examples/verify_quickstart_layout/app.rb +69 -0
  99. data/examples/verify_quickstart_lifecycle/app.rb +48 -0
  100. data/examples/verify_readme_usage/app.rb +34 -0
  101. data/examples/widget_barchart_demo/app.rb +238 -0
  102. data/examples/widget_block_padding/app.rb +67 -0
  103. data/examples/widget_block_titles/app.rb +69 -0
  104. data/examples/widget_box_demo/app.rb +250 -0
  105. data/examples/widget_calendar_demo/app.rb +109 -0
  106. data/examples/widget_cell_demo/app.rb +104 -0
  107. data/examples/widget_chart_demo/app.rb +213 -0
  108. data/examples/widget_gauge_demo/app.rb +212 -0
  109. data/examples/widget_layout_split/app.rb +246 -0
  110. data/examples/widget_line_gauge_demo/app.rb +217 -0
  111. data/examples/widget_list_demo/app.rb +382 -0
  112. data/examples/widget_list_styles/app.rb +141 -0
  113. data/examples/widget_popup_demo/app.rb +104 -0
  114. data/examples/widget_ratatui_logo_demo/app.rb +103 -0
  115. data/examples/widget_ratatui_mascot_demo/app.rb +93 -0
  116. data/examples/widget_rect/app.rb +205 -0
  117. data/examples/widget_render/app.rb +184 -0
  118. data/examples/widget_rich_text/app.rb +137 -0
  119. data/examples/widget_scroll_text/app.rb +108 -0
  120. data/examples/widget_scrollbar_demo/app.rb +153 -0
  121. data/examples/widget_sparkline_demo/app.rb +274 -0
  122. data/examples/widget_style_colors/app.rb +102 -0
  123. data/examples/widget_table_flex/app.rb +95 -0
  124. data/examples/widget_tabs_demo/app.rb +167 -0
  125. data/ext/ratatui_ruby/Cargo.lock +889 -115
  126. data/ext/ratatui_ruby/Cargo.toml +4 -3
  127. data/ext/ratatui_ruby/clippy.toml +7 -0
  128. data/ext/ratatui_ruby/extconf.rb +7 -0
  129. data/ext/ratatui_ruby/src/events.rs +293 -219
  130. data/ext/ratatui_ruby/src/frame.rs +115 -0
  131. data/ext/ratatui_ruby/src/lib.rs +105 -24
  132. data/ext/ratatui_ruby/src/rendering.rs +94 -10
  133. data/ext/ratatui_ruby/src/style.rs +357 -93
  134. data/ext/ratatui_ruby/src/terminal.rs +121 -31
  135. data/ext/ratatui_ruby/src/text.rs +178 -0
  136. data/ext/ratatui_ruby/src/widgets/barchart.rs +99 -24
  137. data/ext/ratatui_ruby/src/widgets/block.rs +32 -3
  138. data/ext/ratatui_ruby/src/widgets/calendar.rs +45 -44
  139. data/ext/ratatui_ruby/src/widgets/canvas.rs +44 -9
  140. data/ext/ratatui_ruby/src/widgets/chart.rs +79 -27
  141. data/ext/ratatui_ruby/src/widgets/clear.rs +3 -1
  142. data/ext/ratatui_ruby/src/widgets/gauge.rs +11 -4
  143. data/ext/ratatui_ruby/src/widgets/layout.rs +223 -15
  144. data/ext/ratatui_ruby/src/widgets/line_gauge.rs +92 -0
  145. data/ext/ratatui_ruby/src/widgets/list.rs +114 -11
  146. data/ext/ratatui_ruby/src/widgets/mod.rs +3 -0
  147. data/ext/ratatui_ruby/src/widgets/overlay.rs +4 -2
  148. data/ext/ratatui_ruby/src/widgets/paragraph.rs +35 -13
  149. data/ext/ratatui_ruby/src/widgets/ratatui_logo.rs +40 -0
  150. data/ext/ratatui_ruby/src/widgets/ratatui_mascot.rs +51 -0
  151. data/ext/ratatui_ruby/src/widgets/scrollbar.rs +61 -7
  152. data/ext/ratatui_ruby/src/widgets/sparkline.rs +73 -6
  153. data/ext/ratatui_ruby/src/widgets/table.rs +177 -64
  154. data/ext/ratatui_ruby/src/widgets/tabs.rs +105 -5
  155. data/lib/ratatui_ruby/cell.rb +166 -0
  156. data/lib/ratatui_ruby/event/focus_gained.rb +49 -0
  157. data/lib/ratatui_ruby/event/focus_lost.rb +50 -0
  158. data/lib/ratatui_ruby/event/key.rb +211 -0
  159. data/lib/ratatui_ruby/event/mouse.rb +124 -0
  160. data/lib/ratatui_ruby/event/none.rb +43 -0
  161. data/lib/ratatui_ruby/event/paste.rb +71 -0
  162. data/lib/ratatui_ruby/event/resize.rb +80 -0
  163. data/lib/ratatui_ruby/event.rb +131 -0
  164. data/lib/ratatui_ruby/frame.rb +87 -0
  165. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +45 -0
  166. data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +23 -0
  167. data/lib/ratatui_ruby/schema/bar_chart.rb +226 -17
  168. data/lib/ratatui_ruby/schema/block.rb +178 -11
  169. data/lib/ratatui_ruby/schema/calendar.rb +70 -14
  170. data/lib/ratatui_ruby/schema/canvas.rb +213 -46
  171. data/lib/ratatui_ruby/schema/center.rb +46 -8
  172. data/lib/ratatui_ruby/schema/chart.rb +134 -32
  173. data/lib/ratatui_ruby/schema/clear.rb +22 -53
  174. data/lib/ratatui_ruby/schema/constraint.rb +72 -12
  175. data/lib/ratatui_ruby/schema/cursor.rb +23 -5
  176. data/lib/ratatui_ruby/schema/draw.rb +53 -0
  177. data/lib/ratatui_ruby/schema/gauge.rb +56 -12
  178. data/lib/ratatui_ruby/schema/layout.rb +91 -9
  179. data/lib/ratatui_ruby/schema/line_gauge.rb +78 -0
  180. data/lib/ratatui_ruby/schema/list.rb +92 -16
  181. data/lib/ratatui_ruby/schema/overlay.rb +29 -3
  182. data/lib/ratatui_ruby/schema/paragraph.rb +82 -25
  183. data/lib/ratatui_ruby/schema/ratatui_logo.rb +29 -0
  184. data/lib/ratatui_ruby/schema/ratatui_mascot.rb +34 -0
  185. data/lib/ratatui_ruby/schema/rect.rb +59 -10
  186. data/lib/ratatui_ruby/schema/scrollbar.rb +127 -19
  187. data/lib/ratatui_ruby/schema/shape/label.rb +66 -0
  188. data/lib/ratatui_ruby/schema/sparkline.rb +120 -12
  189. data/lib/ratatui_ruby/schema/style.rb +39 -11
  190. data/lib/ratatui_ruby/schema/table.rb +109 -18
  191. data/lib/ratatui_ruby/schema/tabs.rb +71 -10
  192. data/lib/ratatui_ruby/schema/text.rb +90 -0
  193. data/lib/ratatui_ruby/session/autodoc.rb +417 -0
  194. data/lib/ratatui_ruby/session.rb +163 -0
  195. data/lib/ratatui_ruby/test_helper.rb +322 -13
  196. data/lib/ratatui_ruby/version.rb +1 -1
  197. data/lib/ratatui_ruby.rb +184 -38
  198. data/sig/examples/app_all_events/app.rbs +11 -0
  199. data/sig/examples/app_all_events/model/event_entry.rbs +16 -0
  200. data/sig/examples/app_all_events/model/events.rbs +15 -0
  201. data/sig/examples/app_all_events/model/timestamp.rbs +11 -0
  202. data/sig/examples/app_all_events/view/app_view.rbs +8 -0
  203. data/sig/examples/app_all_events/view/controls_view.rbs +6 -0
  204. data/sig/examples/app_all_events/view/counts_view.rbs +6 -0
  205. data/sig/examples/app_all_events/view/live_view.rbs +6 -0
  206. data/sig/examples/app_all_events/view/log_view.rbs +6 -0
  207. data/sig/examples/app_all_events/view.rbs +8 -0
  208. data/sig/examples/app_all_events/view_state.rbs +15 -0
  209. data/sig/examples/app_color_picker/app.rbs +12 -0
  210. data/sig/examples/app_login_form/app.rbs +11 -0
  211. data/sig/examples/app_map_demo/app.rbs +11 -0
  212. data/sig/examples/app_table_select/app.rbs +11 -0
  213. data/sig/examples/verify_quickstart_dsl/app.rbs +11 -0
  214. data/sig/examples/verify_quickstart_lifecycle/app.rbs +11 -0
  215. data/sig/examples/verify_readme_usage/app.rbs +11 -0
  216. data/sig/examples/widget_block_padding/app.rbs +11 -0
  217. data/sig/examples/widget_block_titles/app.rbs +11 -0
  218. data/sig/examples/widget_box_demo/app.rbs +11 -0
  219. data/sig/examples/widget_calendar_demo/app.rbs +11 -0
  220. data/sig/examples/widget_cell_demo/app.rbs +11 -0
  221. data/sig/examples/widget_chart_demo/app.rbs +11 -0
  222. data/sig/examples/widget_gauge_demo/app.rbs +11 -0
  223. data/sig/examples/widget_layout_split/app.rbs +10 -0
  224. data/sig/examples/widget_line_gauge_demo/app.rbs +11 -0
  225. data/sig/examples/widget_list_demo/app.rbs +12 -0
  226. data/sig/examples/widget_list_styles/app.rbs +11 -0
  227. data/sig/examples/widget_popup_demo/app.rbs +11 -0
  228. data/sig/examples/widget_ratatui_logo_demo/app.rbs +11 -0
  229. data/sig/examples/widget_ratatui_mascot_demo/app.rbs +11 -0
  230. data/sig/examples/widget_rect/app.rbs +12 -0
  231. data/sig/examples/widget_render/app.rbs +10 -0
  232. data/sig/examples/widget_rich_text/app.rbs +11 -0
  233. data/sig/examples/widget_scroll_text/app.rbs +11 -0
  234. data/sig/examples/widget_scrollbar_demo/app.rbs +11 -0
  235. data/sig/examples/widget_sparkline_demo/app.rbs +10 -0
  236. data/sig/examples/widget_style_colors/app.rbs +14 -0
  237. data/sig/examples/widget_table_flex/app.rbs +11 -0
  238. data/sig/ratatui_ruby/event.rbs +69 -0
  239. data/sig/ratatui_ruby/frame.rbs +9 -0
  240. data/sig/ratatui_ruby/ratatui_ruby.rbs +5 -3
  241. data/sig/ratatui_ruby/schema/bar_chart/bar.rbs +16 -0
  242. data/sig/ratatui_ruby/schema/bar_chart/bar_group.rbs +13 -0
  243. data/sig/ratatui_ruby/schema/bar_chart.rbs +20 -2
  244. data/sig/ratatui_ruby/schema/block.rbs +5 -4
  245. data/sig/ratatui_ruby/schema/calendar.rbs +6 -2
  246. data/sig/ratatui_ruby/schema/canvas.rbs +52 -39
  247. data/sig/ratatui_ruby/schema/center.rbs +3 -3
  248. data/sig/ratatui_ruby/schema/chart.rbs +8 -5
  249. data/sig/ratatui_ruby/schema/constraint.rbs +8 -5
  250. data/sig/ratatui_ruby/schema/cursor.rbs +1 -1
  251. data/sig/ratatui_ruby/schema/draw.rbs +27 -0
  252. data/sig/ratatui_ruby/schema/gauge.rbs +4 -2
  253. data/sig/ratatui_ruby/schema/layout.rbs +11 -1
  254. data/sig/ratatui_ruby/schema/line_gauge.rbs +16 -0
  255. data/sig/ratatui_ruby/schema/list.rbs +5 -1
  256. data/sig/ratatui_ruby/schema/paragraph.rbs +4 -1
  257. data/sig/ratatui_ruby/schema/ratatui_logo.rbs +8 -0
  258. data/sig/ratatui_ruby/{buffer.rbs → schema/ratatui_mascot.rbs} +4 -3
  259. data/sig/ratatui_ruby/schema/rect.rbs +2 -1
  260. data/sig/ratatui_ruby/schema/scrollbar.rbs +18 -2
  261. data/sig/ratatui_ruby/schema/sparkline.rbs +6 -2
  262. data/sig/ratatui_ruby/schema/table.rbs +8 -1
  263. data/sig/ratatui_ruby/schema/tabs.rbs +5 -1
  264. data/sig/ratatui_ruby/schema/text.rbs +22 -0
  265. data/sig/ratatui_ruby/session.rbs +94 -0
  266. data/tasks/autodoc/inventory.rb +61 -0
  267. data/tasks/autodoc/member.rb +56 -0
  268. data/tasks/autodoc/name.rb +19 -0
  269. data/tasks/autodoc/notice.rb +26 -0
  270. data/tasks/autodoc/rbs.rb +38 -0
  271. data/tasks/autodoc/rdoc.rb +45 -0
  272. data/tasks/autodoc.rake +47 -0
  273. data/tasks/bump/history.rb +2 -2
  274. data/tasks/doc.rake +600 -6
  275. data/tasks/example_viewer.html.erb +172 -0
  276. data/tasks/lint.rake +8 -4
  277. data/tasks/resources/build.yml.erb +13 -11
  278. data/tasks/resources/index.html.erb +6 -0
  279. data/tasks/sourcehut.rake +4 -4
  280. data/tasks/terminal_preview/app_screenshot.rb +33 -0
  281. data/tasks/terminal_preview/crash_report.rb +52 -0
  282. data/tasks/terminal_preview/example_app.rb +25 -0
  283. data/tasks/terminal_preview/launcher_script.rb +46 -0
  284. data/tasks/terminal_preview/preview_collection.rb +58 -0
  285. data/tasks/terminal_preview/preview_timing.rb +22 -0
  286. data/tasks/terminal_preview/safety_confirmation.rb +56 -0
  287. data/tasks/terminal_preview/saved_screenshot.rb +53 -0
  288. data/tasks/terminal_preview/system_appearance.rb +11 -0
  289. data/tasks/terminal_preview/terminal_window.rb +136 -0
  290. data/tasks/terminal_preview/window_id.rb +14 -0
  291. data/tasks/terminal_preview.rake +28 -0
  292. data/tasks/test.rake +2 -2
  293. data/tasks/website/index_page.rb +3 -3
  294. data/tasks/website/version.rb +10 -10
  295. data/tasks/website/version_menu.rb +10 -12
  296. data/tasks/website/versioned_documentation.rb +49 -17
  297. data/tasks/website/website.rb +6 -8
  298. data/tasks/website.rake +4 -4
  299. metadata +206 -54
  300. data/LICENSES/BSD-2-Clause.txt +0 -9
  301. data/doc/images/examples-analytics.rb.png +0 -0
  302. data/doc/images/examples-box_demo.rb.png +0 -0
  303. data/doc/images/examples-calendar_demo.rb.png +0 -0
  304. data/doc/images/examples-chart_demo.rb.png +0 -0
  305. data/doc/images/examples-custom_widget.rb.png +0 -0
  306. data/doc/images/examples-dashboard.rb.png +0 -0
  307. data/doc/images/examples-list_styles.rb.png +0 -0
  308. data/doc/images/examples-login_form.rb.png +0 -0
  309. data/doc/images/examples-map_demo.rb.png +0 -0
  310. data/doc/images/examples-mouse_events.rb.png +0 -0
  311. data/doc/images/examples-popup_demo.rb.gif +0 -0
  312. data/doc/images/examples-quickstart_lifecycle.rb.png +0 -0
  313. data/doc/images/examples-scroll_text.rb.png +0 -0
  314. data/doc/images/examples-scrollbar_demo.rb.png +0 -0
  315. data/doc/images/examples-stock_ticker.rb.png +0 -0
  316. data/doc/images/examples-system_monitor.rb.png +0 -0
  317. data/doc/images/examples-table_select.rb.png +0 -0
  318. data/examples/analytics.rb +0 -88
  319. data/examples/box_demo.rb +0 -71
  320. data/examples/calendar_demo.rb +0 -55
  321. data/examples/chart_demo.rb +0 -84
  322. data/examples/custom_widget.rb +0 -43
  323. data/examples/dashboard.rb +0 -72
  324. data/examples/list_styles.rb +0 -66
  325. data/examples/login_form.rb +0 -115
  326. data/examples/map_demo.rb +0 -58
  327. data/examples/mouse_events.rb +0 -95
  328. data/examples/popup_demo.rb +0 -105
  329. data/examples/quickstart_dsl.rb +0 -30
  330. data/examples/quickstart_lifecycle.rb +0 -40
  331. data/examples/readme_usage.rb +0 -21
  332. data/examples/scroll_text.rb +0 -74
  333. data/examples/scrollbar_demo.rb +0 -75
  334. data/examples/stock_ticker.rb +0 -93
  335. data/examples/system_monitor.rb +0 -94
  336. data/examples/table_select.rb +0 -70
  337. data/examples/test_analytics.rb +0 -65
  338. data/examples/test_box_demo.rb +0 -38
  339. data/examples/test_calendar_demo.rb +0 -66
  340. data/examples/test_dashboard.rb +0 -38
  341. data/examples/test_list_styles.rb +0 -61
  342. data/examples/test_login_form.rb +0 -63
  343. data/examples/test_map_demo.rb +0 -100
  344. data/examples/test_popup_demo.rb +0 -62
  345. data/examples/test_scroll_text.rb +0 -130
  346. data/examples/test_stock_ticker.rb +0 -39
  347. data/examples/test_system_monitor.rb +0 -40
  348. data/examples/test_table_select.rb +0 -37
  349. data/ext/ratatui_ruby/src/buffer.rs +0 -54
  350. data/lib/ratatui_ruby/dsl.rb +0 -64
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratatui_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerrick Long
@@ -84,80 +84,142 @@ files:
84
84
  - CHANGELOG.md
85
85
  - LICENSE
86
86
  - LICENSES/AGPL-3.0-or-later.txt
87
- - LICENSES/BSD-2-Clause.txt
88
87
  - LICENSES/CC-BY-SA-4.0.txt
89
88
  - LICENSES/CC0-1.0.txt
90
89
  - LICENSES/MIT.txt
91
90
  - README.md
92
91
  - REUSE.toml
93
92
  - Rakefile
93
+ - doc/application_architecture.md
94
94
  - doc/application_testing.md
95
95
  - doc/contributors/design.md
96
96
  - doc/contributors/design/ruby_frontend.md
97
97
  - doc/contributors/design/rust_backend.md
98
+ - doc/contributors/developing_examples.md
99
+ - doc/contributors/documentation_style.md
100
+ - doc/contributors/dwim_dx.md
98
101
  - doc/contributors/index.md
99
102
  - doc/custom.css
100
- - doc/images/examples-analytics.rb.png
101
- - doc/images/examples-box_demo.rb.png
102
- - doc/images/examples-calendar_demo.rb.png
103
- - doc/images/examples-chart_demo.rb.png
104
- - doc/images/examples-custom_widget.rb.png
105
- - doc/images/examples-dashboard.rb.png
106
- - doc/images/examples-list_styles.rb.png
107
- - doc/images/examples-login_form.rb.png
108
- - doc/images/examples-map_demo.rb.png
109
- - doc/images/examples-mouse_events.rb.png
110
- - doc/images/examples-popup_demo.rb.gif
111
- - doc/images/examples-quickstart_lifecycle.rb.png
112
- - doc/images/examples-scroll_text.rb.png
113
- - doc/images/examples-scrollbar_demo.rb.png
114
- - doc/images/examples-stock_ticker.rb.png
115
- - doc/images/examples-system_monitor.rb.png
116
- - doc/images/examples-table_select.rb.png
103
+ - doc/event_handling.md
104
+ - doc/images/app_all_events.png
105
+ - doc/images/app_analytics.png
106
+ - doc/images/app_color_picker.png
107
+ - doc/images/app_custom_widget.png
108
+ - doc/images/app_login_form.png
109
+ - doc/images/app_map_demo.png
110
+ - doc/images/app_mouse_events.png
111
+ - doc/images/app_table_select.png
112
+ - doc/images/verify_quickstart_dsl.png
113
+ - doc/images/verify_quickstart_layout.png
114
+ - doc/images/verify_quickstart_lifecycle.png
115
+ - doc/images/verify_readme_usage.png
116
+ - doc/images/widget_barchart_demo.png
117
+ - doc/images/widget_block_padding.png
118
+ - doc/images/widget_block_titles.png
119
+ - doc/images/widget_box_demo.png
120
+ - doc/images/widget_calendar_demo.png
121
+ - doc/images/widget_cell_demo.png
122
+ - doc/images/widget_chart_demo.png
123
+ - doc/images/widget_gauge_demo.png
124
+ - doc/images/widget_layout_split.png
125
+ - doc/images/widget_line_gauge_demo.png
126
+ - doc/images/widget_list_demo.png
127
+ - doc/images/widget_list_styles.png
128
+ - doc/images/widget_popup_demo.png
129
+ - doc/images/widget_ratatui_logo_demo.png
130
+ - doc/images/widget_ratatui_mascot_demo.png
131
+ - doc/images/widget_rect.png
132
+ - doc/images/widget_render.png
133
+ - doc/images/widget_rich_text.png
134
+ - doc/images/widget_scroll_text.png
135
+ - doc/images/widget_scrollbar_demo.png
136
+ - doc/images/widget_sparkline_demo.png
137
+ - doc/images/widget_style_colors.png
138
+ - doc/images/widget_table_flex.png
139
+ - doc/images/widget_tabs_demo.png
117
140
  - doc/index.md
141
+ - doc/interactive_design.md
118
142
  - doc/quickstart.md
119
- - examples/analytics.rb
120
- - examples/box_demo.rb
121
- - examples/calendar_demo.rb
122
- - examples/chart_demo.rb
123
- - examples/custom_widget.rb
124
- - examples/dashboard.rb
125
- - examples/list_styles.rb
126
- - examples/login_form.rb
127
- - examples/map_demo.rb
128
- - examples/mouse_events.rb
129
- - examples/popup_demo.rb
130
- - examples/quickstart_dsl.rb
131
- - examples/quickstart_lifecycle.rb
132
- - examples/readme_usage.rb
133
- - examples/scroll_text.rb
134
- - examples/scrollbar_demo.rb
135
- - examples/stock_ticker.rb
136
- - examples/system_monitor.rb
137
- - examples/table_select.rb
138
- - examples/test_analytics.rb
139
- - examples/test_box_demo.rb
140
- - examples/test_calendar_demo.rb
141
- - examples/test_dashboard.rb
142
- - examples/test_list_styles.rb
143
- - examples/test_login_form.rb
144
- - examples/test_map_demo.rb
145
- - examples/test_popup_demo.rb
146
- - examples/test_scroll_text.rb
147
- - examples/test_stock_ticker.rb
148
- - examples/test_system_monitor.rb
149
- - examples/test_table_select.rb
143
+ - examples/app_all_events/README.md
144
+ - examples/app_all_events/app.rb
145
+ - examples/app_all_events/model/event_color_cycle.rb
146
+ - examples/app_all_events/model/event_entry.rb
147
+ - examples/app_all_events/model/events.rb
148
+ - examples/app_all_events/model/highlight.rb
149
+ - examples/app_all_events/model/timestamp.rb
150
+ - examples/app_all_events/test/snapshots/after_focus_lost.txt
151
+ - examples/app_all_events/test/snapshots/after_focus_regained.txt
152
+ - examples/app_all_events/test/snapshots/after_horizontal_resize.txt
153
+ - examples/app_all_events/test/snapshots/after_key_a.txt
154
+ - examples/app_all_events/test/snapshots/after_key_ctrl_x.txt
155
+ - examples/app_all_events/test/snapshots/after_mouse_click.txt
156
+ - examples/app_all_events/test/snapshots/after_mouse_drag.txt
157
+ - examples/app_all_events/test/snapshots/after_multiple_events.txt
158
+ - examples/app_all_events/test/snapshots/after_paste.txt
159
+ - examples/app_all_events/test/snapshots/after_resize.txt
160
+ - examples/app_all_events/test/snapshots/after_right_click.txt
161
+ - examples/app_all_events/test/snapshots/after_vertical_resize.txt
162
+ - examples/app_all_events/test/snapshots/initial_state.txt
163
+ - examples/app_all_events/view.rb
164
+ - examples/app_all_events/view/app_view.rb
165
+ - examples/app_all_events/view/controls_view.rb
166
+ - examples/app_all_events/view/counts_view.rb
167
+ - examples/app_all_events/view/live_view.rb
168
+ - examples/app_all_events/view/log_view.rb
169
+ - examples/app_all_events/view_state.rb
170
+ - examples/app_color_picker/README.md
171
+ - examples/app_color_picker/app.rb
172
+ - examples/app_color_picker/clipboard.rb
173
+ - examples/app_color_picker/color.rb
174
+ - examples/app_color_picker/copy_dialog.rb
175
+ - examples/app_color_picker/harmony.rb
176
+ - examples/app_color_picker/input.rb
177
+ - examples/app_color_picker/palette.rb
178
+ - examples/app_color_picker/scene.rb
179
+ - examples/app_login_form/app.rb
180
+ - examples/app_map_demo/app.rb
181
+ - examples/app_table_select/app.rb
182
+ - examples/verify_quickstart_dsl/app.rb
183
+ - examples/verify_quickstart_layout/app.rb
184
+ - examples/verify_quickstart_lifecycle/app.rb
185
+ - examples/verify_readme_usage/app.rb
186
+ - examples/widget_barchart_demo/app.rb
187
+ - examples/widget_block_padding/app.rb
188
+ - examples/widget_block_titles/app.rb
189
+ - examples/widget_box_demo/app.rb
190
+ - examples/widget_calendar_demo/app.rb
191
+ - examples/widget_cell_demo/app.rb
192
+ - examples/widget_chart_demo/app.rb
193
+ - examples/widget_gauge_demo/app.rb
194
+ - examples/widget_layout_split/app.rb
195
+ - examples/widget_line_gauge_demo/app.rb
196
+ - examples/widget_list_demo/app.rb
197
+ - examples/widget_list_styles/app.rb
198
+ - examples/widget_popup_demo/app.rb
199
+ - examples/widget_ratatui_logo_demo/app.rb
200
+ - examples/widget_ratatui_mascot_demo/app.rb
201
+ - examples/widget_rect/app.rb
202
+ - examples/widget_render/app.rb
203
+ - examples/widget_rich_text/app.rb
204
+ - examples/widget_scroll_text/app.rb
205
+ - examples/widget_scrollbar_demo/app.rb
206
+ - examples/widget_sparkline_demo/app.rb
207
+ - examples/widget_style_colors/app.rb
208
+ - examples/widget_table_flex/app.rb
209
+ - examples/widget_tabs_demo/app.rb
150
210
  - ext/ratatui_ruby/.cargo/config.toml
151
211
  - ext/ratatui_ruby/.gitignore
152
212
  - ext/ratatui_ruby/Cargo.lock
153
213
  - ext/ratatui_ruby/Cargo.toml
214
+ - ext/ratatui_ruby/clippy.toml
154
215
  - ext/ratatui_ruby/extconf.rb
155
- - ext/ratatui_ruby/src/buffer.rs
156
216
  - ext/ratatui_ruby/src/events.rs
217
+ - ext/ratatui_ruby/src/frame.rs
157
218
  - ext/ratatui_ruby/src/lib.rs
158
219
  - ext/ratatui_ruby/src/rendering.rs
159
220
  - ext/ratatui_ruby/src/style.rs
160
221
  - ext/ratatui_ruby/src/terminal.rs
222
+ - ext/ratatui_ruby/src/text.rs
161
223
  - ext/ratatui_ruby/src/widgets/barchart.rs
162
224
  - ext/ratatui_ruby/src/widgets/block.rs
163
225
  - ext/ratatui_ruby/src/widgets/calendar.rs
@@ -168,18 +230,31 @@ files:
168
230
  - ext/ratatui_ruby/src/widgets/cursor.rs
169
231
  - ext/ratatui_ruby/src/widgets/gauge.rs
170
232
  - ext/ratatui_ruby/src/widgets/layout.rs
233
+ - ext/ratatui_ruby/src/widgets/line_gauge.rs
171
234
  - ext/ratatui_ruby/src/widgets/list.rs
172
235
  - ext/ratatui_ruby/src/widgets/mod.rs
173
236
  - ext/ratatui_ruby/src/widgets/overlay.rs
174
237
  - ext/ratatui_ruby/src/widgets/paragraph.rs
238
+ - ext/ratatui_ruby/src/widgets/ratatui_logo.rs
239
+ - ext/ratatui_ruby/src/widgets/ratatui_mascot.rs
175
240
  - ext/ratatui_ruby/src/widgets/scrollbar.rs
176
241
  - ext/ratatui_ruby/src/widgets/sparkline.rs
177
242
  - ext/ratatui_ruby/src/widgets/table.rs
178
243
  - ext/ratatui_ruby/src/widgets/tabs.rs
179
244
  - lib/ratatui_ruby.rb
180
- - lib/ratatui_ruby/dsl.rb
181
- - lib/ratatui_ruby/output.rb
245
+ - lib/ratatui_ruby/cell.rb
246
+ - lib/ratatui_ruby/event.rb
247
+ - lib/ratatui_ruby/event/focus_gained.rb
248
+ - lib/ratatui_ruby/event/focus_lost.rb
249
+ - lib/ratatui_ruby/event/key.rb
250
+ - lib/ratatui_ruby/event/mouse.rb
251
+ - lib/ratatui_ruby/event/none.rb
252
+ - lib/ratatui_ruby/event/paste.rb
253
+ - lib/ratatui_ruby/event/resize.rb
254
+ - lib/ratatui_ruby/frame.rb
182
255
  - lib/ratatui_ruby/schema/bar_chart.rb
256
+ - lib/ratatui_ruby/schema/bar_chart/bar.rb
257
+ - lib/ratatui_ruby/schema/bar_chart/bar_group.rb
183
258
  - lib/ratatui_ruby/schema/block.rb
184
259
  - lib/ratatui_ruby/schema/calendar.rb
185
260
  - lib/ratatui_ruby/schema/canvas.rb
@@ -188,23 +263,74 @@ files:
188
263
  - lib/ratatui_ruby/schema/clear.rb
189
264
  - lib/ratatui_ruby/schema/constraint.rb
190
265
  - lib/ratatui_ruby/schema/cursor.rb
266
+ - lib/ratatui_ruby/schema/draw.rb
191
267
  - lib/ratatui_ruby/schema/gauge.rb
192
268
  - lib/ratatui_ruby/schema/layout.rb
269
+ - lib/ratatui_ruby/schema/line_gauge.rb
193
270
  - lib/ratatui_ruby/schema/list.rb
194
271
  - lib/ratatui_ruby/schema/overlay.rb
195
272
  - lib/ratatui_ruby/schema/paragraph.rb
273
+ - lib/ratatui_ruby/schema/ratatui_logo.rb
274
+ - lib/ratatui_ruby/schema/ratatui_mascot.rb
196
275
  - lib/ratatui_ruby/schema/rect.rb
197
276
  - lib/ratatui_ruby/schema/scrollbar.rb
277
+ - lib/ratatui_ruby/schema/shape/label.rb
198
278
  - lib/ratatui_ruby/schema/sparkline.rb
199
279
  - lib/ratatui_ruby/schema/style.rb
200
280
  - lib/ratatui_ruby/schema/table.rb
201
281
  - lib/ratatui_ruby/schema/tabs.rb
282
+ - lib/ratatui_ruby/schema/text.rb
283
+ - lib/ratatui_ruby/session.rb
284
+ - lib/ratatui_ruby/session/autodoc.rb
202
285
  - lib/ratatui_ruby/test_helper.rb
203
286
  - lib/ratatui_ruby/version.rb
204
287
  - mise.toml
205
- - sig/ratatui_ruby/buffer.rbs
288
+ - sig/examples/app_all_events/app.rbs
289
+ - sig/examples/app_all_events/model/event_entry.rbs
290
+ - sig/examples/app_all_events/model/events.rbs
291
+ - sig/examples/app_all_events/model/timestamp.rbs
292
+ - sig/examples/app_all_events/view.rbs
293
+ - sig/examples/app_all_events/view/app_view.rbs
294
+ - sig/examples/app_all_events/view/controls_view.rbs
295
+ - sig/examples/app_all_events/view/counts_view.rbs
296
+ - sig/examples/app_all_events/view/live_view.rbs
297
+ - sig/examples/app_all_events/view/log_view.rbs
298
+ - sig/examples/app_all_events/view_state.rbs
299
+ - sig/examples/app_color_picker/app.rbs
300
+ - sig/examples/app_login_form/app.rbs
301
+ - sig/examples/app_map_demo/app.rbs
302
+ - sig/examples/app_table_select/app.rbs
303
+ - sig/examples/verify_quickstart_dsl/app.rbs
304
+ - sig/examples/verify_quickstart_lifecycle/app.rbs
305
+ - sig/examples/verify_readme_usage/app.rbs
306
+ - sig/examples/widget_block_padding/app.rbs
307
+ - sig/examples/widget_block_titles/app.rbs
308
+ - sig/examples/widget_box_demo/app.rbs
309
+ - sig/examples/widget_calendar_demo/app.rbs
310
+ - sig/examples/widget_cell_demo/app.rbs
311
+ - sig/examples/widget_chart_demo/app.rbs
312
+ - sig/examples/widget_gauge_demo/app.rbs
313
+ - sig/examples/widget_layout_split/app.rbs
314
+ - sig/examples/widget_line_gauge_demo/app.rbs
315
+ - sig/examples/widget_list_demo/app.rbs
316
+ - sig/examples/widget_list_styles/app.rbs
317
+ - sig/examples/widget_popup_demo/app.rbs
318
+ - sig/examples/widget_ratatui_logo_demo/app.rbs
319
+ - sig/examples/widget_ratatui_mascot_demo/app.rbs
320
+ - sig/examples/widget_rect/app.rbs
321
+ - sig/examples/widget_render/app.rbs
322
+ - sig/examples/widget_rich_text/app.rbs
323
+ - sig/examples/widget_scroll_text/app.rbs
324
+ - sig/examples/widget_scrollbar_demo/app.rbs
325
+ - sig/examples/widget_sparkline_demo/app.rbs
326
+ - sig/examples/widget_style_colors/app.rbs
327
+ - sig/examples/widget_table_flex/app.rbs
328
+ - sig/ratatui_ruby/event.rbs
329
+ - sig/ratatui_ruby/frame.rbs
206
330
  - sig/ratatui_ruby/ratatui_ruby.rbs
207
331
  - sig/ratatui_ruby/schema/bar_chart.rbs
332
+ - sig/ratatui_ruby/schema/bar_chart/bar.rbs
333
+ - sig/ratatui_ruby/schema/bar_chart/bar_group.rbs
208
334
  - sig/ratatui_ruby/schema/block.rbs
209
335
  - sig/ratatui_ruby/schema/calendar.rbs
210
336
  - sig/ratatui_ruby/schema/canvas.rbs
@@ -212,19 +338,32 @@ files:
212
338
  - sig/ratatui_ruby/schema/chart.rbs
213
339
  - sig/ratatui_ruby/schema/constraint.rbs
214
340
  - sig/ratatui_ruby/schema/cursor.rbs
341
+ - sig/ratatui_ruby/schema/draw.rbs
215
342
  - sig/ratatui_ruby/schema/gauge.rbs
216
343
  - sig/ratatui_ruby/schema/layout.rbs
344
+ - sig/ratatui_ruby/schema/line_gauge.rbs
217
345
  - sig/ratatui_ruby/schema/list.rbs
218
346
  - sig/ratatui_ruby/schema/overlay.rbs
219
347
  - sig/ratatui_ruby/schema/paragraph.rbs
348
+ - sig/ratatui_ruby/schema/ratatui_logo.rbs
349
+ - sig/ratatui_ruby/schema/ratatui_mascot.rbs
220
350
  - sig/ratatui_ruby/schema/rect.rbs
221
351
  - sig/ratatui_ruby/schema/scrollbar.rbs
222
352
  - sig/ratatui_ruby/schema/sparkline.rbs
223
353
  - sig/ratatui_ruby/schema/style.rbs
224
354
  - sig/ratatui_ruby/schema/table.rbs
225
355
  - sig/ratatui_ruby/schema/tabs.rbs
356
+ - sig/ratatui_ruby/schema/text.rbs
357
+ - sig/ratatui_ruby/session.rbs
226
358
  - sig/ratatui_ruby/test_helper.rbs
227
359
  - sig/ratatui_ruby/version.rbs
360
+ - tasks/autodoc.rake
361
+ - tasks/autodoc/inventory.rb
362
+ - tasks/autodoc/member.rb
363
+ - tasks/autodoc/name.rb
364
+ - tasks/autodoc/notice.rb
365
+ - tasks/autodoc/rbs.rb
366
+ - tasks/autodoc/rdoc.rb
228
367
  - tasks/bump.rake
229
368
  - tasks/bump/cargo_lockfile.rb
230
369
  - tasks/bump/changelog.rb
@@ -236,6 +375,7 @@ files:
236
375
  - tasks/bump/sem_ver.rb
237
376
  - tasks/bump/unreleased_section.rb
238
377
  - tasks/doc.rake
378
+ - tasks/example_viewer.html.erb
239
379
  - tasks/extension.rake
240
380
  - tasks/lint.rake
241
381
  - tasks/rdoc_config.rb
@@ -243,6 +383,18 @@ files:
243
383
  - tasks/resources/index.html.erb
244
384
  - tasks/resources/rubies.yml
245
385
  - tasks/sourcehut.rake
386
+ - tasks/terminal_preview.rake
387
+ - tasks/terminal_preview/app_screenshot.rb
388
+ - tasks/terminal_preview/crash_report.rb
389
+ - tasks/terminal_preview/example_app.rb
390
+ - tasks/terminal_preview/launcher_script.rb
391
+ - tasks/terminal_preview/preview_collection.rb
392
+ - tasks/terminal_preview/preview_timing.rb
393
+ - tasks/terminal_preview/safety_confirmation.rb
394
+ - tasks/terminal_preview/saved_screenshot.rb
395
+ - tasks/terminal_preview/system_appearance.rb
396
+ - tasks/terminal_preview/terminal_window.rb
397
+ - tasks/terminal_preview/window_id.rb
246
398
  - tasks/test.rake
247
399
  - tasks/website.rake
248
400
  - tasks/website/index_page.rb
@@ -1,9 +0,0 @@
1
- Copyright <YEAR> <COPYRIGHT HOLDER>
2
-
3
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
-
5
- 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
-
7
- 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
-
9
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,88 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
- # SPDX-License-Identifier: AGPL-3.0-or-later
5
-
6
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
7
- require "ratatui_ruby"
8
-
9
- # Analytics Dashboard Example
10
- # Demonstrates Tabs and BarChart widgets.
11
-
12
- class AnalyticsApp
13
- def initialize
14
- @selected_tab = 0
15
- @tabs = ["Revenue", "Traffic", "Errors"]
16
- end
17
-
18
- def run
19
- RatatuiRuby.init_terminal
20
- begin
21
- loop do
22
- render
23
- break if handle_input == :quit
24
- sleep 0.05
25
- end
26
- ensure
27
- RatatuiRuby.restore_terminal
28
- end
29
- end
30
-
31
- def render
32
- # Data for different tabs
33
- data = case @selected_tab
34
- when 0 # Revenue
35
- { "Q1" => 50, "Q2" => 80 }
36
- when 1 # Traffic
37
- { "Mon" => 120, "Tue" => 150 }
38
- when 2 # Errors
39
- { "DB" => 5, "UI" => 2 }
40
- end
41
-
42
- style = case @selected_tab
43
- when 0 then RatatuiRuby::Style.new(fg: "green")
44
- when 1 then RatatuiRuby::Style.new(fg: "blue")
45
- when 2 then RatatuiRuby::Style.new(fg: "red")
46
- end
47
-
48
- # Build the UI
49
- ui = RatatuiRuby::Layout.new(
50
- direction: :vertical,
51
- constraints: [
52
- RatatuiRuby::Constraint.new(type: :length, value: 3),
53
- RatatuiRuby::Constraint.new(type: :min, value: 0),
54
- ],
55
- children: [
56
- RatatuiRuby::Tabs.new(
57
- titles: @tabs,
58
- selected_index: @selected_tab,
59
- block: RatatuiRuby::Block.new(title: "Views", borders: [:all])
60
- ),
61
- RatatuiRuby::BarChart.new(
62
- data:,
63
- bar_width: 10,
64
- style:,
65
- block: RatatuiRuby::Block.new(title: "Analytics: #{@tabs[@selected_tab]}", borders: [:all])
66
- ),
67
- ]
68
- )
69
-
70
- RatatuiRuby.draw(ui)
71
- end
72
-
73
- def handle_input
74
- event = RatatuiRuby.poll_event
75
- if event
76
- case event[:code]
77
- when "q"
78
- :quit
79
- when "right"
80
- @selected_tab = (@selected_tab + 1) % @tabs.size
81
- when "left"
82
- @selected_tab = (@selected_tab - 1) % @tabs.size
83
- end
84
- end
85
- end
86
- end
87
-
88
- AnalyticsApp.new.run if __FILE__ == $0
data/examples/box_demo.rb DELETED
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
- # SPDX-License-Identifier: AGPL-3.0-or-later
5
-
6
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
7
- require "ratatui_ruby"
8
-
9
- class BoxDemoApp
10
- def initialize
11
- @color = "green"
12
- @text = "Press Arrow Keys (q to quit)"
13
- end
14
-
15
- def run
16
- RatatuiRuby.init_terminal
17
- begin
18
- loop do
19
- render
20
- break if handle_input == :quit
21
- end
22
- ensure
23
- RatatuiRuby.restore_terminal
24
- end
25
- end
26
-
27
- def render
28
- # 1. State/View
29
- block = RatatuiRuby::Block.new(
30
- title: "Box Demo",
31
- borders: [:all],
32
- border_color: @color
33
- )
34
-
35
- view_tree = RatatuiRuby::Paragraph.new(
36
- text: @text,
37
- fg: @color,
38
- block:
39
- )
40
-
41
- # 2. Render
42
- RatatuiRuby.draw(view_tree)
43
- end
44
-
45
- def handle_input
46
- # 3. Events
47
- event = RatatuiRuby.poll_event
48
- return unless event
49
-
50
- if event[:type] == :key
51
- case event[:code]
52
- when "q"
53
- :quit
54
- when "up"
55
- @color = "red"
56
- @text = "Up Pressed!"
57
- when "down"
58
- @color = "blue"
59
- @text = "Down Pressed!"
60
- when "left"
61
- @color = "yellow"
62
- @text = "Left Pressed!"
63
- when "right"
64
- @color = "magenta"
65
- @text = "Right Pressed!"
66
- end
67
- end
68
- end
69
- end
70
-
71
- BoxDemoApp.new.run if __FILE__ == $0
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
- # SPDX-License-Identifier: AGPL-3.0-or-later
5
-
6
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
7
- require "ratatui_ruby"
8
-
9
- # A demo application for the Calendar widget.
10
- module CalendarDemo
11
- def self.run
12
- RatatuiRuby.init_terminal
13
-
14
- loop do
15
- now = Time.now
16
- calendar = RatatuiRuby::Calendar.new(
17
- year: now.year,
18
- month: now.month,
19
- header_style: RatatuiRuby::Style.new(fg: "yellow", modifiers: [:bold]),
20
- block: RatatuiRuby::Block.new(title: " Calendar (q = quit) ", borders: [:all])
21
- )
22
-
23
- # Constrain the calendar to 24x10 characters
24
- view = RatatuiRuby::Layout.new(
25
- direction: :vertical,
26
- constraints: [
27
- RatatuiRuby::Constraint.length(10),
28
- RatatuiRuby::Constraint.min(0),
29
- ],
30
- children: [
31
- RatatuiRuby::Layout.new(
32
- direction: :horizontal,
33
- constraints: [
34
- RatatuiRuby::Constraint.length(24),
35
- RatatuiRuby::Constraint.min(0),
36
- ],
37
- children: [calendar, nil],
38
- ),
39
- nil,
40
- ],
41
- )
42
-
43
- RatatuiRuby.draw(view)
44
-
45
- event = RatatuiRuby.poll_event
46
- break if event && event[:type] == :key && event[:code] == "q"
47
-
48
- sleep 0.1
49
- end
50
- ensure
51
- RatatuiRuby.restore_terminal
52
- end
53
- end
54
-
55
- CalendarDemo.run if __FILE__ == $PROGRAM_NAME