Introducción

¿Alguna vez has desarrollado un componente Angular increíble, solo para descubrir que se rompe cuando lo integras con otros componentes? ¿O has tenido que explicar a tu equipo de diseño cómo se vería tu componente en diferentes estados? Storybook llega al rescate como ese amigo organizado que siempre tiene todo bajo control.

Imagina tener un catálogo vivo de todos tus componentes, donde puedes probarlos, documentarlos y mostrarlos a stakeholders sin necesidad de ejecutar toda tu aplicación. Eso es exactamente lo que ofrece Storybook: un entorno de desarrollo aislado para componentes UI que te hará preguntarte cómo viviste sin él.

En este artículo te guiaré a través de qué es Storybook, cómo funciona, por qué deberías usarlo y cómo integrarlo con Angular para que tus componentes brillen como nunca.

¿Qué es Storybook?

El sandbox de tus componentes

Storybook es una herramienta open source que funciona como un entorno de desarrollo independiente para componentes de interfaz de usuario. No es parte de tu aplicación principal, sino un espacio separado donde puedes desarrollar, probar y documentar tus componentes de forma aislada.

Características principales

  • Desarrollo aislado de componentes
  • Documentación interactiva
  • Testing visual
  • Addons extensibles
  • Compatibilidad con múltiples frameworks

Cómo funciona Storybook

El concepto de «stories»

Storybook organiza tus componentes a través de «stories» (historias). Cada story representa un estado específico de tu componente. Por ejemplo, un botón podría tener stories para: estado normal, hover, deshabilitado, loading, etc.

Arquitectura básica

Storybook se ejecuta en un puerto separado (normalmente el 6006) y se comunica con tu proyecto a través de archivos de configuración y stories. No interfiere con tu build de producción.

Para qué sirve Storybook

Ventajas para equipos frontend

  • Desarrollo más rápido: No necesitas ejecutar toda la app para probar un componente
  • Mejor colaboración: Diseñadores y PMs pueden ver componentes en tiempo real
  • Documentación viva: Tus stories sirven como documentación siempre actualizada
  • Testing visual: Detecta cambios visuales no deseados automáticamente
  • Reutilización: Descubre componentes existentes que puedes reutilizar

Casos de uso comunes

  • Desarrollo de sistemas de diseño
  • Documentación de componentes para nuevos desarrolladores
  • Testing de componentes en diferentes estados y tamaños de pantalla
  • Revisión de UI con stakeholders no técnicos
  • Regresión visual automatizada

Integración con Angular

Instalación básica

Para integrar Storybook con un proyecto Angular existente, ejecuta:

npx storybook@latest init

Este comando detectará automáticamente que estás usando Angular y configurará todo lo necesario.

Estructura de archivos

Storybook creará una carpeta .storybook en la raíz de tu proyecto con los archivos de configuración. Tus stories irán normalmente junto a tus componentes o en una carpeta stories.

Ejemplo práctico: Componente Angular en Storybook

Aquí tienes un ejemplo de cómo se vería un componente de botón Angular integrado con Storybook:

// button.component.ts
import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-button',
  template: `
    
  `,
  styles: [
    `.btn { 
      padding: 8px 16px; 
      border: none; 
      border-radius: 4px; 
      cursor: pointer; 
    }
    .btn-primary { background: #007bff; color: white; }
    .btn-secondary { background: #6c757d; color: white; }
    .btn:disabled { opacity: 0.6; cursor: not-allowed; }`
  ]
})
export class ButtonComponent {
  @Input() label = 'Button';
  @Input() variant: 'primary' | 'secondary' = 'primary';
  @Input() disabled = false;
  @Output() onClick = new EventEmitter();
}

// button.stories.ts
import { Meta, Story } from '@storybook/angular';
import { ButtonComponent } from './button.component';

export default {
  title: 'Components/Button',
  component: ButtonComponent,
} as Meta;

export const Primary: Story = () => ({
  props: {
    label: 'Primary Button',
    variant: 'primary'
  },
});

export const Secondary: Story = () => ({
  props: {
    label: 'Secondary Button',
    variant: 'secondary'
  },
});

export const Disabled: Story = () => ({
  props: {
    label: 'Disabled Button',
    disabled: true
  },
});

Comandos útiles

# Ejecutar Storybook en modo desarrollo
npm run storybook

# Build de Storybook para producción
npm run build-storybook

# Ejecutar tests de Storybook
npm run test-storybook

Conclusión

Storybook no es solo una herramienta más en tu stack de desarrollo frontend; es un cambio de mentalidad hacia el desarrollo de componentes centrado en la calidad, reutilización y colaboración. Con Angular, se integra tan suavemente que sentirás que siempre estuvo destinado a estar ahí.

¿La mejor parte? Una vez que empieces a usar Storybook, descubrirás que no solo estás construyendo componentes, estás construyendo un sistema de diseño robusto, documentado y fácil de mantener. Tu yo del futuro (y tu equipo) te lo agradecerán.

Así que ¿qué esperas? Ejecuta npx storybook@latest init y descubre cómo Storybook puede transformar tu flujo de trabajo frontend. ¡Tu catálogo de componentes te está esperando!

Categorías: Sin categoría

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *