textiler_core/hooks/use_mode.rs
1use crate::context::ThemeModeContext;
2use crate::theme::theme_mode::ThemeMode;
3use yew::{hook, use_context, Callback};
4
5#[hook]
6pub fn use_mode() -> (ThemeMode, Callback<ThemeMode>) {
7 let ctx = use_context::<ThemeModeContext>();
8 match ctx {
9 Some(ctx) => {
10 let callback = {
11 let ctx = ctx.clone();
12 Callback::from(move |mode| ctx.set(mode))
13 };
14 ((**ctx).clone(), callback)
15 }
16 None => (ThemeMode::System, Callback::from(|_| {})),
17 }
18}