feat: add new theme #61
@@ -332,8 +332,8 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn missing_appearance_mode_falls_back_to_system() {
|
fn missing_appearance_mode_falls_back_to_dark() {
|
||||||
let settings = json_with("").unwrap();
|
let settings = json_with("").unwrap();
|
||||||
assert_eq!(settings.appearance_mode, AppearanceMode::System);
|
assert_eq!(settings.appearance_mode, AppearanceMode::Dark);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ use crate::{Theme, ThemeMode};
|
|||||||
/// it wherever their settings live; this crate never touches disk.
|
/// it wherever their settings live; this crate never touches disk.
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
|
||||||
pub enum AppearanceMode {
|
pub enum AppearanceMode {
|
||||||
/// Follow the OS. The default — matches every other native app on the
|
/// Follow the OS — matches every other native app on the machine,
|
||||||
/// machine, including when the OS is set to switch at sunset.
|
/// including when the OS is set to switch at sunset.
|
||||||
#[default]
|
|
||||||
System,
|
System,
|
||||||
Light,
|
Light,
|
||||||
|
/// Paint dark regardless of the OS.
|
||||||
|
#[default]
|
||||||
Dark,
|
Dark,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ pub fn init(mode: AppearanceMode, cx: &mut App) {
|
|||||||
Theme::change(resolve(mode, system), None, cx);
|
Theme::change(resolve(mode, system), None, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The mode currently in effect (defaults to `System` before [`init`]).
|
/// The mode currently in effect (defaults to `Dark` before [`init`]).
|
||||||
pub fn mode(cx: &App) -> AppearanceMode {
|
pub fn mode(cx: &App) -> AppearanceMode {
|
||||||
cx.try_global::<AppearanceState>()
|
cx.try_global::<AppearanceState>()
|
||||||
.map(|state| state.mode)
|
.map(|state| state.mode)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ pub const TABBAR_HEIGHT: Pixels = px(36.0);
|
|||||||
pub const SIDEBAR_WIDTH: Pixels = px(240.);
|
pub const SIDEBAR_WIDTH: Pixels = px(240.);
|
||||||
|
|
||||||
pub fn init(cx: &mut App) {
|
pub fn init(cx: &mut App) {
|
||||||
appearance::init(AppearanceMode::System, cx);
|
appearance::init(AppearanceMode::default(), cx);
|
||||||
Theme::sync_scrollbar_appearance(cx);
|
Theme::sync_scrollbar_appearance(cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ use serde::{Deserialize, Serialize};
|
|||||||
#[derive(Debug, Clone, Copy, Default, PartialEq, PartialOrd, Eq, Hash, Deserialize, Serialize)]
|
#[derive(Debug, Clone, Copy, Default, PartialEq, PartialOrd, Eq, Hash, Deserialize, Serialize)]
|
||||||
pub enum ThemeMode {
|
pub enum ThemeMode {
|
||||||
#[default]
|
#[default]
|
||||||
Light,
|
|
||||||
Dark,
|
Dark,
|
||||||
|
Light,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ThemeMode {
|
impl ThemeMode {
|
||||||
|
|||||||
Reference in New Issue
Block a user