Communitygithub.com

Sistema de Calendario y Selección de Fechas

Diseñe un marco sistemático para la selección de fechas y horas, gestionando cuadrículas de calendario, selectores de rango e interfaces de programación para garantizar precisión y accesibilidad.

¿Qué es Sistema de Calendario y Selección de Fechas?

Esta habilidad proporciona un marco sistemático para diseñar interfaces de selección de fechas y horas, abordando la alta fricción que supone para los usuarios elegir una fecha única, un rango o una franja horaria. Es útil porque estandariza la anatomía visual del calendario, la lógica de rango, la navegación por teclado y la accesibilidad, evitando patrones de fallo comunes como los 'clic infinitos' o las celdas minúsculas. Funciona definiendo modos de selección (única, rango, franja horaria), restricciones (fechas mínimas/máximas, inhabilitadas) y contexto de uso (elemento independiente, popover o modal). La habilidad se aplica a cualquier plataforma que implemente interfaces de calendario (web, móvil, escritorio) y su documentación incluye flujos de trabajo detallados, reglas de decisión, restricciones y criterios de validación para cumplir con WCAG AA y adaptarse a diferentes localizaciones.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/coastdigitalgroup/coastai-skills/tree/HEAD/website-design/calendar-and-date-system

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Sistema de Calendario y Selección de Fechas?

Propósito

El Sistema de Calendario y Selección de Fechas proporciona una metodología para diseñar interfaces que permitan a los usuarios seleccionar fechas únicas, rangos de fechas o franjas horarias específicas. Seleccionar fechas es una tarea de alta fricción que implica modelos mentales complejos (por ejemplo, "el próximo martes", "el último fin de semana del mes"). Este sistema garantiza que los selectores de fecha sean visualmente claros, fáciles de navegar mediante teclado y táctil, y que proporcionen retroalimentación inmediata sobre la validez y disponibilidad.

Casos de Uso

  • Reservas y Booking: Selección de fechas de entrada/salida para hoteles o vuelos.
  • Programación: Elección de una franja horaria para una reunión, cita o entrega.
  • Analítica e Informes: Definición de un rango de fechas personalizado (Fecha de inicio a Fecha de fin) para filtrado de datos.
  • Ingreso de Fecha de Nacimiento: Captura de la fecha de nacimiento para verificación de edad o configuración de perfil.
  • Planificación de Eventos: Gestión de plazos o hitos en una herramienta de gestión de proyectos.

Cuándo NO Usarlo

  • Fechas Sencillas: Si solo necesita una fecha única y conocida (como "Hoy" o "Ayer"), use un botón o enlace simple.
  • Fechas Memorables: Para fechas que los usuarios saben de memoria (como cumpleaños o vencimiento de tarjetas de crédito), use entradas de texto estándar con type="number" o type="tel" en lugar de una cuadrícula de calendario, ya que son más rápidas de escribir que de navegar en una cuadrícula.
  • Tiempo Relativo: Si el usuario solo necesita seleccionar "Últimos 7 días" o "Este mes", use un menú desplegable o un grupo de botones en lugar de un calendario completo.

Entradas

  1. Modo de Selección: Fecha única, Rango de fechas o Franja horaria.
  2. Restricciones: Fechas mínimas/máximas, fechas inhabilitadas (por ejemplo, fechas pasadas, slots completamente reservados).
  3. Contexto: ¿Es un elemento de página independiente o un disparador de popover/modal?
  4. Localización: Formatos de fecha regionales (MM/DD/AAAA vs DD/MM/AAAA) y primer día de la semana (domingo vs lunes).

Salidas

  1. Especificación de Anatomía de Cuadrícula: Definición visual del encabezado del mes, etiquetas de días de la semana y celdas de día.
  2. Matriz de Estados: Tratamientos visuales para Hoy, Seleccionado, Inicio-de-Rango, Fin-de-Rango, En-Rango, Hover e Inhabilitado.
  3. Especificación de Conexión de Entrada: Cómo se relaciona el calendario con el campo de entrada de texto (icono de activación, formato y soporte de entrada manual).
  4. Plan de Accesibilidad: Atajos de teclado (Flechas, Intro, Escape) y regiones ARIA en vivo para actualizaciones de estado.

