feat(client): hold, next and associated styles

This commit is contained in:
Muhammad Nauman Raza 2025-02-21 15:14:41 +00:00
parent 2ae29bdc80
commit b4c5ec01bc
Signed by untrusted user: devraza
GPG key ID: 91EAD6081011574B
2 changed files with 48 additions and 10 deletions

View file

@ -1,13 +1,51 @@
use ratatui::{
buffer::Buffer,
layout::Rect,
widgets::{Block, Borders, Padding, Paragraph, Widget},
layout::{Constraint, Layout, Rect},
style::{Modifier, Style, palette::tailwind::*},
symbols,
text::Line,
widgets::{Block, Borders, Widget},
};
pub fn render(area: Rect, buf: &mut Buffer) {
let block = Block::new()
.padding(Padding::symmetric(2, 1))
.borders(Borders::ALL);
use crate::tui;
Paragraph::new("").block(block).render(area, buf);
const GAMEMODE_STYLE: Style = Style::new().bg(NEUTRAL.c700).add_modifier(Modifier::BOLD);
const TITLE_STYLE: Style = Style::new()
.fg(NEUTRAL.c800)
.bg(NEUTRAL.c100)
.add_modifier(Modifier::BOLD);
pub fn render(mode: &mut tui::Mode, area: Rect, buf: &mut Buffer) {
let gamemode = format!(" {} ", match mode {
tui::Mode::Blitz => "Blitz",
tui::Mode::FortyL => "40L",
tui::Mode::TxLadder => "txLadder",
_ => "",
});
let [mut hold_area, grid_area, mut next_area] =
Layout::horizontal(Constraint::from_percentages([25, 50, 25])).areas(area);
hold_area.height = 5;
next_area.height = 16;
Block::new()
.title(Line::styled(" HOLD ", TITLE_STYLE).centered())
.borders(Borders::TOP | Borders::LEFT | Borders::BOTTOM)
.render(hold_area, buf);
Block::new()
.title(Line::styled(gamemode, GAMEMODE_STYLE).centered())
.border_set(symbols::border::Set {
top_left: symbols::line::NORMAL.horizontal_down,
top_right: symbols::line::NORMAL.horizontal_down,
..symbols::border::PLAIN
})
.borders(Borders::ALL)
.render(grid_area, buf);
Block::new()
.title(Line::styled(" NEXT ", TITLE_STYLE).centered())
.borders(Borders::TOP | Borders::RIGHT | Borders::BOTTOM)
.render(next_area, buf);
}

View file

@ -52,7 +52,7 @@ impl Mode {
match self {
Mode::MainMenu(menu_list) => menu_list.handle_key(key),
_ => Mode::Exit,
_ => Mode::Exit, // TODO: handle keys differently based on modes
}
}
}
@ -68,7 +68,7 @@ impl Widget for &mut Mode {
let center_area = center(
main_area,
Constraint::Length(50),
Constraint::Length(60),
Constraint::Percentage(60),
);
@ -79,7 +79,7 @@ impl Widget for &mut Mode {
menu::render_menu(center_area, menu_list, buf);
}
_ => {
game::render(center_area, buf);
game::render(self, center_area, buf);
}
}
menu::render_footer(footer_area, buf);