pub use leptos::prelude::*;
pub use paste;
pub use tw_merge::*;
pub use crate::utils::Utils;
#[macro_export]
macro_rules! clx {
($name:ident, $element:ident, $($base_class:expr),+ $(,)?) => {
#[component]
pub fn $name(
#[prop(into, optional)] class: Signal<String>,
children: Children,
) -> impl IntoView {
let merged_classes = Memo::new(move |_| {
tw_merge::tw_merge!(tw_merge::tw_join!($($base_class),+), class())
});
view! {
<$element
class=merged_classes
data-name=stringify!($name)
>
{children()}
</$element>
}
}
};
}
#[macro_export]
macro_rules! void {
($name:ident, $element:ident, $($base_class:expr),+ $(,)?) => {
#[component]
pub fn $name(
#[prop(into, optional)] class: Signal<String>,
) -> impl IntoView {
let merged_classes = Memo::new(move |_| {
tw_merge::tw_merge!(tw_merge::tw_join!($($base_class),+), class())
});
view! {
<$element
class=merged_classes
data-name=stringify!($name)
/>
}
}
};
}
#[macro_export]
macro_rules! transition {
($name:ident, $element:ident, $($base_class:expr),+ $(,)?) => {
#[component]
pub fn $name(
#[prop(into, optional)] class: Signal<String>,
children: Children,
) -> impl IntoView {
let merged_classes = Memo::new(move |_| {
tw_merge::tw_merge!(tw_merge::tw_join!($($base_class),+), class())
});
let random_name = Utils::use_random_transition_name();
view! {
<$element
class=merged_classes
data-name=stringify!($name)
>
{children()}
</$element>
}
}
};
}