Commit graph

27 commits

Author SHA1 Message Date
1cab0ae9a0 (theme): Añade región Aside
Introduce `CoreRegions::Aside` como nueva región de plantilla, entre
Header y Content, y Template ahora envuelve el cuerpo en `div.wrapper`,
omitiendo el renderizado si no hay contenido.

`CoreRegion`, `ReservedRegion` y `CoreTemplate` pasan a plural
(`CoreRegions`, `ReservedRegions`, `CoreTemplates`) para no confundirlos
con otras definiciones, y se amplía la documentación del módulo theme.
2026-08-02 10:40:36 +02:00
74dbcde5c5 ♻️ (core): Cambia HashMap x Vec en RegionComponents 2026-07-26 13:41:32 +02:00
7e6a9f8557 ♻️ (core): Clave &'static str en RegionComponents 2026-07-26 12:50:33 +02:00
845d91d8c1 ♻️ (core): Evita doble clonado de InRegion en Child
Los prototipos registrados con `InRegion` se clonaban dos veces por
petición: una al ensamblar la región (`ComponentGlobal::as_child`) y
otra al renderizar (`Child::render`). Ahora sólo se clonan al
renderizar.
2026-07-26 12:39:01 +02:00
8573aca29e (theme): Añade componentes Region y Template
Introduce Region y Template (`base::component::layout`) para componer el
`<body>` de una página, con captura explícita vía `handle_component()`
en lugar de maquetado implícito:

- `RegionName`/`TemplateName` (`core/theme.rs`) como interfaces de
  identidad; `CoreRegion` (`Header`/`Content`/`Footer`) y `CoreTemplate`
  (`Standard`/`Admin`) como catálogo por defecto.
- `ReservedRegion` (`PageTop`/`PageBottom`, en `response/page.rs`) queda
  fuera de `CoreRegion`. `Page::render()` las renderiza siempre,
  envolviendo `Theme::render_page_body()`, con independencia de la
  plantilla o el tema activos.
- Elimina `TemplateSource` en `Context`: la plantilla pasa a ser un
  `TemplateRef` fijo, sin resolución por tema (ese mecanismo nunca llegó
  a implementarse).
- La personalización por tema es por captura (`handle_component()` +
  `downcast_ref()`), no por sustituir qué constante se resuelve.
- Corrige referencias obsoletas a `DefaultRegions` por `CoreRegion`.
- Sustituye `tests/theme_template.rs` (API anterior) por
  `tests/component_template.rs`, que cubre el patrón de captura con el
  API nuevo.
2026-07-26 09:51:27 +02:00
24bd13414c Añade gestión de errores catastróficos
- Los errores controlados (403, 404, fatales) se renderizan con el tema
  activo; un `panic!` no controlado se intercepta con un HTML mínimo y
  autónomo, sin depender del tema ni de los componentes.
- Corrige además que `Context::template()` no seguía los cambios de tema
  hechos con `with_theme()` después de crear la página.
- Renombra `DefaultRegion(s)`/`DefaultTemplate(s)`, añade
  `Theme::admin_template()` y `Page::admin()`, y documenta la creación
  de temas e `InRegion` en `core/theme.rs`.
2026-07-13 00:38:11 +02:00
9354894b3a 🎨 Convierte el ciclo de renderizado en async
`prepare()` de `Component`, `render()` de `Region` y `Template`, y la
implementación de `ComponentRender` pasan a ser funciones async. Se
actualizan todos los componentes base, helpers, tests y ejemplos.
2026-07-06 00:48:41 +02:00
6376e3e88c 📝 Ajusta formato de comentarios 2026-06-13 19:16:34 +02:00
511149caa7 📝 Añade no_run a doctests ilustrativos 2026-06-13 00:31:36 +02:00
7553ed35ec 🎨 Aplica formato Rust 2024 (rustfmt.toml) 2026-05-30 22:50:40 +02:00
b118b43408 (pagetop): Mejora API y doc. de Children
- `From<T: Component> for ChildOp: with_child()` acepta componentes
  directamente sin envolverlos en `Child::with(...)`.
