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}