pagetop/extensions/pagetop-bootsier
Manuel Cillero 11c2bdffb1 🔥 (bootsier): Elimina AdminLTE
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`.
2026-09-22 21:34:16 +02:00
..
assets 🔥 (bootsier): Elimina AdminLTE 2026-09-22 21:34:16 +02:00
src 🔥 (bootsier): Elimina AdminLTE 2026-09-22 21:34:16 +02:00
tests ♻️ (bootsier): Cambia Offcanvas por Panel en Navbar 2026-09-22 18:58:43 +02:00
.gitattributes 🎨 (bootsier): Ajusta estilos para personalizar 2025-10-12 20:37:38 +02:00
build.rs 🔥 (bootsier): Elimina AdminLTE 2026-09-22 21:34:16 +02:00
Cargo.toml 📝 Limpia y corrige documentación de extensiones 2026-06-12 21:29:10 +02:00
CHANGELOG.md 🔖 Prepara publicación de pagetop-bootsier 0.1.1 2026-05-07 21:21:47 +02:00
LICENSE-APACHE 📄 Actualiza licencias y revisa *badges* de README 2025-10-12 13:08:33 +02:00
LICENSE-MIT 📄 Actualiza licencias y revisa *badges* de README 2025-10-12 13:08:33 +02:00
README.md 🔥 (bootsier): Elimina AdminLTE 2026-09-22 21:34:16 +02:00

PageTop Bootsier

Tema de PageTop basado en Bootstrap para aplicar su catálogo de estilos y componentes flexibles.

Doc API Crates.io Descargas Licencia

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:

Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en el ecosistema Rust.