based/examples/ui.rs
2025-01-21 09:00:45 +01:00

60 lines
1.4 KiB
Rust

use based::request::{RequestContext, StringResponse};
use based::ui::components::{AppBar, Shell};
use based::ui::htmx::{Event, HTMXAttributes};
use based::ui::{prelude::*, render_page};
use maud::Render;
use maud::html;
use rocket::get;
use rocket::routes;
#[get("/")]
pub async fn index_page(ctx: RequestContext) -> StringResponse {
let content = AppBar("MyApp", None).render();
let content = html!(
h1 { "Hello World!" };
(
Screen::medium(Hover(Background(Nothing()).color(Red::_700))).on(
Background(Text("HELLO!")).color(Blue::_700)
)
)
(Hover(
Cursor::NorthEastResize.on(
Padding(Text("").color(&Gray::_400)).x(ScreenValue::_10)
)
).on(
Link("/test", Text("Hello")).hx_get("/test").hx_get("/test").hx_trigger(
Event::on_load().delay("2s")
.and(Event::on_revealed())
)
)
)
(content)
);
render_page(
content,
"Hello World",
ctx,
&Shell::new(
html! {
script src="https://cdn.tailwindcss.com" {};
},
html! {},
Some(String::new()),
),
)
.await
}
#[rocket::launch]
async fn launch() -> _ {
// Logging
env_logger::init();
rocket::build().mount("/", routes![index_page])
}