use embedded_graphics::{draw_target::DrawTarget, pixelcolor::Rgb565};

use crate::keyboard::KeyCode;

pub mod button;
pub mod chat;
pub mod chat_list;
pub mod contact_view;
pub mod scroll_tracker;
pub mod selector;
pub mod status;
pub mod textbox;

pub trait Element {
    type KeyPushReturn;

    fn render<E, DT: DrawTarget<Color = Rgb565, Error = E>>(
        &mut self,
        dt: &mut DT,
    ) -> Result<(), E>;

    fn key_push(&mut self, _k: KeyCode) -> Self::KeyPushReturn;

    fn touchpad_scroll(&mut self, _x: i8, _y: i8) {}
}