diff --git a/Cargo.lock b/Cargo.lock index 19eaab4a5..f6d5c870b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -275,7 +275,7 @@ dependencies = [ "futures", "hdrhistogram", "humantime", - "parking_lot 0.12.0", + "parking_lot", "prost-types", "serde", "serde_json", @@ -319,16 +319,16 @@ dependencies = [ [[package]] name = "crossterm" -version = "0.20.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" dependencies = [ "bitflags", "crossterm_winapi", "futures-core", "libc", - "mio 0.7.14", - "parking_lot 0.11.2", + "mio", + "parking_lot", "signal-hook", "signal-hook-mio", "winapi", @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "crossterm_winapi" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507" +checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" dependencies = [ "winapi", ] @@ -788,19 +788,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - [[package]] name = "mio" version = "0.8.4" @@ -813,15 +800,6 @@ dependencies = [ "windows-sys 0.36.1", ] -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - [[package]] name = "multimap" version = "0.8.3" @@ -838,15 +816,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - [[package]] name = "num-traits" version = "0.2.14" @@ -893,17 +862,6 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", -] - [[package]] name = "parking_lot" version = "0.12.0" @@ -911,21 +869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" dependencies = [ "lock_api", - "parking_lot_core 0.9.2", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -1131,6 +1075,19 @@ dependencies = [ "getrandom", ] +[[package]] +name = "ratatui" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc0d032bccba900ee32151ec0265667535c230169f5a011154cdcd984e16829" +dependencies = [ + "bitflags", + "cassowary", + "crossterm", + "unicode-segmentation", + "unicode-width", +] + [[package]] name = "redox_syscall" version = "0.2.13" @@ -1267,7 +1224,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" dependencies = [ "libc", - "mio 0.7.14", + "mio", "signal-hook", ] @@ -1419,10 +1376,10 @@ dependencies = [ "bytes", "libc", "memchr", - "mio 0.8.4", + "mio", "num_cpus", "once_cell", - "parking_lot 0.12.0", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", @@ -1448,6 +1405,7 @@ dependencies = [ "humantime", "once_cell", "prost-types", + "ratatui", "regex", "serde", "tokio", @@ -1457,7 +1415,6 @@ dependencies = [ "tracing", "tracing-journald", "tracing-subscriber", - "tui", ] [[package]] @@ -1663,7 +1620,7 @@ dependencies = [ "ansi_term", "lazy_static", "matchers", - "parking_lot 0.12.0", + "parking_lot", "regex", "sharded-slab", "smallvec", @@ -1679,19 +1636,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" -[[package]] -name = "tui" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23" -dependencies = [ - "bitflags", - "cassowary", - "crossterm", - "unicode-segmentation", - "unicode-width", -] - [[package]] name = "unicode-bidi" version = "0.3.7" @@ -1715,9 +1659,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" diff --git a/tokio-console/Cargo.toml b/tokio-console/Cargo.toml index b50300f9c..d71ff0cf7 100644 --- a/tokio-console/Cargo.toml +++ b/tokio-console/Cargo.toml @@ -33,13 +33,13 @@ clap = { version = "3", features = ["cargo", "derive", "env"] } tokio = { version = "1", features = ["full", "rt-multi-thread"] } tonic = { version = "0.9", features = ["transport"] } futures = "0.3" -tui = { version = "0.16.0", default-features = false, features = ["crossterm"] } +ratatui = { version = "0.20.1", default-features = false, features = ["crossterm"] } tower = "0.4.12" tracing = "0.1" tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } tracing-journald = { version = "0.2", optional = true } prost-types = "0.11" -crossterm = { version = "0.20", features = ["event-stream"] } +crossterm = { version = "0.26.1", features = ["event-stream"] } color-eyre = { version = "0.6", features = ["issue-url"] } hdrhistogram = { version = "7.3.0", default-features = false, features = ["serialization"] } h2 = "0.3" diff --git a/tokio-console/src/conn.rs b/tokio-console/src/conn.rs index 6330b329b..6b1350a6c 100644 --- a/tokio-console/src/conn.rs +++ b/tokio-console/src/conn.rs @@ -183,8 +183,8 @@ impl Connection { } } - pub fn render(&self, styles: &crate::view::Styles) -> tui::text::Spans { - use tui::{ + pub fn render(&self, styles: &crate::view::Styles) -> ratatui::text::Spans { + use ratatui::{ style::{Color, Modifier}, text::{Span, Spans}, }; diff --git a/tokio-console/src/input.rs b/tokio-console/src/input.rs index 8df557d1c..278991e55 100644 --- a/tokio-console/src/input.rs +++ b/tokio-console/src/input.rs @@ -1,4 +1,4 @@ -// TODO(eliza): support TUI backends other than crossterm? +// TODO(eliza): support Ratatui backends other than crossterm? // This would probably involve using `spawn_blocking` to drive their blocking // input-handling mechanisms in the background... pub use crossterm::event::*; @@ -13,10 +13,12 @@ pub fn should_quit(input: &Event) -> bool { Key(KeyEvent { code: Char('c'), modifiers, + .. }) | Key(KeyEvent { code: Char('d'), modifiers, + .. }) if modifiers.contains(KeyModifiers::CONTROL) => true, _ => false, } diff --git a/tokio-console/src/main.rs b/tokio-console/src/main.rs index c10b062a6..4fc6630bb 100644 --- a/tokio-console/src/main.rs +++ b/tokio-console/src/main.rs @@ -3,13 +3,13 @@ use console_api::tasks::TaskDetails; use state::State; use futures::stream::StreamExt; -use tokio::sync::{mpsc, watch}; -use tui::{ +use ratatui::{ layout::{Constraint, Direction, Layout}, style::Color, text::{Span, Spans}, widgets::{Paragraph, Wrap}, }; +use tokio::sync::{mpsc, watch}; use crate::view::{bold, UpdateKind}; diff --git a/tokio-console/src/state/async_ops.rs b/tokio-console/src/state/async_ops.rs index e01879d84..d10b6ecdf 100644 --- a/tokio-console/src/state/async_ops.rs +++ b/tokio-console/src/state/async_ops.rs @@ -10,6 +10,7 @@ use crate::{ view, }; use console_api as proto; +use ratatui::text::Span; use std::{ cell::RefCell, collections::HashMap, @@ -17,7 +18,6 @@ use std::{ rc::{Rc, Weak}, time::{Duration, SystemTime}, }; -use tui::text::Span; #[derive(Default, Debug)] pub(crate) struct AsyncOpsState { diff --git a/tokio-console/src/state/mod.rs b/tokio-console/src/state/mod.rs index 91affad16..86dc24e11 100644 --- a/tokio-console/src/state/mod.rs +++ b/tokio-console/src/state/mod.rs @@ -5,6 +5,10 @@ use crate::{ warnings::Linter, }; use console_api as proto; +use ratatui::{ + style::{Color, Modifier}, + text::Span, +}; use std::{ cell::RefCell, cmp::Ordering, @@ -15,10 +19,6 @@ use std::{ time::{Duration, SystemTime}, }; use tasks::{Details, Task, TasksState}; -use tui::{ - style::{Color, Modifier}, - text::Span, -}; pub mod async_ops; pub mod histogram; diff --git a/tokio-console/src/state/resources.rs b/tokio-console/src/state/resources.rs index 5e755c76c..1ba85dfb7 100644 --- a/tokio-console/src/state/resources.rs +++ b/tokio-console/src/state/resources.rs @@ -6,13 +6,13 @@ use crate::state::{ }; use crate::view; use console_api as proto; +use ratatui::{style::Color, text::Span}; use std::{ collections::HashMap, convert::{TryFrom, TryInto}, rc::Rc, time::{Duration, SystemTime}, }; -use tui::{style::Color, text::Span}; #[derive(Default, Debug)] pub(crate) struct ResourcesState { diff --git a/tokio-console/src/state/tasks.rs b/tokio-console/src/state/tasks.rs index c41665058..bf9c8a2c0 100644 --- a/tokio-console/src/state/tasks.rs +++ b/tokio-console/src/state/tasks.rs @@ -12,6 +12,7 @@ use crate::{ warnings::Linter, }; use console_api as proto; +use ratatui::{style::Color, text::Span}; use std::{ cell::RefCell, collections::HashMap, @@ -19,7 +20,6 @@ use std::{ rc::{Rc, Weak}, time::{Duration, SystemTime}, }; -use tui::{style::Color, text::Span}; #[derive(Default, Debug)] pub(crate) struct TasksState { diff --git a/tokio-console/src/term.rs b/tokio-console/src/term.rs index 605119315..9fec79a58 100644 --- a/tokio-console/src/term.rs +++ b/tokio-console/src/term.rs @@ -1,6 +1,6 @@ pub use color_eyre::eyre::WrapErr; +pub use ratatui::{backend::CrosstermBackend, Terminal}; use std::io; -pub use tui::{backend::CrosstermBackend, Terminal}; pub fn init_crossterm() -> color_eyre::Result<(Terminal>, OnShutdown)> { diff --git a/tokio-console/src/view/async_ops.rs b/tokio-console/src/view/async_ops.rs index 0cdf02162..d59eaf88b 100644 --- a/tokio-console/src/view/async_ops.rs +++ b/tokio-console/src/view/async_ops.rs @@ -11,7 +11,7 @@ use crate::{ }, }; -use tui::{ +use ratatui::{ layout, style::{self, Color, Style}, text::Spans, @@ -55,10 +55,10 @@ impl TableList<9> for AsyncOpsTable { Self::HEADER[8].len() + 1, ]; - fn render( + fn render( table_list_state: &mut TableListState, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut State, ctx: Self::Context, diff --git a/tokio-console/src/view/durations.rs b/tokio-console/src/view/durations.rs index e1618dbe0..aefe5f7be 100644 --- a/tokio-console/src/view/durations.rs +++ b/tokio-console/src/view/durations.rs @@ -1,6 +1,6 @@ use std::cmp; -use tui::{ +use ratatui::{ layout::{self}, widgets::Widget, }; @@ -15,7 +15,7 @@ use crate::{ // This also gives at characters for the sparkline itself. const MIN_HISTOGRAM_BLOCK_WIDTH: u16 = 22; -/// This is a tui-rs widget to visualize durations as a list of percentiles +/// This is a Ratatui widget to visualize durations as a list of percentiles /// and if possible, a mini-histogram too. /// /// This widget wraps the [`Percentiles`] and [`MiniHistogram`] widgets which @@ -41,7 +41,7 @@ pub(crate) struct Durations<'a> { } impl<'a> Widget for Durations<'a> { - fn render(self, area: tui::layout::Rect, buf: &mut tui::buffer::Buffer) { + fn render(self, area: ratatui::layout::Rect, buf: &mut ratatui::buffer::Buffer) { // Only split the durations area in half if we're also drawing a // sparkline. We require UTF-8 to draw the sparkline and also enough width. let (percentiles_area, histogram_area) = if self.styles.utf8 { diff --git a/tokio-console/src/view/mini_histogram.rs b/tokio-console/src/view/mini_histogram.rs index eb13ee576..56f4ece75 100644 --- a/tokio-console/src/view/mini_histogram.rs +++ b/tokio-console/src/view/mini_histogram.rs @@ -1,6 +1,6 @@ use std::time::Duration; -use tui::{ +use ratatui::{ layout::Rect, style::Style, symbols, @@ -9,12 +9,12 @@ use tui::{ use crate::state::histogram::DurationHistogram; -/// This is a tui-rs widget to visualize a latency histogram in a small area. +/// This is a Ratatui widget to visualize a latency histogram in a small area. /// It is based on the [`Sparkline`] widget, so it draws a mini bar chart with /// some labels for clarity. Unlike Sparkline, it does not omit very small /// values. /// -/// [`Sparkline`]: tui::widgets::Sparkline +/// [`Sparkline`]: ratatui::widgets::Sparkline pub(crate) struct MiniHistogram<'a> { /// A block to wrap the widget in block: Option>, @@ -58,7 +58,7 @@ impl<'a> Default for MiniHistogram<'a> { } impl<'a> Widget for MiniHistogram<'a> { - fn render(mut self, area: tui::layout::Rect, buf: &mut tui::buffer::Buffer) { + fn render(mut self, area: ratatui::layout::Rect, buf: &mut ratatui::buffer::Buffer) { let inner_area = match self.block.take() { Some(b) => { let inner_area = b.inner(area); @@ -123,8 +123,8 @@ impl<'a> Widget for MiniHistogram<'a> { impl<'a> MiniHistogram<'a> { fn render_bars( &mut self, - area: tui::layout::Rect, - buf: &mut tui::buffer::Buffer, + area: ratatui::layout::Rect, + buf: &mut ratatui::buffer::Buffer, data: Vec, ) { let max = match self.max { @@ -219,8 +219,8 @@ impl<'a> MiniHistogram<'a> { } fn render_legend( - area: tui::layout::Rect, - buf: &mut tui::buffer::Buffer, + area: ratatui::layout::Rect, + buf: &mut ratatui::buffer::Buffer, metadata: &HistogramMetadata, max_record_label: String, min_record_label: String, diff --git a/tokio-console/src/view/mod.rs b/tokio-console/src/view/mod.rs index 160419adb..47c345285 100644 --- a/tokio-console/src/view/mod.rs +++ b/tokio-console/src/view/mod.rs @@ -1,11 +1,11 @@ use crate::view::{resources::ResourcesTable, table::TableListState, tasks::TasksTable}; use crate::{input, state::State}; -use std::{borrow::Cow, cmp}; -use tui::{ +use ratatui::{ layout, style::{self, Style}, text::Span, }; +use std::{borrow::Cow, cmp}; mod async_ops; mod durations; @@ -179,9 +179,9 @@ impl View { update_kind } - pub(crate) fn render( + pub(crate) fn render( &mut self, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut State, ) { diff --git a/tokio-console/src/view/percentiles.rs b/tokio-console/src/view/percentiles.rs index 6f8ba4666..207cc3ad7 100644 --- a/tokio-console/src/view/percentiles.rs +++ b/tokio-console/src/view/percentiles.rs @@ -1,6 +1,6 @@ use std::time::Duration; -use tui::{ +use ratatui::{ text::{Spans, Text}, widgets::{Paragraph, Widget}, }; @@ -10,7 +10,7 @@ use crate::{ view::{self, bold}, }; -/// This is a tui-rs widget to display duration percentiles in a list form. +/// This is a Ratatui widget to display duration percentiles in a list form. /// It wraps the [`Paragraph`] widget. pub(crate) struct Percentiles<'a> { /// Widget style @@ -22,7 +22,7 @@ pub(crate) struct Percentiles<'a> { } impl<'a> Widget for Percentiles<'a> { - fn render(self, area: tui::layout::Rect, buf: &mut tui::buffer::Buffer) { + fn render(self, area: ratatui::layout::Rect, buf: &mut ratatui::buffer::Buffer) { let inner = Paragraph::new(self.make_percentiles_inner()) .block(self.styles.border_block().title(self.title)); diff --git a/tokio-console/src/view/resource.rs b/tokio-console/src/view/resource.rs index 87129121d..0a5f830d9 100644 --- a/tokio-console/src/view/resource.rs +++ b/tokio-console/src/view/resource.rs @@ -8,12 +8,12 @@ use crate::{ bold, TableListState, }, }; -use std::{cell::RefCell, rc::Rc}; -use tui::{ +use ratatui::{ layout::{self, Layout}, text::{Span, Spans, Text}, widgets::{Block, Paragraph}, }; +use std::{cell::RefCell, rc::Rc}; pub(crate) struct ResourceView { resource: Rc>, @@ -34,10 +34,10 @@ impl ResourceView { self.async_ops_table.update_input(event) } - pub(crate) fn render( + pub(crate) fn render( &mut self, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut State, ) { diff --git a/tokio-console/src/view/resources.rs b/tokio-console/src/view/resources.rs index afe9fc1f6..4248de3d5 100644 --- a/tokio-console/src/view/resources.rs +++ b/tokio-console/src/view/resources.rs @@ -10,7 +10,7 @@ use crate::{ }, }; -use tui::{ +use ratatui::{ layout, style::{self, Color, Style}, text::Spans, @@ -49,10 +49,10 @@ impl TableList<9> for ResourcesTable { Self::HEADER[8].len() + 1, ]; - fn render( + fn render( table_list_state: &mut TableListState, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut State, _: Self::Context, diff --git a/tokio-console/src/view/styles.rs b/tokio-console/src/view/styles.rs index 7834cca2b..92049d419 100644 --- a/tokio-console/src/view/styles.rs +++ b/tokio-console/src/view/styles.rs @@ -1,10 +1,10 @@ use crate::config; -use serde::{Deserialize, Serialize}; -use std::{str::FromStr, time::Duration}; -use tui::{ +use ratatui::{ style::{Color, Modifier, Style}, text::Span, }; +use serde::{Deserialize, Serialize}; +use std::{str::FromStr, time::Duration}; #[derive(Debug, Clone)] pub struct Styles { @@ -332,11 +332,11 @@ impl Styles { } } - pub fn border_block(&self) -> tui::widgets::Block<'_> { + pub fn border_block(&self) -> ratatui::widgets::Block<'_> { if self.utf8 { - tui::widgets::Block::default() - .borders(tui::widgets::Borders::ALL) - .border_type(tui::widgets::BorderType::Rounded) + ratatui::widgets::Block::default() + .borders(ratatui::widgets::Borders::ALL) + .border_type(ratatui::widgets::BorderType::Rounded) } else { // TODO(eliza): configure an ascii-art border set instead? Default::default() diff --git a/tokio-console/src/view/table.rs b/tokio-console/src/view/table.rs index fd124fb81..7f1a7548e 100644 --- a/tokio-console/src/view/table.rs +++ b/tokio-console/src/view/table.rs @@ -2,12 +2,12 @@ use crate::{ input, state, view::{self, bold}, }; -use std::convert::TryFrom; -use tui::{ +use ratatui::{ layout, text::{self, Span, Spans, Text}, widgets::{Paragraph, TableState, Wrap}, }; +use std::convert::TryFrom; use std::cell::RefCell; use std::rc::Weak; @@ -20,10 +20,10 @@ pub(crate) trait TableList { const HEADER: &'static [&'static str; N]; const WIDTHS: &'static [usize; N]; - fn render( + fn render( state: &mut TableListState, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut state::State, cx: Self::Context, @@ -170,10 +170,10 @@ impl, const N: usize> TableListState { .unwrap_or_default() } - pub(in crate::view) fn render( + pub(in crate::view) fn render( &mut self, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut state::State, ctx: T::Context, diff --git a/tokio-console/src/view/task.rs b/tokio-console/src/view/task.rs index 2d6d1d982..d9368c0c7 100644 --- a/tokio-console/src/view/task.rs +++ b/tokio-console/src/view/task.rs @@ -4,17 +4,17 @@ use crate::{ util::Percentage, view::{self, bold, durations::Durations}, }; +use ratatui::{ + layout::{self, Layout}, + text::{Span, Spans, Text}, + widgets::{Block, List, ListItem, Paragraph}, +}; use std::{ cell::RefCell, cmp, rc::Rc, time::{Duration, SystemTime}, }; -use tui::{ - layout::{self, Layout}, - text::{Span, Spans, Text}, - widgets::{Block, List, ListItem, Paragraph}, -}; pub(crate) struct TaskView { task: Rc>, @@ -30,10 +30,10 @@ impl TaskView { // TODO :D } - pub(crate) fn render( + pub(crate) fn render( &mut self, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, now: SystemTime, ) { diff --git a/tokio-console/src/view/tasks.rs b/tokio-console/src/view/tasks.rs index b537e08e1..078ebca0b 100644 --- a/tokio-console/src/view/tasks.rs +++ b/tokio-console/src/view/tasks.rs @@ -9,7 +9,7 @@ use crate::{ DUR_LEN, DUR_TABLE_PRECISION, }, }; -use tui::{ +use ratatui::{ layout, style::{self, Color, Style}, text::{Span, Spans, Text}, @@ -44,10 +44,10 @@ impl TableList<12> for TasksTable { Self::HEADER[11].len() + 1, ]; - fn render( + fn render( table_list_state: &mut TableListState, styles: &view::Styles, - frame: &mut tui::terminal::Frame, + frame: &mut ratatui::terminal::Frame, area: layout::Rect, state: &mut State, _: Self::Context,