ratatui_kit_macros/
lib.rs

1use element::ElementOrAdapter;
2use proc_macro::TokenStream;
3use props::ParsedProps;
4use quote::ToTokens;
5
6mod adapter;
7mod component;
8mod element;
9mod props;
10mod utils;
11
12#[proc_macro_derive(Props)]
13pub fn derive_props(item: TokenStream) -> TokenStream {
14    let props = syn::parse_macro_input!(item as ParsedProps);
15    props.to_token_stream().into()
16}
17
18#[proc_macro]
19pub fn element(input: TokenStream) -> TokenStream {
20    let element = syn::parse_macro_input!(input as ElementOrAdapter);
21    element.to_token_stream().into()
22}
23
24#[proc_macro_attribute]
25pub fn component(_attr: TokenStream, item: TokenStream) -> TokenStream {
26    let component = syn::parse_macro_input!(item as component::ParsedComponent);
27    component.to_token_stream().into()
28}