Commit graph

68 commits

Author SHA1 Message Date
a6fc037a52 🔖 Prepara publicación de pagetop-bootsier 0.1.0 2026-05-03 23:41:43 +02:00
8856699c3b (examples): Añade ejemplo de formulario
Corrige referencia errónea a `form::input::Field` en ejemplo de Form.
2026-05-02 18:19:45 +02:00
4b50e043e0 💄 (bootsier): Añade estilos y mejora docs de Form 2026-05-02 18:19:45 +02:00
3ceb8892a2 (bootsier): Añade botones con componente Button
Mueve `ButtonAction`, `ButtonColor` y `ButtonSize` a `aux/button.rs`.
Normaliza la documentación de `aux/border.rs` y `aux/color.rs`.
2026-05-02 18:19:45 +02:00
863e7de3df (bootsier): Añade componente para campos ocultos 2026-05-02 18:19:45 +02:00
cb3448add2 (bootsier): Añade un control deslizante de rango 2026-05-02 18:19:45 +02:00
3436f94b18 (bootsier): Añade componente para áreas de texto 2026-05-02 18:19:45 +02:00
9173aee22c (bootsier): Añade etiquetas flotantes
Los componentes `input::Field` y `select::Field` admiten ahora
`with_floating_label()` para habilitar etiquetas flotantes en la
visualización de los componentes.
2026-05-02 18:19:45 +02:00
f1b8280e6f (bootsier): Añade campos de texto de una línea 2026-05-02 18:19:45 +02:00
90bc9d56f1 ♻️ (bootsier): Unifica nombre principal a Field 2026-05-02 18:19:45 +02:00
2ac3988213 (bootsier): Añade listas de selección 2026-05-02 18:19:45 +02:00
76ef339b42 ♻️ (bootsier): Renombra form-item a form-field 2026-05-02 18:19:45 +02:00
8717d24ea3 🎨 (bootsier): Normaliza id's y revisa Checkbox
Renombra los sufijos de `id` de los controles internos para que cada
tipo tenga su propio identificador: `-checkbox`, `-check-{n}` y
`-radio-{n}`. Elimina además el atributo booleano `switch` inválido en
HTML (basta con `role="switch"` y `class="form-switch"`).
2026-05-02 18:19:45 +02:00
2fbafce0e7 (bootsier): Añade grupos de botones de opción 2026-05-02 18:19:45 +02:00
cc7ddd3d06 (bootsier): Añade grupos de casillas de marcado 2026-05-02 18:19:45 +02:00
59dbc2b710 (bootsier): Añade Checkbox con dos variantes
Fusiona casilla de verificación e interruptor en un único componente con
constructores `check()` y `switch()`, y el enum `CheckboxKind`.
2026-05-02 18:19:45 +02:00
75d4ff81cc 🎨 (bootsier): Mejoras a Fieldset
- Nuevo campo `description` con `with_description()`.
- `with_legend()` acepta ahora `Option<L10n>`.
- El `<fieldset>` no se renderiza si no tiene componentes hijo.
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
b3292c32f7 ♻️ Simplifica helpers y quita código redundante 2026-05-02 18:19:45 +02:00
f26df464d9 🩹 Corrige ejemplo de dependencias 2026-05-02 18:19:45 +02:00
97ea454040 ♻️ (pagetop): Renombra Slot a Embed 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
f087c457cc 📝 Retoques menores en documentación y ejemplos 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
bfaf2e569f (bootsier): Añade componentes para formularios 2026-01-06 01:17:35 +01:00
b39ed38d0d ♻️ (pagetop): Optimiza cadenas con CowStr 2026-01-06 01:16:09 +01: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
3db798ad3b 📝 Añade guías de contribución y revisa estilos 2025-12-19 11:15:49 +01:00
11763d097d 🔥 Elimina anotaciones #[inline] para evitar abuso 2025-12-17 12:35:21 +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
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
0351000487 🩹 (bootsier): Corrige más enlaces dinámicos 2025-12-07 11:37:23 +01:00
da229e494d Añade soporte a contenido HTML en ítems de menú 2025-12-03 06:47:33 +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
af26e6aef9 🌐 Normaliza textos y localización a *snake_case* 2025-11-30 11:42:03 +01:00
9c6888e378 (bootsier): Añade plantilla estándar propia 2025-11-30 10:53:49 +01:00
2ce74fec8e 🚧 Retoques menores en los comentarios del código 2025-11-29 14:42:05 +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
2e39af0856 ♻️ (bootsier): Refactoriza la gestión de clases
- Mejora la legibilidad del código.
- Simplifica las alteraciones de clases en los componentes `Container`,
  `Dropdown`, `Image`, `Nav`, `Navbar` y `Offcanvas` usando métodos
  dedicados para generar clases en función de sus propiedades.
- Mejora los enums añadiendo métodos que devuelven sus clases
  asociadas, reduciendo código repetitivo.
- Elimina el trait `JoinClasses` y su implementación, integrando la
  lógica de unión de clases directamente en los componentes.
2025-11-15 13:16:15 +01:00