Flujo de Trabajo

1. Seleccionar el Patrón de Entrada

Elija cómo el usuario introduce la fecha:

  • Entrada Directa: Entrada de texto con máscara. Mejor para entrada rápida de fechas conocidas.
  • Disparador Selector: Una entrada con un icono de calendario que abre una superposición. Estándar para la mayoría de los casos de uso.
  • En Línea/Persistente: El calendario siempre está visible en la página. Mejor para tareas con mucha programación.

2. Diseñar la Cuadrícula del Calendario

Establezca un ritmo espacial consistente para la vista mensual:

  • Encabezado: Mes y Año con botones de navegación "Anterior" y "Siguiente".
  • Fila de Días de la Semana: Etiquetas de una letra o cortas (D, L, M...) para orientación rápida.
  • Cuadrícula de 7 Columnas: Asegúrese de que cada celda de día tenga suficiente espacio para la fecha y posibles indicadores de estado (por ejemplo, un punto para un evento).

3. Definir la Lógica de Rango (Si Aplica)

Al seleccionar un rango, la interfaz debe rastrear tres estados:

  • Selección de Inicio: La primera fecha en la que se hace clic.
  • El "Tramo": La conexión visual entre el inicio y la posición actual del hover.
  • Selección de Fin: La segunda fecha en la que se hace clic, finalizando el rango.
  • Retroalimentación Visual: Use un relleno de fondo sutil para las fechas "En Rango", con formas distintas o mayor contraste para los extremos de "Inicio" y "Fin".

4. Diseñar para Accesibilidad

  • Navegación por Teclado: Los usuarios deben poder moverse entre los días usando las teclas de Flecha, cambiar de mes con RePág/AvPág y seleccionar con Intro.
  • Gestión de Foco: Cuando se abre el selector, el foco debe moverse a la fecha seleccionada actualmente o a "Hoy".
  • Roles ARIA: Use role="grid" para el calendario, role="columnheader" para los días de la semana y role="gridcell" para los días. Use aria-selected="true" para la selección activa.

5. Planificar Adaptaciones Responsivas

  • Vista Móvil: En pantallas pequeñas, una vista de un solo mes suele ser la mejor. Para selección de rangos, considere apilar dos meses verticalmente o usar una superposición de pantalla completa.
  • Objetivos Táctiles: Asegúrese de que cada celda de día tenga al menos 44x44px o proporcione un relleno adecuado para evitar clics accidentales.

Reglas de Decisión

  • La Regla "Escribir Primero": Permita siempre que los usuarios escriban la fecha manualmente en el campo de entrada. No los obligue a usar el calendario.
  • Límites de Mes: Si se selecciona una fecha muy pasada o futura (por ejemplo, más de 5 años), proporcione un selector desplegable de Año/Mes en lugar de obligar al usuario a hacer clic en "Siguiente" docenas de veces.
  • Retroalimentación Inmediata: Si un usuario selecciona una fecha no válida (por ejemplo, un domingo para una entrega solo entre semana), muestre un mensaje de error contextual inmediatamente, en lugar de esperar al envío del formulario.
  • Inicio de Semana: Predetermine según la configuración regional del usuario (normalmente domingo en EE. UU., lunes en Reino Unido/UE).

Restricciones

  • Accesibilidad: Debe cumplir con el contraste AA de WCAG (4.5:1) para todos los estados de fecha. Las fechas seleccionadas deben distinguirse por algo más que el color (por ejemplo, un fondo sólido vs. sin fondo).
  • Responsividad: Los calendarios nunca deben desbordar el viewport. Los selectores emergentes deben usar lógica de "giro" para permanecer visibles si no hay espacio debajo de la entrada.
  • Localización: Soporte de diferentes formatos de fecha y traducciones para nombres de meses y días.

Patrones de Falla Comunes

  • El "Clic Infinito": Obligar a los usuarios a hacer clic a través de 12 meses para encontrar una fecha en lugar de proporcionar un selector de año.
  • Entrada Oculta: Impedir que los usuarios escriban la fecha, lo que frustra a los usuarios avanzados y a aquellos con discapacidades motoras.
  • Objetivos Pequeños: Diseñar una cuadrícula con celdas de 20px que es imposible de usar en un dispositivo móvil.
  • Falta de Contexto "Hoy": No resaltar la fecha actual, lo que dificulta que los usuarios se orienten.
  • Rangos Confusos: No distinguir claramente entre el "Inicio" y el "Fin" de un rango, o no mostrar el tramo "En Rango".

