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: String,
children: Children,
) -> impl IntoView {
let merged_classes = 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: String,
) -> impl IntoView {
let merged_classes = 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: String,
children: Children,
) -> impl IntoView {
let merged_classes = 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>
}
}
};
}