(core): Añade Route, RoutePath y Waypoint

`Route` resuelve URLs sensibles al `Context`/idioma en propiedades de
componentes; `RoutePath` (renombrado desde html/route.rs) es el valor
concreto de ruta + query. `Waypoint` transporta la URL de retorno entre
pantallas de listado/alta/edición vía query string.

Ajusta `Context::route()`, `Redirect` y los componentes que aceptan
rutas para integrarse con el nuevo tipo `Route`.
This commit is contained in:
Manuel Cillero 2026-07-19 22:16:21 +02:00
parent 6f82da220b
commit af548b03c9
25 changed files with 819 additions and 216 deletions

View file

@ -5,7 +5,7 @@
//! del documento a partir de regiones ([`Region`]). Cada región es un contenedor lógico
//! identificado por un nombre para agrupar y renderizar componentes.
//!
//! Una página ([`Page`](crate::response::page::Page)) es un documento HTML completo. Implementa
//! Una página ([`Page`](crate::response::Page)) es un documento HTML completo. Implementa
//! [`Contextual`](crate::core::component::Contextual) para gestionar su propio [`Context`], donde
//! mantiene el tema activo, la plantilla seleccionada y los componentes asociados a cada región a
//! renderizar.
@ -104,7 +104,7 @@ use crate::{AutoDefault, util};
/// manera distinta.
///
/// El tema decide qué regiones mostrar en el cuerpo del documento, normalmente usando una plantilla
/// ([`Template`]) al renderizar la página ([`Page`](crate::response::page::Page)).
/// ([`Template`]) al renderizar la página ([`Page`](crate::response::Page)).
#[async_trait]
pub trait Region: Send + Sync {
/// Devuelve el nombre de la región.
@ -209,7 +209,7 @@ impl Region for DefaultRegions {
/// Interfaz común para definir plantillas de contenido.
///
/// Una `Template` puede proporcionar una o más variantes para decidir la composición del `<body>`
/// de una página ([`Page`](crate::response::page::Page)). El tema utiliza esta información para
/// de una página ([`Page`](crate::response::Page)). El tema utiliza esta información para
/// determinar qué regiones ([`Region`]) deben renderizarse y en qué orden.
#[async_trait]
pub trait Template: Send + Sync {