dioxus_docs_kit/blog/
hooks.rs1use dioxus::prelude::*;
2
3use crate::BlogContext;
4use crate::blog::registry::BlogRegistry;
5use crate::components::DrawerOpen;
6
7pub struct BlogProviders {
9 pub search_open: Signal<bool>,
10 pub drawer_open: Signal<bool>,
11 pub active_tag: Signal<Option<String>>,
12 pub current_page: Signal<usize>,
13}
14
15pub fn use_blog_providers(registry: &'static BlogRegistry, blog_ctx: BlogContext) -> BlogProviders {
17 use_context_provider(|| registry);
18 use_context_provider(|| blog_ctx);
19
20 let search_open = use_signal(|| false);
21 let drawer_open = use_signal(|| false);
22 let active_tag: Signal<Option<String>> = use_signal(|| None);
23 let current_page = use_signal(|| 0usize);
24
25 use_context_provider(|| search_open);
26 use_context_provider(|| DrawerOpen(drawer_open));
27 use_context_provider(|| active_tag);
28 use_context_provider(|| current_page);
29
30 BlogProviders {
31 search_open,
32 drawer_open,
33 active_tag,
34 current_page,
35 }
36}