gitv_tui/ui/components/toast/
widget.rs1use ratatui::{
2 style::Style,
3 symbols::{self},
4 widgets::{Block, Borders, Padding, Paragraph, Widget, WidgetRef},
5};
6
7use crate::ui::components::toast::ToastType;
8
9#[derive(Debug, Clone)]
10pub struct Toast {
11 pub message: String,
12 pub type_: ToastType,
13}
14
15impl Toast {
16 pub fn new(message: &str, type_: ToastType) -> Self {
17 Self {
18 message: message.to_string(),
19 type_,
20 }
21 }
22}
23
24impl WidgetRef for Toast {
25 fn render_ref(&self, area: ratatui::layout::Rect, buf: &mut ratatui::buffer::Buffer) {
26 const PADDING: u16 = 1;
27 let paragraph = Paragraph::new(self.message.as_str()).block(
28 Block::default()
29 .borders(Borders::LEFT | Borders::RIGHT)
30 .border_set(symbols::border::QUADRANT_OUTSIDE)
31 .padding(Padding::uniform(PADDING))
32 .border_style(Style::default().fg(self.type_.into())),
33 );
34 paragraph.render(area, buf);
35 }
36}