teksilo_core/styles/
radio_style.rs1use std::rc::Rc;
7
8use serde::{Deserialize, Serialize};
9
10use crate::build_context::BuildContext;
11use crate::signal::Signal;
12use crate::widget_id::WidgetId;
13
14#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Default, Serialize, Deserialize)]
15pub enum RadioVariant {
16 #[default]
18 Circle,
19 Square,
22 Rounded,
24}
25
26#[derive(Clone, Debug)]
27pub struct RadioStyleConfig {
28 pub is_selected: Signal<bool>,
29 pub is_hovered: Signal<bool>,
30 pub is_pressed: Signal<bool>,
31 pub is_focused: Signal<bool>,
32 pub is_disabled: Signal<bool>,
33 pub variant: RadioVariant,
34}
35
36pub trait RadioStyle: 'static {
37 fn make_body(&self, cfg: &RadioStyleConfig, ctx: &mut BuildContext) -> WidgetId;
38}
39
40pub type SharedRadioStyle = Rc<dyn RadioStyle>;