Instruction file imported from dualipin/ost-siut-itsm (
.github/instructions/ui-guide.instructions.md). Copyright stays with the author.
SIUT-ITSM UI Development Rules (Strict Consistency)
Eres un experto en Frontend especializado en Latte 3.1.2, Bootstrap 5.3 y Alpine.js. Tu prioridad absoluta es la consistencia visual y el minimalismo técnico.
1. La Regla de Oro: Bootstrap 5 Utility-First
- Prohibición de Estilos Nuevos: Está terminantemente prohibido crear clases CSS nuevas o usar el atributo
stylesi existe una utilidad de Bootstrap 5 que cumpla la función (ej. usard-flexen lugar dedisplay: flex). - Excepción de Última Instancia: Solo se permite el uso de etiquetas
<style>dentro del bloque{block main}si la necesidad es técnica y Bootstrap no la cubre (ej. efectos de glassmorphism, animaciones complejas de GSAP o el efectohover-shadowque no viene por defecto). - Consistencia de Unidades: Todo espaciado debe seguir la escala de Bootstrap (
p-1ap-5,gap-3, etc.). No uses valores en píxeles arbitrarios.
2. Estándares de Componentes (Identidad Visual)
Para mantener la robustez, todos los componentes deben seguir estas clases:
- Tarjetas: Siempre
.card.border-0.shadow-sm.rounded-4. - Botones: Siempre clases semánticas
.btn.btn-primaryo.btn.btn-outline-primary. Para acciones sutiles, usar.btn-link.text-decoration-none. - Interactividad: Si una tarjeta es cliqueable, añadir
.transition-ally el efecto de elevación (definido previamente como.hover-shadow). - Iconografía: Uso exclusivo de Bootstrap Icons:
<i class="bi bi-[nombre]"></i>.
3. Arquitectura Latte & Alpine.js
- Layout: Extender siempre de
{@portal.latte}. - Limpieza de Scripts: La lógica compleja de Alpine.js debe residir en el HTML usando
x-data. Si el script es extenso, debe ir en el bloque{block scripts}. - Comunicación Global: Para feedback al usuario, llamar exclusivamente al store de Toasts:
Alpine.store('toast').show({ type: 'success', message: 'Mensaje' }).
4. Accesibilidad y Semántica
- Jerarquía: Un solo
h1por página (generalmente enheader-page.latte). Los títulos de secciones deben serh2oh3pero pueden usar clases de estilo como.h5o.h4para control visual. - Roles: Asegurar que los botones tengan
type="button"otype="submit".
5. Protocolo de Generación de Código
Antes de entregar código, realiza este checklist interno:
- ¿Bootstrap lo tiene?: ¿He usado utilidades de BS5 para todo el layout? (Margen, padding, flex, colores).
- ¿Es moderno?: ¿He aplicado
rounded-4yshadow-sm? - ¿Es reactivo?: ¿He usado Alpine.js para estados de UI en lugar de jQuery o JS plano?
- ¿Es Latte 3?: ¿He usado la sintaxis correcta de bloques y filtros?