use rscx::{component, html, props}; use rscx_mdx::mdx::{Mdx, MdxComponentProps}; #[tokio::main] async fn main() { let source = r#"--- title: "Hello, world!" --- # Hello, world! This is a **markdown** file with some *content*, but also custom RSCx components! ## subtitle "#; let res = html! { }; println!("{}", res); // output -> // //

Hello, world!

//

This is a markdown file with some content, but also custom RSCx components!

//

Some custom title!

//
//

subtitle

//
} /// handle is called everytime a custom component is encountered. /// The props are standardized in the MdxComponentProps struct and can be later parsed and used /// to render the component. async fn handle(name: String, props: MdxComponentProps) -> String { match name.as_str() { "CustomTitle" => html! { }, "Layout" => html! { {props.children} }, _ => String::new(), } } // below we define some custom components that can be used in the markdown file #[component] fn CustomTitle() -> String { html! {

Some custom title!

} } #[props] pub struct LayoutProps { children: String, } #[component] fn Layout(props: LayoutProps) -> String { html! {
{props.children}
} }