Retira AdminLTE 4 de Bootsier: CSS/JS, `bs::sidebar`, `BootsierRegions` y el shell propio de `CoreTemplates::Admin`. Sólo quedaba un sidebar de 5 secciones ya alcanzables desde el dashboard, las páginas de sección y el breadcrumb de `AdminFrame`. |
||
|---|---|---|
| .. | ||
| assets | ||
| src | ||
| tests | ||
| .gitattributes | ||
| build.rs | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
PageTop Bootsier
Tema de PageTop basado en Bootstrap para aplicar su catálogo de estilos y componentes flexibles.
Sobre PageTop
PageTop es un entorno de desarrollo que reivindica la esencia de la web clásica para crear soluciones web SSR (renderizadas en el servidor) modulares, extensibles y configurables, basadas en HTML, CSS y JavaScript.
Guía rápida
Igual que con otras extensiones, añade la dependencia a tu Cargo.toml:
[dependencies]
pagetop-bootsier = { ... }
Declara la extensión en tu aplicación (o extensión que la requiera). Recuerda que el orden en
dependencies() determina la prioridad relativa frente a las otras extensiones:
use pagetop::prelude::*;
struct MyApp;
#[async_trait]
impl Extension for MyApp {
fn dependencies(&self) -> Vec<ExtensionRef> {
vec![
// ...
&pagetop_bootsier::Bootsier,
// ...
]
}
}
Y selecciona el tema en la configuración de la aplicación:
[app]
theme = "Bootsier"
o fuerza el tema por código en una página concreta:
use pagetop::prelude::*;
use pagetop_bootsier::Bootsier;
async fn homepage(request: HttpRequest) -> Result<Markup, ErrorPage> {
Page::new(request)
.with_theme(&Bootsier)
.with_child(
Block::new()
.with_title(Lc::l("sample_title"))
.with_child(Html::with(|cx| html! {
p { (Lc::l("sample_content").using(cx)) }
})),
)
.render().await
}
Plantillas
Bootsier maqueta las dos plantillas de PageTop (CoreTemplates) con la misma cabecera, contenido
y pie: Standard, la plantilla por defecto de cualquier página; y Admin, que se activa creando
la página con Page::admin() en lugar de Page::new(). Ambas se maquetan igual hoy -- la
distinción entre página "normal" y de administración no vive en el maquetado, sino en qué
extensión registra contenido en cada región y para qué plantilla se autolimita (por ejemplo, el
menú de pagetop-admin, ver más abajo).
use pagetop::prelude::*;
async fn about(request: HttpRequest) -> Result<Markup, ErrorPage> {
Page::new(request)
.with_child(Html::with(|_| html! {
h1 { "Sobre nosotros" }
p { "Texto de presentación." }
}))
.render()
}
Menú de administración
pagetop-admin (si está presente en la aplicación) registra su propio menú de secciones y
páginas en CoreRegions::Aside, autolimitado a páginas con la plantilla Admin -- no requiere
ningún registro por parte de Bootsier. Se construye con Navbar/Nav/Dropdown, los mismos
componentes disponibles para cualquier página de la aplicación.
Selector de modo de color
bs::theme_toggle() crea un ítem de menú con el selector de modo de color (claro / oscuro /
automático), pensado para añadirse a cualquier Nav de la aplicación, no sólo a las páginas de
administración:
use pagetop::prelude::*;
use pagetop_bootsier::theme::*;
let navbar = bs::Navbar::simple().with_item(bs::navbar::Item::nav(
bs::Nav::new()
.with_item(bs::nav::Item::link(Lc::n("Home"), "/"))
.with_item(bs::theme_toggle()),
));
Créditos
Este crate integra la biblioteca de estilos Bootstrap 5.3.8 para definir el comportamiento, la apariencia y los componentes de la interfaz. Bootstrap se distribuye bajo licencia MIT.
Advertencia
PageTop es un proyecto personal para aprender Rust y conocer su ecosistema. Su API está sujeta a cambios frecuentes. No se recomienda su uso en producción, al menos hasta que se libere la versión 1.0.0.
Licencia
El código está disponible bajo una doble licencia:
-
Licencia MIT (LICENSE-MIT o también https://opensource.org/licenses/MIT)
-
Licencia Apache, Versión 2.0 (LICENSE-APACHE o también https://www.apache.org/licenses/LICENSE-2.0)
Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en el ecosistema Rust.