Commit graph

76 commits

Author SHA1 Message Date
f1295c74df ♻️ (pagetop): Renombra Slot a Embed 2026-03-29 13:32:40 +02:00
d10d546418 (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-03-29 11:54:20 +02:00
cd9454a729 📝 Retoques menores en documentación y ejemplos 2026-03-28 07:48:20 +01:00
54f990b11c ♻️ 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-03-26 20:36:32 +01:00
04e3d5b3c2 Completa la API de temas con setup_component!
Elimina `action::theme` fusionando sus responsabilidades en
`action::component`. Renombra `AlterMarkup` a `TransformMarkup` y
`FnActionAlterMarkup` a `FnActionTransformMarkup`. Simplifica
`ActionKey` y mueve los tipos de función al módulo de componente.
2026-03-23 15:52:06 +01:00
0c648fb95a Añade acción AlterMarkup para filtrar render
Permite a las extensiones transformar el `Markup` final de un componente
mediante edición de texto. Se despacha como último paso del ciclo de
renderizado.
2026-03-22 12:15:31 +01:00
4cbe84b4c0 Implementa temas hijo y macro render_component!
Añade `Theme::parent()` para declarar jerarquías de herencia entre
temas. Sustituye la acción `PrepareRender<C>` por el método
`Theme::prepare_component()` y la macro `render_component!`.
2026-03-22 08:58:15 +01:00
04dbbc8858 Añade StatusMessage/MessageLevel al contexto 2026-03-21 13:24:42 +01:00
34aeeab2d7 Añade ComponentError con HTML alternativo
`prepare_component()` ahora devuelve `Result<Markup, ComponentError>` en
lugar de `Markup`, para que los componentes señalen fallos durante el
renderizado de forma explícita.

`ComponentError` encapsula un mensaje de error y un marcado HTML
alternativo opcional (`fallback`). Si se produce un error, el ciclo de
renderizado registra la traza y muestra el `fallback` en lugar del
componente fallido, sin interrumpir el resto de la página.

Lo mismo aplica a los errores devueltos por la acción `PrepareRender` de
los temas, que siguen el mismo mecanismo.
2026-03-21 13:15:39 +01:00
a0b14aec36 Implementa Debug en comp./tipos principales 2026-03-21 11:26:02 +01:00
c3feff9efd 🚚 Renombra ContextOp a AssetsOp
El nombre anterior era ambiguo (podría referirse a cualquier operación
del contexto); `AssetsOp` describe exactamente lo que hace: operar sobre
los recursos del documento.
2026-03-21 11:12:46 +01:00
3e1bc0fb0e ♻️ Cambia en prepare_component() el tipo devuelto
Elimina `PrepareMarkup` como tipo de retorno de prepare_component() y de
`FnPrepareRender`, sustituyéndolo directamente por `Markup`. Se elimina
una capa innecesaria, ya que html! {} y html! { ... } cubren todos los
casos que ofrecía `PrepareMarkup`.
2026-03-17 20:04:26 +01:00
b39ed38d0d ♻️ (pagetop): Optimiza cadenas con CowStr 2026-01-06 01:16:09 +01:00
25d32ec5de ♻️ Cambia Self::default() por Tipo::default() 2025-12-28 13:18:18 +01:00
57f2fa64f4 🎨 Mejora gestión de errores para 403, 404 y otros 2025-12-17 12:40:53 +01:00
700bca7258 💡 Repasa comentarios de la cabecera de funciones 2025-12-16 09:06:52 +01:00
7b340a19f3 (locale): Refactoriza el sistema de localización
- Modulariza la lógica de localización.
- Actualiza la estructura de `Locale` para mejorar la resolución y
  gestión de idiomas.
- Introduce `RequestLocale` para manejar la negociación de idioma basada
  en las peticiones HTTP.
- Mejora `L10n` para ofrecer una gestión más flexible de traducciones
  con argumentos dinámicos.
- Actualiza la implementación de `LangId` en `Page` para garantizar una
  identificación de idioma coherente.
- Elimina código obsoleto y simplifica la gestión de identificadores de
  idioma.
2025-12-14 14:33:35 +01:00
476aff1d8e (pagetop): Añade gestión de rutas con parámetros 2025-12-12 00:14:55 +01:00
caa4cf6096 🚚 Renombra LangMatch por Locale 2025-12-10 15:18:07 +01:00
6c024da51e (minimal): Añade macros declarativas a utilidades
- Incorpora nuevo *crate* `pagetop-minimal` con macros básicas para
  operaciones con cadenas, bloques de texto o colecciones clave-valor.
- Refactoriza código para usar `util::join!` y `util::join_pair!` en la
  concatenación de cadenas.
- Normaliza la gestión de localización usando `util::kv!` para los
  argumentos con pares clave-valor.
- Actualizada documentación y archivos README para reflejar la nueva
  estructura y funcionalidades.
2025-12-07 11:55:26 +01:00
efd4975a50 🚧 Retoques menores en la documentación 2025-12-03 22:56:04 +01:00
10a8a1136c ♻️ Refactoriza gestión de idiomas en el contexto 2025-12-03 22:55:24 +01:00
c4d0a2f613 Añade config. para activar página de bienvenida 2025-12-03 22:48:05 +01:00
498df42b5b 🎨 (pagetop): Mejora gestión de URLs según contexto 2025-12-03 06:41:52 +01:00
af26e6aef9 🌐 Normaliza textos y localización a *snake_case* 2025-11-30 11:42:03 +01:00
1fa1ddf528 💡Retoques menores en comentarios 2025-11-30 11:14:34 +01:00
f2733bb250 ♻️ Refactoriza la gestión de regiones y plantillas 2025-11-30 00:16:54 +01:00
a2fe2114cd ♻️ (theme): Refactoriza renderizado de temas base 2025-11-23 14:35:38 +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
77c4005b4e Incorpora is_renderable en Component 2025-11-17 22:50:56 +01:00
80b18cc380 (bootsier): Añade componente Nav
- Adapta `Dropdown` para poder integrarlo en los menús `Nav`.
- Actualiza `Children` para soportar operaciones múltiples.
2025-10-29 13:47:59 +01:00
5ac26c0b06 🩹 Correcciones menores en comentarios y código 2025-10-25 19:04:35 +02:00
708dc9244b ️ Mejora macro join_opt! y retoca documentación 2025-10-19 21:39:14 +02:00
6368e71413 🎨 (pagetop): Mejoras sencillas en doc. y código 2025-10-17 18:14:20 +02:00
345bac9d25 📝 Repasa doc y cambia caracteres Unicode ambiguos 2025-10-12 12:29:16 +02:00
ec60c4ce6f ♻️ Refactoriza página de bienvenida y tema Basic
- Actualiza `Welcome` para usar el nuevo componente `Intro`.
- Simplifica el tema `Basic` apoyándose en la lógica de `Theme`.
- Predefine los *assets* básicos como recursos de `Theme`.
- Refactoriza archivos de localicación para reflejar los cambios de los
componentes.
2025-10-12 09:15:50 +02: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
cac50b21cb 🚧 Depura la estructura y estilos del menú e intro 2025-10-06 04:09:26 +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
843aed86c7 🚚 Renombra ErrorParam por ContextError 2025-09-30 23:45:13 +02:00
075f61bf09 🚧 (core): Mueve Context al ámbito de componentes 2025-09-30 23:36:09 +02:00
31435f30d3 💡 Mejora legibilidad de comentarios 2025-09-28 08:51:21 +02:00
2ac3c2a9c4 🔥 Elimina definitivamente TypedOpt por Typed 2025-09-27 21:18:54 +02:00
ce4557684e 🚚 Renombra TypedSlot por TypedOpt 2025-09-25 21:36:37 +02:00
2b2ce2c501 🎨 Unifica parámetros y estilos del tema básico
Ofrece dos composiciones de página dirigidas a una introducción de
contenidos neutra o con referencias a PageTop.
2025-09-18 23:38:25 +02:00
a96a3fdf9f 🔥 Elimina Render para usar siempre el contexto 2025-09-11 19:58:50 +02:00