diff --git a/src/lib.rs b/src/lib.rs index 0841d52..b4dea87 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,7 @@ pub mod animation; pub mod context; mod graphics; mod names; +#[macro_use] pub mod styles; mod tick; mod tree; diff --git a/src/styles.rs b/src/styles.rs index 7abad4b..1e7dd58 100644 --- a/src/styles.rs +++ b/src/styles.rs @@ -22,6 +22,7 @@ use crate::styles::components::{FocusableWidgets, VisualOrder}; use crate::utils::Lazy; use crate::value::{Dynamic, IntoValue, Value}; +#[macro_use] pub mod components; /// A collection of style components organized by their name. diff --git a/src/styles/components.rs b/src/styles/components.rs index 43a33bb..a201de5 100644 --- a/src/styles/components.rs +++ b/src/styles/components.rs @@ -12,6 +12,51 @@ use crate::styles::{ Component, ComponentDefinition, ComponentName, Dimension, Global, NamedComponent, }; +macro_rules! define_components { + ($($widget:ident { $($(#$doc:tt)* $component:ident($type:ty, $name:expr, $($default:tt)*))* })*) => {$($( + $(#$doc)* + #[derive(Clone, Copy, Eq, PartialEq, Debug)] + pub struct $component; + + const _: () = { + use $crate::styles::{ComponentDefinition, ComponentName, NamedComponent}; + impl NamedComponent for $component { + fn name(&self) -> Cow<'_, ComponentName> { + Cow::Owned(ComponentName::named::