use fob_gen::{Allocator, JsBuilder, JsxBuilder};
use oxc_ast::ast::Statement;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let allocator = Allocator::default();
let js = JsBuilder::new(&allocator);
let jsx = JsxBuilder::new(&allocator);
let import_react = js.import_default("React", "react");
let button_jsx = jsx.element(
"button",
vec![
jsx.attr("onClick", Some(jsx.expr_attr(js.ident("onClick")))),
jsx.attr("className", Some(jsx.string_attr("btn"))),
],
vec![jsx.expr_child(js.ident("label"))],
false,
);
let button_fn = js.arrow_fn_block(
vec!["props"],
vec![js.return_stmt(Some(jsx.jsx_expr(button_jsx)))],
);
let button_decl = js.const_decl("Button", button_fn);
let export_default = js.export_default(js.ident("Button"));
let code = js.program(vec![
Statement::from(import_react),
button_decl,
Statement::from(export_default),
])?;
println!("{}", code);
Ok(())
}