freya_components/theme.rs
1use dioxus::prelude::*;
2use freya_hooks::{
3 use_init_theme,
4 Theme,
5};
6
7/// Properties for the [`ThemeProvider`] component.
8#[derive(Props, Clone, PartialEq)]
9pub struct ThemeProviderProps {
10 /// Theme to provide.
11 pub theme: Option<Theme>,
12 /// Inner children to provide a Theme to.
13 pub children: Element,
14}
15
16/// Provides a `Theme` for all its children.
17#[allow(non_snake_case)]
18pub fn ThemeProvider(props: ThemeProviderProps) -> Element {
19 use_init_theme(|| props.theme.unwrap_or_default());
20
21 rsx!({ props.children })
22}