mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
36 lines
1.5 KiB
Rust
36 lines
1.5 KiB
Rust
use crate::*;
|
|
|
|
pub struct Field<T, U>(pub ItemPalette, pub T, pub U)
|
|
where T: AsRef<str> + Send + Sync, U: AsRef<str> + Send + Sync;
|
|
|
|
impl<T, U> Content<TuiOut> for Field<T, U>
|
|
where T: AsRef<str> + Send + Sync, U: AsRef<str> + Send + Sync
|
|
{
|
|
fn content (&self) -> impl Render<TuiOut> {
|
|
let ItemPalette { darkest, dark, lighter, lightest, .. } = self.0;
|
|
row!(
|
|
Tui::fg_bg(dark.rgb, darkest.rgb, "▐"),
|
|
Tui::fg_bg(lighter.rgb, dark.rgb, Tui::bold(true, format!("{}", self.1.as_ref()))),
|
|
Tui::fg_bg(dark.rgb, darkest.rgb, "▌"),
|
|
Tui::fg_bg(lightest.rgb, darkest.rgb, format!("{} ", self.2.as_ref()))
|
|
)
|
|
}
|
|
}
|
|
|
|
pub struct FieldV<T, U>(pub ItemPalette, pub T, pub U)
|
|
where T: AsRef<str> + Send + Sync, U: AsRef<str> + Send + Sync;
|
|
|
|
impl<T, U> Content<TuiOut> for FieldV<T, U>
|
|
where T: AsRef<str> + Send + Sync, U: AsRef<str> + Send + Sync
|
|
{
|
|
fn content (&self) -> impl Render<TuiOut> {
|
|
let ItemPalette { darkest, dark, lighter, lightest, .. } = self.0;
|
|
let sep1 = Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▐"));
|
|
let sep2 = Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▌"));
|
|
let name = Tui::bg(dark.rgb, Tui::fg(lighter.rgb,
|
|
Tui::bold(true, format!("{}", self.1.as_ref()))));
|
|
let value = Tui::bg(darkest.rgb, Tui::fg(lightest.rgb,
|
|
format!(" {} ", self.2.as_ref())));
|
|
Bsp::e(Bsp::s(row!(sep1, name, sep2), value), " ")
|
|
}
|
|
}
|