pub struct ReviewTheme {
pub diff: DiffPalette,
pub ui: UiPalette,
pub syntax: SyntaxTheme,
pub markdown: MarkdownPalette,
/* private fields */
}Fields§
§diff: DiffPalette§ui: UiPalette§syntax: SyntaxTheme§markdown: MarkdownPaletteImplementations§
Source§impl ReviewTheme
impl ReviewTheme
pub fn builder(id: impl Into<String>) -> ReviewThemeBuilder
Sourcepub fn from_bytes(id: ThemeId, bytes: &[u8]) -> Result<Self, ThemeError>
pub fn from_bytes(id: ThemeId, bytes: &[u8]) -> Result<Self, ThemeError>
Parses a versioned Diff theme JSON document.
Capture lookup first tries an exact name and then progressively removes dot-separated suffixes. The full parsed palette and map affect revision.
§Errors
Returns an error for malformed JSON or an unsupported schema version.
pub const fn id(&self) -> &ThemeId
pub fn revision(&self) -> Fingerprint
pub fn to_bytes(&self) -> Result<Vec<u8>, ThemeError>
Sourcepub fn catalog() -> Vec<ThemeDescriptor>
pub fn catalog() -> Vec<ThemeDescriptor>
Returns all selectable built-in themes, with stable kebab-case identifiers.
Examples found in repository?
examples/theme_gallery.rs (line 9)
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 fn builtin(name: &str) -> Result<Self, ThemeError>
pub fn builtin(name: &str) -> Result<Self, ThemeError>
Loads a selectable built-in theme by its stable identifier.
Aliases are matched case-insensitively and with spaces or underscores normalized to dashes.
§Errors
Returns an error when no built-in theme has the supplied identifier.
Examples found in repository?
examples/theme_gallery.rs (line 10)
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 fn sage() -> Result<Self, ThemeError>
pub fn sage() -> Result<Self, ThemeError>
Sourcepub fn ayu() -> Result<Self, ThemeError>
pub fn ayu() -> Result<Self, ThemeError>
Trait Implementations§
Source§impl Clone for ReviewTheme
impl Clone for ReviewTheme
Source§fn clone(&self) -> ReviewTheme
fn clone(&self) -> ReviewTheme
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ReviewTheme
impl Debug for ReviewTheme
Auto Trait Implementations§
impl Freeze for ReviewTheme
impl RefUnwindSafe for ReviewTheme
impl Send for ReviewTheme
impl Sync for ReviewTheme
impl Unpin for ReviewTheme
impl UnsafeUnpin for ReviewTheme
impl UnwindSafe for ReviewTheme
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