Criterios de Validación

  • Los usuarios pueden navegar por el calendario y seleccionar una fecha usando solo el teclado.
  • La entrada de texto manual es compatible y se valida en el campo de entrada.
  • La fecha de hoy es visualmente distinta pero no compite con la selección.
  • Las selecciones de rango tienen un tratamiento visual claro de "Inicio", "Fin" y "Tramo".
  • Los objetivos táctiles para las celdas de día cumplen con la recomendación de 44x44px (o mínimo 24x24px con espaciado).
  • Las relaciones de contraste para todos los estados (Hover, Seleccionado, Inhabilitado) cumplen con WCAG AA.
  • El calendario adapta su diseño (o se mueve a pantalla completa) en dispositivos móviles.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for progressive disclosure using accordions, ensuring structural integrity, visual affordances, and accessibility across different content densities and devices.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for long-form content, managing readability, vertical rhythm, and information density to ensure a superior reading experience.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for informational elements that communicate state (Badges) and categorization (Tags) with clarity and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for non-overlay notifications, managing global announcements and contextual inline alerts to communicate system states without interrupting the user's flow.

coastdigitalgroup/coastai-skills

Design and implement a systematic, asymmetrical bento-grid layout framework to organize diverse content types cohesively while maintaining strict visual hierarchy, logical focus order, and responsive flexibility.

coastdigitalgroup/coastai-skills

Design a responsive, mobile-first bottom navigation bar and persistent action dock system for mobile websites and web applications, establishing spatial anchors, tab bar anatomy, badge indicators, thumb-zone ergonomics, safe area inset handling, active/inactive state contrast, and desktop responsive adaptation rules.

coastdigitalgroup/coastai-skills

Design a mobile-first bottom sheet overlay system with configurable detents, drag affordances, safe area padding, responsive desktop modal/popover adaptation, and WCAG AA accessibility compliance.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for secondary navigation trails that provide orientation, context, and one-click access to parent levels in deep information architectures.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for buttons and interactive triggers, managing visual hierarchy, variant logic, and action grouping to ensure clear intent and accessible interaction.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for modular content containers that maintain hierarchy, structural integrity, and action alignment across variable content and responsive viewports.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for horizontal discovery components, managing navigation affordances, scroll behavior, and accessibility to ensure effective content density without compromising usability.

coastdigitalgroup/coastai-skills

Design a systematic, highly accessible, and developer-friendly UI layout framework for code blocks, snippet showcases, multi-file code tabs, line-highlighting, diff views, and syntax token contrast in technical documentation and developer platforms.

coastdigitalgroup/coastai-skills

Design a systematic framework for global command menus (Cmd+K panels) that combines keyboard-driven navigation, command execution, and shortcut discovery into an accessible, responsive overlay.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for threaded conversations, managing nesting depths, action hierarchies, and community signaling to foster engagement and readability.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for side-by-side comparison interfaces, managing high attribute density and responsive complexity to support informed decision-making.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for user privacy, managing consent banners, preference centers, and persistent privacy controls to balance legal compliance with user trust.

coastdigitalgroup/coastai-skills

Design and implement a systematic, highly accessible, and responsive visual layout framework for conversational chat widgets, live chat boxes, and chatbot panels that ensures clear message scannability, native focus flow, and seamless mobile keyboard adaptation.

coastdigitalgroup/coastai-skills

Design a systematic, accessible, and high-conversion framework for custom select dropdowns and comboboxes, defining anatomy, states, search-filtering, and responsive mobile-adaptive patterns.

coastdigitalgroup/coastai-skills

Design and specify a systematic dark theme framework, establishing rules for elevation-based surface colors, desaturated brand accents, text legibility, and media adaptation to ensure an accessible, low-fatigue experience.

coastdigitalgroup/coastai-skills

Design and implement a systematic color palette that ensures WCAG 2.2 accessibility compliance. Trigger this skill when asked to define brand colors, create UI themes, or establish a visual system for a website.

Skills relacionados