✨ (bootsier): Añade componentes esenciales
- Añade Dialog como modal de Bootstrap, con el JS de soporte para `htmx:confirm` y el saneado de su posición fija. - Adapta Nav, Navbar y Dropdown al reuso de los tipos movidos al core, y traduce BootsierColors/Intent en Button y Badge, con soporte para Light/Dark vía with_color(). - Reexporta en el tema los componentes de PageTop que faltaban: Block, Breadcrumb, Messages, Pager, Table y form::Number.
This commit is contained in:
parent
eb63a7ef37
commit
c0a5a8c3ab
47 changed files with 2135 additions and 1818 deletions
43
extensions/pagetop-bootsier/src/theme/bs/sidebar.rs
Normal file
43
extensions/pagetop-bootsier/src/theme/bs/sidebar.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
//! Componentes para la barra lateral de la shell de Bootsier.
|
||||
//!
|
||||
//! # Componentes disponibles
|
||||
//!
|
||||
//! - [`Section`] - encabezado de grupo (`<li class="nav-header">`).
|
||||
//! - [`Item`] - enlace de navegación con icono de Bootstrap Icons. Detecta
|
||||
//! automáticamente si la ruta activa coincide con la del *request* y añade la clase
|
||||
//! `active` al enlace.
|
||||
//!
|
||||
//! # Flujo de uso
|
||||
//!
|
||||
//! Los componentes se añaden a la región
|
||||
//! [`BootsierRegions::Sidebar`](crate::theme::bs::BootsierRegions::Sidebar).
|
||||
//! El registro global se hace una sola vez en el arranque; el registro por página
|
||||
//! se hace al construir la página. La región sólo se renderiza en páginas creadas con
|
||||
//! [`Page::admin()`](pagetop::response::Page::admin); en páginas con
|
||||
//! [`Page::new()`](pagetop::response::Page::new) no tiene efecto.
|
||||
//!
|
||||
//! ```rust,no_run
|
||||
//! use pagetop::prelude::*;
|
||||
//! use pagetop_bootsier::theme::bs::{BootsierRegions, sidebar};
|
||||
//!
|
||||
//! // Registro global: visible en todas las páginas de administración.
|
||||
//! fn register_navigation() {
|
||||
//! InRegion::Global(&BootsierRegions::Sidebar)
|
||||
//! .add(sidebar::Section::titled(Lc::n("Administración")))
|
||||
//! .add(sidebar::Item::link(Lc::n("Usuarios"), "/users", "people"))
|
||||
//! .add(sidebar::Item::link(Lc::n("Roles"), "/roles", "shield-check"));
|
||||
//! }
|
||||
//!
|
||||
//! // Uso en un handler: la página de administración muestra el sidebar registrado.
|
||||
//! async fn users(request: HttpRequest) -> Result<Markup, ErrorPage> {
|
||||
//! Page::admin(request)
|
||||
//! .with_child(Html::with(|_| html! { h3 { "Usuarios" } }))
|
||||
//! .render().await
|
||||
//! }
|
||||
//! ```
|
||||
|
||||
mod item;
|
||||
pub use item::Item;
|
||||
|
||||
mod section;
|
||||
pub use section::Section;
|
||||
Loading…
Add table
Add a link
Reference in a new issue