- `From<Child> for ChildOp` para completar las conversiones implícitas.
- Actualiza ejemplos y tests con la nueva API en bootsier y aliner.
2026-05-02 18:19:45 +02:00
2626234163 ♻️ Refactoriza la API de Children e InRegion
- Patrón prototipo en `InRegion`: cada petición recibe clones profundos.
- `ComponentClone` habilita clonar `dyn Component` de forma segura.
- `ChildTyped<C>` renombrado a `Slot<C>`, elimina `ChildTypedOp`.
- `Mutex` en lugar de `Arc<RwLock>` en `Child` y `Slot`.
- `is_renderable` y `setup_before_prepare` reciben `&Context`.
- Nuevos tests para `Children`, `ChildOp` y `Slot`.
2026-05-02 18:19:45 +02:00
f2733bb250 ♻️ Refactoriza la gestión de regiones y plantillas 2025-11-30 00:16:54 +01:00
f0e5f50a7f (theme): Añade componentes Region y Template
- Incluye un componente base `Template` para gestionar la estructura
  del documento y sus regiones (`Region`).
- Actualiza el *trait* `Contextual` para permitir la selección de la
  plantilla de renderizado.
- Modifica `Page` y `Context`, y refactoriza el manejo de temas, para
  dar soporte al nuevo sistema de plantillas y eliminar la gestión
  obsoleta de regiones.
2025-11-22 09:11:16 +01:00
64264f234d 🚚 Renombra ThemeRegion por DefaultRegions 2025-11-17 22:51:34 +01:00
f25f62dd3c 📝 Evita en los ejemplos use pagetop::prelude::*; 2025-10-12 06:57:04 +02:00
b076e22c2b 🎨 Mejora el uso de regiones y añade BasicRegion 2025-10-07 05:56:32 +02:00
5f64d50080 🎨 Mejora Region para declarar las regiones 2025-10-04 08:25:04 +02:00
7b941cb02c 🚚 Renombra region_name a region_key 2025-10-03 01:55:03 +02:00
e23bd0294c 🎨 Mejora uso de las regiones en contexto y página 2025-10-02 21:24:19 +02:00
7179cf0831 🎨 Unifica conversiones a String con to_string()
Como `String::from()` y `.to_string()` son equivalentes, se sustituyen
todas las ocurrencias de `String::from()` por `to_string()` para mayor
coherencia y legibilidad.
2025-09-11 19:03:34 +02:00
c43c8458cc 🚧 (welcome): Crea página de bienvenida desde intro
- Implementa un nuevo *layout* en el tema `Basic` para crear una
  plantilla de páginas de introducción.
- Añade nuevo fichero CSS `intro.css` para los estilos globales de la
  página de introducción.
- Incorpora nuevos recursos gráficos para la cabecera de la página de
  introducción en varios formatos (AVIF, WebP, JPEG).
- Revisa los ficheros de localización.
2025-09-04 01:53:51 +02:00
543f2de333 🚚 Renombra with_component por add_component 2025-09-04 01:11:03 +02:00
e08c412a36 🎨 (theme): Mejora gestión de regiones en páginas 2025-08-22 08:29:11 +02:00
a0c5c20aa1 💡 Corrige ejemplos de uso del componente Html 2025-08-03 11:57:01 +02:00
5d58d2d934 Añade soporte para responder páginas HTML
- Amplia la estructura "Page" para trabajar el renderizado con regiones
  de componentes para componer la página.
- Añade acciones "BeforeRenderBody" y "AfterRenderBody" para alterar el
  contenido de la página antes y después del renderizado.
- Actualiza "Context" para admitir parámetros dinámicos y mejorar la
  gestión de temas.
- Implementa el manejo de errores HTTP respondiendo páginas.
- Mejora la documentación y reorganiza el código en varios módulos.
2025-07-27 21:24:49 +02:00
3397553ba7 Añade gestión de regiones en temas 2025-07-24 21:20:35 +02:00