Frontend Design Styles
Lleva fielmente los cuatro sistemas de diseño principales al código frontend. El núcleo no es "parecerse", sino reproducir de manera consistente en tres capas: tokens semánticos + morfología de componentes + curvas de animación, para que el resultado sea reconocible por los usuarios de esa plataforma como "esto es iOS / esto es Material / esto es Windows".
Cuándo usarlo / No usarlo
Usarlo: Generar o modificar interfaces con un estilo de diseño específico; comparar y contrastar entre los cuatro estilos; producir tokens de diseño y archivos de tema; realizar revisiones visuales según un lenguaje de diseño.
No usarlo: El usuario no tiene preferencia de estilo, solo quiere una "página bonita" rápidamente → preguntar primero si quiere un estilo específico, o seguir la lógica de recomendación en references/style-router.md; tareas puramente de backend/algoritmos no están relacionadas con esta habilidad.
Referencia rápida de las cuatro huellas de estilo
Estas son las características de mayor reconocibilidad. Antes de cualquier implementación, consulta esta tabla; para detalles, revisa la referencia correspondiente.
| | MIUIX / HyperOS | Apple HIG | Material Design 3 | Fluent 2 |
|---|---|---|---|
| Color principal | #3482FF (claro) / #277AF7 (oscuro) | #007AFF / #0A84FF | Por roles, línea base #6750A4 | #0F6CBD |
| Tipografía | MiSans | SF Pro (<20pt Text, ≥20pt Display) | Roboto / Roboto Flex | Segoe UI Variable |
| Tamaño base del texto | 16–17px | 17pt | 16sp (body-large) | 14px (body-1) |
| Lenguaje de bordes redondeados | Radio uniforme de 16dp + squircle (mismo origen que iOS, botones no son cápsula) | Radio de curvatura continua (squircle), contenedores 10–20pt | 12dp tarjetas / 28dp FAB y ventanas emergentes / botones completamente redondos | Bordes pequeños, controles 4px, ventanas emergentes 8px, anidados −2px |
| Técnica de jerarquía | Capas por tono de color (#FFFFFF / #F7F7F7 / #E8E8E8), casi sin sombras pesadas | Desenfoque de material (translucency) + listas agrupadas + contenido sobre UI | Superposición tonal (tonal overlay) primero, sombras después | Material (Mica / Acrylic) + sombras múltiples de bajo perfil |
| Animación | Ligera, con rebote elástico, 200–300ms | Física de resorte, 200–300ms, sin linear | Curva de énfasis cubic-bezier(0.2,0,0,1), clasificada por duración de token | Rápida y contenida, 150–250ms, easyEase |
| Objetivo táctil/de clic | ≥ 48dp | ≥ 44×44pt | ≥ 48dp | Altura del control 32px (modo compacto/confort) |
| Esencia en una frase | Redondeado, transparente, sentido tecnológico azul | Contención, espacio en blanco, contenido primero | Fuerte expresividad cromática, jerarquía mediante tonos | Productividad, claridad, nativo de escritorio |
Flujo de trabajo
Paso 1 · Definir el estilo. El usuario ya lo especificó → úsalo. No especificado → lee references/style-router.md, según la forma del producto/plataforma/densidad da 1 recomendación + 1 alternativa, y pide confirmación al usuario.
Paso 2 · Leer los tokens. Abre el documento de referencia correspondiente, lee todos los colores, escalas tipográficas, espacios, bordes redondeados, sombras y animaciones antes de empezar a escribir, no confíes en la memoria:
- MIUIX / HyperOS →
references/miuix-hyperos.md - Apple HIG →
references/apple-hig.md - Material Design 3 →
references/material-design-3.md - Fluent 2 →
references/fluent-2.md
Paso 3 · Aplicar los tokens. Copia directamente assets/tokens/<style>.css como capa de tokens semánticos (ya incluye tema claro/oscuro), no escribas valores hex en los estilos de los componentes. El modo oscuro se cambia mediante [data-theme="dark"] o prefers-color-scheme.
Paso 4 · Construir componentes. Implementa según las especificaciones de componentes de ese estilo en references/components-playbook.md (variantes de botones, campos de entrada, tarjetas, navegación, ventanas emergentes, interruptores, listas). Cada estado interactivo (hover / focus / pressed / selected / disabled) debe estar presente, no solo el estado por defecto.
Paso 5 · Añadir animación + autoverificación. Completa las transiciones según references/motion-and-accessibility.md, luego ejecuta python3 scripts/lint_tokens.py <archivo_generado> --style <estilo>, y luego pasa la lista de verificación punto por punto (ver más abajo).
Reglas de hierro
- No mezclar estilos. Si eliges Fluent, no uses
#007AFFde iOS, ni el FAB tipo píldora de Material, ni las tarjetas de gran radio de HyperOS. La mezcla es el modo de fallo más común. - Los tokens primero. En el CSS de los componentes solo deben aparecer
var(--xxx), no valores literales de color, tamaño de fuente o radio de borde. - Hacer ambos temas, claro y oscuro. Los cuatro sistemas tienen valores oficiales para el modo oscuro; consulta la tabla directamente, no uses
filter: invertni ajustes manuales cutres. - Las convenciones de la plataforma no se modifican. Por ejemplo, el área mínima de clic en iOS es 44pt, la opacidad de la capa de estado de Material, el borde inferior de 1px en controles de Fluent, el fondo oscuro
#242424de HyperOS (no negro puro). - Accesibilidad es un requisito estricto. Contraste de texto principal ≥ 4.5:1, elementos UI ≥ 3:1, el anillo de foco debe ser visible, respeta
prefers-reduced-motion. - La tipografía china debe tratarse por separado. Roboto / Segoe UI / SF Pro no tienen glifos completos para chino; las interfaces en chino deben usar fuentes de respaldo como PingFang / Source Han Sans / MiSans, y reducir el letter-spacing (el kerning latino no aplica al chino).
Especificaciones de entrega
- Por defecto se genera HTML ejecutable en un solo archivo (
<style>+<script>en línea), los tokens se organizan como variables CSS en:root, para que el usuario pueda previsualizar y copiar fácilmente. - Cuando el usuario especifica un framework, se cambia; las reglas de mapeo están en
references/framework-mappings.md: Tailwind usaassets/mappings/tailwind.css; React/Vue usa objetos de token + variables CSS; Compose prioriza las bibliotecas oficiales (MIUIX usaMiuixTheme, M3 usaMaterialTheme). - La página de demostración de componentes puede referenciarse en
assets/templates/showcase.html(misma combinación de componentes presentada en los cuatro estilos, con tema y modo claro/oscuro intercambiables). - Después de la generación, ejecuta obligatoriamente la validación:
python3 scripts/lint_tokens.py <archivo_generado> --style <estilo>, tres comprobaciones (valores de color hardcodeados / contraste / tokens esenciales) deben pasar; si no, corrige y luego entrega. - Al entregar, explica: qué sistema se usó, qué desviaciones intencionadas hay, cómo se cambia el modo oscuro, y cuál es la pila de fuentes de respaldo.
Lista de verificación
Después de terminar, revisa punto por punto; si no pasa, corrige:
- Todos los colores provienen de tokens, sin hex hardcodeado
- La jerarquía tipográfica no supera 4 niveles, el tamaño base del texto cumple con el sistema
- El sistema de bordes redondeados es coherente (incluye radio anidado = radio exterior − padding)
- El uso de sombras/materiales sigue el sistema (Material usa superposición tonal, Fluent usa Mica/Acrylic, iOS usa desenfoque de material, HyperOS usa capas de tono)
- Todos los estados interactivos están presentes: hover / focus-visible / active / disabled / selected
- Ambos temas, claro y oscuro, han sido verificados
- El tamaño del objetivo de clic cumple con los estándares
- El contraste es adecuado, el anillo de foco es visible
- Con
prefers-reduced-motion, las animaciones se degradan - La fuente de respaldo para chino es correcta, el kerning se ha ajustado
- No hay contaminación de otros sistemas
Archivos de referencia
| Archivo | Contenido |
|---|---|
references/style-router.md | Árbol de decisión para selección de estilo, matriz de comparación, zonas prohibidas de mezcla |
references/miuix-hyperos.md | Tabla completa de tokens MIUIX + características visuales de HyperOS + especificaciones de componentes |
references/apple-hig.md | Tabla completa de colores del sistema + 12 niveles de Dynamic Type + materiales + especificaciones de componentes |
references/material-design-3.md | Tabla completa de 29 roles de color (claro/oscuro) + 15 niveles de escala tipográfica + forma/altura/capa de estado |
references/fluent-2.md | Escala de colores neutros/colores de marca + Type Ramp + tamaños de control + Mica/Acrylic + tokens de sombra |
references/components-playbook.md | Especificaciones de implementación por estilo para botones/inputs/tarjetas/navegación/ventanas emergentes/interruptores/listas |
references/motion-and-accessibility.md | Curvas de animación y duración de los cuatro sistemas, requisitos estrictos de accesibilidad, lista de revisión |
references/framework-mappings.md | Reglas de mapeo de tokens para Tailwind / React / Vue / Compose / SwiftUI |
scripts/lint_tokens.py | Validación ejecutable: valores de color hardcodeados, contraste, integridad de tokens esenciales |
assets/mappings/tailwind.css | Mapeo de tokens @theme de Tailwind v4, los cuatro sistemas pueden coexistir en la misma página |