use crate::*;
#[derive(Clone, Data, Debug, New)]
pub(crate) struct ClassParam {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) name: Ident,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) ty: Type,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct PseudoBlock {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) selector: String,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) properties: Vec<(ClassPropKey, ClassPropValue)>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct MediaBlock {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) query: String,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) properties: Vec<(ClassPropKey, ClassPropValue)>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct ClassExtend {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) name: Ident,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) args: Vec<proc_macro2::TokenStream>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct ClassDef {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) visibility: Visibility,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) name: Ident,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) params: Option<Vec<ClassParam>>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) extends: Vec<ClassExtend>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) properties: Vec<(ClassPropKey, ClassPropValue)>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) pseudo_blocks: Vec<PseudoBlock>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) media_blocks: Vec<MediaBlock>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct ClassInput {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) classes: Vec<ClassDef>,
}
pub(crate) struct OnceLockParams<'a> {
pub(crate) vis: &'a Visibility,
pub(crate) fn_name_token: &'a proc_macro2::TokenStream,
pub(crate) const_name_token: &'a proc_macro2::TokenStream,
pub(crate) class_name_str: &'a str,
pub(crate) style_expr: &'a proc_macro2::TokenStream,
pub(crate) pseudo_expr: &'a proc_macro2::TokenStream,
pub(crate) media_expr: &'a proc_macro2::TokenStream,
}