Commit graph

55 commits

Author SHA1 Message Date
25713a8a13 ♻️ (html): Añade valores extra a Props
- Reordena campos, variantes y métodos para mayor consistencia interna.
- Añade `extra_or`, `extra_or_default` y `extra_or_else` a `Props`.
- Mejora la documentación y amplía los tests de integración.
2026-07-09 00:05:28 +02:00
a26aa4d30a 💄 (intro): Reserva espacio vertical para *badges* 2026-07-07 15:32:30 +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
3120fd9a6f 🚧 Expone as_str de AutofillField 2026-06-29 20:58:42 +02:00
9435678e01 ♻️ (form): Mueve componentes de formulario a base 2026-06-22 02:12:09 +02:00
62219584b0 ♻️ (html): API para id's en Props y componentes 2026-06-20 15:02:23 +02:00
511149caa7 📝 Añade no_run a doctests ilustrativos 2026-06-13 00:31:36 +02:00
f9e87058d8 ♻️ (html): Migra Classes/ClassesOp a Props/PropsOp
Introduce `Props`/`PropsOp` para gestionar pares `atributo="valor"` y
clases CSS para aplicar en componentes.

- Constructores `Props::new()`, `Props::classes()` y `Props::default()`.
- `Page.body_classes` reemplazado por `body_props` (permite atributos
  arbitrarios en `<body>`, no sólo clases).
- Tests nuevos para atributos y reescritos para clases.
2026-06-12 01:55:07 +02:00
019961ed77 🚚 Actualiza rutas de assets estáticos
Los CSS e imágenes propios de PageTop se sirven bajo `/pagetop/`, por lo
que las referencias a `/css/` e `/img/` deben incluir ese prefijo.
2026-05-31 00:51:48 +02:00
82dbe56d8a ♻️ (intro): Normaliza nombres de clases CSS 2026-05-02 18:19:45 +02:00
edc809aadd ♻️ (pagetop): Refactorización de Contextual
Los métodos `required_id()` y `push_message()` son operaciones de tiempo
de renderizado, no de construcción. Se trasladan como métodos inherentes
de `Context`. También se ajustan los métodos asociados a parámetros.
2026-05-02 18:19:45 +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
f51d90dd66 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-05-02 18:19:45 +02:00
015b31733d Implementa Debug en comp./tipos principales 2026-05-02 18:19:45 +02:00
c5eeb67463 🚚 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-05-02 18:19:45 +02:00
908fd969e4 ♻️ 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-05-02 18:19:45 +02:00
4bf2c18b24 ♻️ Refactoriza AttrClasses como Classes 2025-12-28 14:57:21 +01:00
fa32833ffa ♻️ Refactoriza atributos HTML 2025-12-28 14:03:35 +01:00
25d32ec5de ♻️ Cambia Self::default() por Tipo::default() 2025-12-28 13:18:18 +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
e271437da8 🩹 Corrige ejemplos con enlaces dinámicos 2025-12-03 23:06:35 +01:00
498df42b5b 🎨 (pagetop): Mejora gestión de URLs según contexto 2025-12-03 06:41:52 +01:00
33669d90f6 (pagetop): Añade macro Getters para estructuras 2025-11-30 12:51:45 +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
2ce74fec8e 🚧 Retoques menores en los comentarios del código 2025-11-29 14:42:05 +01:00
0849d23e3f 🚧 Añade constante PAGETOP_VERSION 2025-11-29 13:55:35 +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
1ed5ab86fe ⚰️ (menu): Elimina implementación base de menús 2025-11-02 20:46:43 +01:00
534b1f9615 🍱 Reemplaza imágenes del logo de PageTop con SVG 2025-10-26 06:38:10 +01:00
5ac26c0b06 🩹 Correcciones menores en comentarios y código 2025-10-25 19:04:35 +02:00
d21e1a2168 🔒 Mejora seguridad de enlaces con noopener 2025-10-25 07:13:15 +02:00
bf310bec7e ️ Mejora adición de componentes hijos 2025-10-25 07:03:14 +02:00
5eab417b11 🚚 Renombra add_component por add_child 2025-10-18 21:33:29 +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
fe1a6d1baa 🚧 Revisión del estado de los menús 2025-10-10 10:55:51 +02:00
cac50b21cb 🚧 Depura la estructura y estilos del menú e intro 2025-10-06 04:09:26 +02:00
0f1296c216 🎨 Mejora la estructura y estilos del menú
Rrenombra clases, ajusta estilos CSS y actualiza la lógica de JavaScript
para una mejor gestión de submenús.
2025-09-29 02:07:10 +02:00
67a9b057ee 🚧 (base): Añade nuevo componente menu 2025-09-28 13:47:33 +02:00
df1f386241 🚧 (base): Añade nuevo componente Icon 2025-09-28 13:46:02 +02:00
31435f30d3 💡 Mejora legibilidad de comentarios 2025-09-28 08:51:21 +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
da1390c2fe 🚧 (context): Generaliza los parámetros de contexto 2025-09-06 09:41:01 +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
fdb8132c37 🎨 (locale): Mejora el uso de lookup / using 2025-09-04 00:27:25 +02:00
ce5a6c07bd 💄 Aplica BEM a estilos de bienvenida y componente 2025-08-25 23:30:53 +02:00
bb759e9a38 💄 Añade componente PoweredBy para copyright
Adapta la página de bienvenida al tratamiento revisado de regiones y
añade en el pie el componente `PoweredBy` para la nota de copyright.
2025-08-24 10:19:17 +02:00