pub struct UiPalette {Show 16 fields
pub canvas: Rgba,
pub surface: Rgba,
pub surface_hover: Rgba,
pub surface_selected: Rgba,
pub text: Rgba,
pub text_secondary: Rgba,
pub text_muted: Rgba,
pub border: Rgba,
pub accent: Rgba,
pub accent_foreground: Rgba,
pub info: Rgba,
pub positive: Rgba,
pub warning: Rgba,
pub destructive: Rgba,
pub destructive_foreground: Rgba,
pub scrim: Rgba,
}Fields§
§canvas: Rgba§surface: Rgba§surface_hover: Rgba§surface_selected: Rgba§text: Rgba§text_secondary: Rgba§text_muted: Rgba§border: Rgba§accent: Rgba§accent_foreground: Rgba§info: Rgba§positive: Rgba§warning: Rgba§destructive: Rgba§destructive_foreground: Rgba§scrim: RgbaImplementations§
Source§impl UiPalette
impl UiPalette
Sourcepub const fn control_style(
self,
variant: ButtonVariant,
state: ControlState,
) -> SemanticStyle
pub const fn control_style( self, variant: ButtonVariant, state: ControlState, ) -> SemanticStyle
Resolves an action control without renderer-specific state ordering.
Examples found in repository?
examples/theme_gallery.rs (line 50)
5fn main() -> Result<(), ThemeError> {
6 println!(
7 "<!doctype html><meta charset=\"utf-8\"><title>Clankerdiff UI palette gallery</title><style>body{{margin:0;background:#888;font:14px monospace;display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,1fr))}}section{{padding:24px}}p{{padding:8px}}button{{border:0;padding:8px;margin:4px;font:inherit}}h2{{font-size:18px}}</style>"
8 );
9 for descriptor in ReviewTheme::catalog() {
10 let ui = ReviewTheme::builtin(&descriptor.id)?.ui;
11 println!(
12 "<section style=\"background:{};color:{}\"><h2>{}</h2>",
13 css(ui.canvas),
14 css(ui.text),
15 descriptor.name
16 );
17 for (label, foreground) in [
18 ("Primary content", ui.text),
19 ("Secondary metadata", ui.text_secondary),
20 ("Muted hints / disabled", ui.text_muted),
21 ("Info: running tool", ui.info),
22 ("Positive: completed", ui.positive),
23 ("Warning: context pressure", ui.warning),
24 ("Destructive: failed", ui.destructive),
25 ] {
26 println!("<p style=\"color:{}\">{label}</p>", css(foreground));
27 }
28 println!(
29 "<p style=\"background:{};border:1px solid {}\">Ordinary input / message surface</p>",
30 css(ui.surface),
31 css(ui.border)
32 );
33 println!(
34 "<p style=\"background:{}\">Hovered surface</p>",
35 css(ui.surface_hover)
36 );
37 for state in [SelectionState::Selected, SelectionState::Focused] {
38 let style = ui.selection_style(state);
39 println!(
40 "<p style=\"background:{};color:{}\">{state:?} row</p>",
41 css(style.background.unwrap_or(ui.canvas)),
42 css(style.foreground)
43 );
44 }
45 for variant in [
46 ButtonVariant::Primary,
47 ButtonVariant::Secondary,
48 ButtonVariant::Destructive,
49 ] {
50 let style = ui.control_style(variant, ControlState::new(InteractionState::Rest));
51 println!(
52 "<button style=\"background:{};color:{}\">{variant:?}</button>",
53 css(style.background.unwrap_or(ui.canvas)),
54 css(style.foreground)
55 );
56 }
57 println!("</section>");
58 }
59 Ok(())
60}Sourcepub const fn selection_style(self, state: SelectionState) -> SemanticStyle
pub const fn selection_style(self, state: SelectionState) -> SemanticStyle
Resolves selectable content consistently across renderers.
Examples found in repository?
examples/theme_gallery.rs (line 38)
5fn main() -> Result<(), ThemeError> {
6 println!(
7 "<!doctype html><meta charset=\"utf-8\"><title>Clankerdiff UI palette gallery</title><style>body{{margin:0;background:#888;font:14px monospace;display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,1fr))}}section{{padding:24px}}p{{padding:8px}}button{{border:0;padding:8px;margin:4px;font:inherit}}h2{{font-size:18px}}</style>"
8 );
9 for descriptor in ReviewTheme::catalog() {
10 let ui = ReviewTheme::builtin(&descriptor.id)?.ui;
11 println!(
12 "<section style=\"background:{};color:{}\"><h2>{}</h2>",
13 css(ui.canvas),
14 css(ui.text),
15 descriptor.name
16 );
17 for (label, foreground) in [
18 ("Primary content", ui.text),
19 ("Secondary metadata", ui.text_secondary),
20 ("Muted hints / disabled", ui.text_muted),
21 ("Info: running tool", ui.info),
22 ("Positive: completed", ui.positive),
23 ("Warning: context pressure", ui.warning),
24 ("Destructive: failed", ui.destructive),
25 ] {
26 println!("<p style=\"color:{}\">{label}</p>", css(foreground));
27 }
28 println!(
29 "<p style=\"background:{};border:1px solid {}\">Ordinary input / message surface</p>",
30 css(ui.surface),
31 css(ui.border)
32 );
33 println!(
34 "<p style=\"background:{}\">Hovered surface</p>",
35 css(ui.surface_hover)
36 );
37 for state in [SelectionState::Selected, SelectionState::Focused] {
38 let style = ui.selection_style(state);
39 println!(
40 "<p style=\"background:{};color:{}\">{state:?} row</p>",
41 css(style.background.unwrap_or(ui.canvas)),
42 css(style.foreground)
43 );
44 }
45 for variant in [
46 ButtonVariant::Primary,
47 ButtonVariant::Secondary,
48 ButtonVariant::Destructive,
49 ] {
50 let style = ui.control_style(variant, ControlState::new(InteractionState::Rest));
51 println!(
52 "<button style=\"background:{};color:{}\">{variant:?}</button>",
53 css(style.background.unwrap_or(ui.canvas)),
54 css(style.foreground)
55 );
56 }
57 println!("</section>");
58 }
59 Ok(())
60}Sourcepub const fn notice_style(self, tone: NoticeTone) -> SemanticStyle
pub const fn notice_style(self, tone: NoticeTone) -> SemanticStyle
Resolves the foreground used to communicate a notice tone.
Trait Implementations§
impl Copy for UiPalette
Source§impl<'de> Deserialize<'de> for UiPalette
impl<'de> Deserialize<'de> for UiPalette
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for UiPalette
impl StructuralPartialEq for UiPalette
Auto Trait Implementations§
impl Freeze for UiPalette
impl RefUnwindSafe for UiPalette
impl Send for UiPalette
impl Sync for UiPalette
impl Unpin for UiPalette
impl UnsafeUnpin for UiPalette
impl UnwindSafe for UiPalette
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more