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}