# Ejemplos de Builder Vue - Producción Colección de ejemplos reales de archivos `builder.vue` implementados en producción. Cada ejemplo incluye el código completo y notas sobre decisiones de diseño importantes. --- ## Ejemplo 1: Banner Slideshow ### Descripción Banner hero con slideshow de imágenes o video de fondo, overlay configurable, textos principales (pretítulo, título, subtítulo) y botón de llamada a la acción. ### Características principales - **5 tabs organizados**: Configuración, Imágenes, Textos, Enlaces, Colores - **Selector imagen/video**: Toggle con iconos que alterna entre imagen y video con `v-show` - **Overlay completo**: Tipo (sin degradado/con degradado), color y opacidad agrupados en tab Imágenes - **Colorpickers**: Para overlay y color de texto general con textfield oculto - **Toggles con iconos**: Sombra (X/check), tipo imagen (foto/video), tipo overlay (cuadrado/degradado) - **Logo adicional**: Upload de logo que se superpone al banner - **Configuraciones globales**: Posición texto, sombra, container, altura banner ### Decisiones de diseño clave 1. **Selector imagen/video como primer campo del tab Imágenes**: El toggle de tipo de fondo está al inicio del tab Imágenes, antes de los uploads, según la regla 10.1 2. **v-show en uploads**: - Upload de imágenes: `v-show="data.tipodeimagen && data.tipodeimagen.newValues.builder_custom.value == ''"` - Upload de video: `v-show="data.tipodeimagen && data.tipodeimagen.newValues.builder_custom.value == '1'"` - NUNCA quitar estos `v-show`, son esenciales 3. **Grupo overlay en tab Imágenes**: El grupo completo (tipo + color + opacidad) está en Imágenes, NO en Colores, porque afecta directamente al fondo visual (regla 10.2) 4. **Radio borde en tab Enlaces**: Campo que afecta al botón va en el tab del enlace, no en Configuración (regla 10.3) 5. **Recuerda con HTML escapado**: El campo título incluye un "Recuerda" con etiquetas HTML escapadas (`<span>`) para guiar al usuario 6. **Color del texto en tab Colores**: El color general del texto va en su propio tab, no mezclado con el overlay ### Tabs configurados ```javascript tabsConfig: [ { id: "configuracion", label: "Configuración", color: "#f59e0b", icon: '...' }, { id: "imagenes", label: "Imágenes", color: "#10b981", icon: '...' }, { id: "textos", label: "Textos", color: "#3b82f6", icon: '...' }, { id: "enlaces", label: "Enlaces", color: "#ef4444", icon: '...' }, { id: "colores", label: "Colores", color: "#8b5cf6", icon: '...' } ] ``` ### Componentes utilizados - `acai-vue-tabs` - Sistema de tabs con storage-key y apply-theme-styles - `acai-vue-selectv2` - Selectores (algunos con `:toggle-icons`) - `acai-vue-textfield` - Campos de texto simple (pretítulo, subtítulo) - `acai-vue-title` - Encabezado principal con placeholder - `acai-vue-linkv2` - Enlaces con `:show_text="true"` - `acai-vue-upload` - Uploads de imagen/video/logo con todas las props necesarias - `acai-vue-colorpicker` - Pickers de color con textfield oculto asociado ### Iconos con toggle ```javascript iconosSombra: { '': '...(icon-tabler-x)', '1': '...(icon-tabler-check)' }, iconosTipoImagen: { '': '...(icon-tabler-photo)', '1': '...(icon-tabler-video)' }, iconosOverlay: { '': '...(icon-tabler-square)', '1': '...(icon-tabler-gradient)' } ``` ### Código completo ```vue ``` --- ## Ejemplo 2: [Módulo de texto genérico] ```vue ```