zerolaunch_plugin_api/services/theme/theme_provider.rs
1use crate::host::HostApiError;
2
3/// 宿主实际生效的界面主题。
4///
5/// 由宿主在配置模式与系统主题之间完成解析;插件只消费最终的浅色或深色结果。
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum Theme {
8 /// 浅色主题;宿主当前界面使用浅色配色。
9 Light,
10 /// 深色主题;宿主当前界面使用深色配色。
11 Dark,
12}
13
14impl Theme {
15 /// 主题短名称("light"/"dark"),用于事件载荷与日志文本。
16 pub fn as_str(&self) -> &'static str {
17 match self {
18 Theme::Light => "light",
19 Theme::Dark => "dark",
20 }
21 }
22}
23
24/// 提供宿主当前实际生效主题的平台能力。
25///
26/// 由平台层实现并注入 HostApi,PluginHandle 仅负责向插件转发查询结果。
27pub trait ThemeProvider: Send + Sync {
28 /// 查询当前系统主题;宿主显式配置的 light/dark 由 HostApi 在上层优先处理。
29 fn current_system_theme(&self) -> Result<Theme, HostApiError>;
30}