···6565 },
6666 /// List groups.
6767 List {
6868- /// The file-path for data to pe put into.
6868+ /// Filter by tag
6969 #[arg(short = 't', long)]
7070 by_tag: String,
7171 },
···11+use async_trait::async_trait;
12use crossterm::event::{KeyEvent, MouseEvent};
23use ratatui::{
34 Frame,
···1011 tui::{Event, Signal},
1112};
12131414+/// The zk component
1515+mod zk;
1616+1717+pub use zk::*;
1818+1319/// `Component` is a trait that represents a visual and interactive element of the user interface.
1420///
1521/// Implementers of this trait can be registered with the main application loop and will be able to
1622/// receive events, update state, and be rendered on the screen.
1717-pub trait Component: Send {
2323+///
2424+#[async_trait]
2525+pub trait Component: Send + Sync {
1826 /// Register a signal handler that can send signals for processing if necessary.
1927 ///
2028 /// # Arguments
···106114 /// # Returns
107115 ///
108116 /// * [`color_eyre::Result<Option<signal>>`] - A signal to be processed or none.
109109- fn update(&mut self, signal: Signal) -> color_eyre::Result<Option<Signal>>;
117117+ async fn update(&mut self, signal: Signal) -> color_eyre::Result<Option<Signal>>;
110118111119 /// Render the component on the screen. (REQUIRED)
112120 ///