Sistemas de diseño y Atomic Design | Nicolás Garzón
Texto
Copiar principios
↓
tokens
↓
componentes
↓
patrones
↓
experiencias realesSon piezas elementales del sistema:
Button.
Input.
Icon.
Label.
Token de color o espacio.
Estilo tipográfico.
HTML
Copiar < button class = " button" type = " button" > Guardar</ button> Un átomo sí puede tener significado y comportamiento propio. Decir que “no tiene significado por sí mismo” sería incorrecto para un botón, un enlace o un input.
Combinan piezas pequeñas para resolver una tarea concreta.
HTML
Copiar < form class = " search-form" >
< label class = " sr-only" for = " query" > Buscar</ label>
< input id = " query" name = " q" type = " search" >
< button type = " submit" > Buscar</ button>
</ form> La unidad completa tiene un contrato de contenido, estado y accesibilidad.
Agrupan varios componentes en una región más compleja:
Header.
Product gallery.
Checkout summary.
Project showcase.
Un organismo no debería conocer detalles internos de cada componente; los integra mediante APIs y slots claros.
Definen estructura y distribución de una experiencia sin depender todavía de contenido específico.
Texto
Copiar header
main layout
sidebar opcional
footerEn desarrollo real pueden corresponder a layouts, page shells o composiciones de rutas.
Son instancias con contenido, datos, estados y restricciones reales.
Una page revela problemas que una plantilla vacía no muestra:
Títulos largos.
Errores.
Datos ausentes.
Permisos.
Listas vacías.
Traducciones.
Loading.
Contenido generado por usuarios.
HTML
Copiar < header>
< nav> ...</ nav>
</ header> No significa automáticamente que nav sea una molécula y header un organismo. Las categorías dependen del sistema y la responsabilidad, no de cuántos nodos contiene el markup.
CSS
Copiar .button {
background : var ( --color-action-primary) ;
color : var ( --color-on-action) ;
border-radius : var ( --radius-control) ;
} Los tokens conectan decisiones globales con componentes. El componente transforma esos valores en una interfaz usable.
Un buen componente documenta:
Propósito.
Contenido permitido.
Variantes.
Tamaños.
Estados.
Eventos.
Accesibilidad.
Responsive behavior.
Tokens configurables.
Texto
Copiar Button
├─ variant: primary | secondary | danger
├─ size: compact | default
├─ state: loading | disabled
└─ content: label + optional iconNo añadas variantes para cada página. Una variante debe representar una necesidad reusable.
Para un input no basta mostrar el default:
Texto
Copiar empty
filled
focus
invalid
disabled
readonly
autofilled
loading
successCada estado necesita contraste, nombre, feedback y comportamiento correctos.
Una unidad reusable implementable, como Button o Dialog.
Una solución de interacción o composición, como confirmación destructiva, filtros o formulario de checkout.
Un patrón puede combinar varios componentes y reglas de producto.
Una biblioteca debe mostrar:
Ejemplo mínimo.
Variantes válidas.
Casos que no debe resolver.
Código o API.
Reglas de contenido.
Comportamiento con teclado.
Temas y responsive.
Storybook u otra herramienta facilita exploración, pero no reemplaza documentación conceptual ni pruebas.
Un componente no está completo solo por verse consistente.
Elemento nativo correcto.
Nombre accesible.
Focus visible.
Disabled coherente.
Loading anunciado cuando corresponde.
Área de activación suficiente.
Estos requisitos pertenecen al sistema, no a una corrección posterior.
Cambiar un token o componente puede afectar muchas aplicaciones.
Cambio visual compatible.
Cambio de API.
Cambio de markup.
Cambio de accesibilidad.
Eliminación o deprecación.
Publica migration notes cuando el consumidor deba actuar.
Un sistema mantenible necesita responder:
¿Quién aprueba componentes nuevos?
¿Cuándo una necesidad es variante o excepción?
¿Quién revisa accesibilidad?
¿Cómo se reportan gaps?
¿Cómo se eliminan tokens obsoletos?
¿Qué productos utilizan cada versión?
Sin gobernanza, la biblioteca puede acumular duplicados aunque el diseño inicial sea bueno.
Discutir niveles de composición.
Evitar diseñar pages enteras como piezas indivisibles.
Identificar oportunidades de reutilización.
Probar componentes en contexto.
No resuelve automáticamente:
Naming CSS.
State management.
Boundaries de dominio.
Accesibilidad.
Tokens.
Versionado.
Ownership.
HTML
Copiar < article class = " project-card" >
< img
class = " project-card__image"
src = " domisys.webp"
alt = " Dashboard principal de DomiSys"
>
< div class = " project-card__content" >
< h2 class = " project-card__title" > DomiSys</ h2>
< p> Sistema de gestión para negocios.</ p>
< a class = " button" href = " /portfolio/domisys" >
Ver proyecto
</ a>
</ div>
</ article> La card combina medios, contenido y un control reusable. Su categoría importa menos que un contrato claro.
Tratar Atomic Design como estructura obligatoria de carpetas.
Decir que los átomos carecen de significado.
Clasificar por cantidad de nodos.
Crear componentes para cada fragmento visual.
Añadir variantes específicas por página.
Documentar solo el estado ideal.
Separar accesibilidad del sistema.
Cambiar tokens globales sin analizar impacto.
Tener biblioteca sin gobernanza.
Un sistema conecta principios, tokens, componentes y experiencias.
Atomic Design es un modelo de composición, no arquitectura completa.
Los átomos pueden tener semántica propia.
Las pages reales validan el sistema.
Estados y contenido forman parte del contrato.
Accesibilidad debe estar integrada.
Versionado y gobernanza permiten escalar.
La clasificación nunca sustituye una API clara.
¿Por qué un botón puede considerarse átomo y aun tener significado propio?
Respuesta Porque “átomo” describe su nivel de composición dentro del sistema; el elemento button conserva semántica, foco, teclado y comportamiento propio.
Utility-first, Tailwind y estrategias de styling compara distintas formas de producir CSS sin confundir herramienta y lenguaje.