Communitygithub.com

Sistema de Calendário e Seleção de Datas

Projete uma estrutura sistemática para seleção de datas e horários, gerenciando grades de calendário, seletores de intervalo e interfaces de agendamento para garantir precisão e acessibilidade.

O que é Sistema de Calendário e Seleção de Datas?

Este skill fornece uma metodologia abrangente para projetar interfaces de seleção de datas, desde a escolha de uma única data até intervalos complexos e agendamento de horários. Ele aborda os desafios comuns de alta fricção ao lidar com modelos mentais como 'próxima terça-feira' ou 'último fim de semana do mês', garantindo que os seletores de data sejam visualmente claros, navegáveis por teclado e toque, e forneçam feedback imediato sobre validade e disponibilidade. O skill é útil para desenvolvedores e designers que trabalham em sistemas de reservas, agendamento, analytics ou qualquer aplicação que exija entrada de datas. Ele suporta padrões de entrada como digitação direta, acionamento por popover e calendário inline, e inclui diretrizes para acessibilidade (WCAG AA), responsividade, localização (formatos de data e primeiro dia da semana) e lógica de seleção de intervalos com estados visuais claros para início, fim e intervalo.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Sistema de Calendário e Seleção de Datas faz?

Propósito

O Sistema de Calendário e Seleção de Datas fornece uma metodologia para projetar interfaces que permitem aos usuários selecionar datas únicas, intervalos de datas ou horários específicos. Selecionar datas é uma tarefa de alta fricção que envolve modelos mentais complexos (por exemplo, "próxima terça-feira", "último fim de semana do mês"). Este sistema garante que os seletores de data sejam visualmente claros, fáceis de navegar via teclado e toque, e forneçam feedback imediato sobre validade e disponibilidade.

Casos de Uso

  • Reservas & Agendamentos: Seleção de datas de check-in/check-out para hotéis ou voos.
  • Agendamento: Escolha de um horário para reuniões, consultas ou entregas.
  • Analytics & Relatórios: Definição de um intervalo de datas personalizado (Data Inicial a Data Final) para filtragem de dados.
  • Entrada de Data de Nascimento: Captura da data de nascimento para verificação de idade ou configuração de perfil.
  • Planejamento de Eventos: Gerenciamento de prazos ou marcos em uma ferramenta de gerenciamento de projetos.

Quando NÃO Usar

  • Datas Simples: Se você precisa apenas de uma data única e conhecida (como "Hoje" ou "Ontem"), use um botão ou link simples.
  • Datas Memoráveis: Para datas que os usuários sabem de cor (como aniversários ou validade de cartão de crédito), use campos de texto padrão com type="number" ou type="tel" em vez de uma grade de calendário, pois digitá-las é mais rápido do que navegar em uma grade.
  • Tempo Relativo: Se o usuário precisa apenas selecionar "Últimos 7 dias" ou "Este mês", use um menu suspenso ou grupo de botões em vez de um calendário completo.

Entradas

  1. Modo de Seleção: Data Única, Intervalo de Datas ou Horário.
  2. Restrições: Datas Mínimas/Máximas, datas desabilitadas (ex.: datas passadas, slots totalmente reservados).
  3. Contexto: É um elemento de página independente ou um acionador de popover/modal?
  4. Localização: Formatos de data regionais (MM/DD/AAAA vs DD/MM/AAAA) e primeiro dia da semana (Domingo vs Segunda-feira).

Saídas

  1. Especificação da Anatomia da Grade: Definição visual do cabeçalho do mês, rótulos dos dias da semana e células de dia.
  2. Matriz de Estados: Tratamentos visuais para Hoje, Selecionado, Início do Intervalo, Fim do Intervalo, Dentro do Intervalo, Hover e Desabilitado.
  3. Especificação da Conexão de Entrada: Como o calendário se relaciona com o campo de entrada de texto (ícone de acionamento, formatação e suporte a entrada manual).
  4. Plano de Acessibilidade: Atalhos de teclado (Setas, Enter, Escape) e regiões ARIA live para atualizações de status.

Fluxo de Trabalho

1. Selecionar o Padrão de Entrada

Escolha como o usuário insere a data:

  • Entrada Direta: Campo de texto mascarado. Melhor para entrada rápida de datas conhecidas.
  • Acionador de Seletor: Um campo de entrada com um ícone de calendário que abre uma sobreposição. Padrão para a maioria dos casos de uso.
  • Embutido/Persistente: O calendário está sempre visível na página. Melhor para tarefas com muitos agendamentos.

2. Projetar a Grade do Calendário

Estabeleça um ritmo espacial consistente para a visualização do mês:

  • Cabeçalho: Mês e Ano com botões de navegação "Anterior" e "Próximo".
  • Linha dos Dias da Semana: Rótulos de uma letra ou abreviados (D, S, T...) para orientação rápida.
  • Grade de 7 Colunas: Garanta que cada célula de dia tenha espaço suficiente para a data e possíveis indicadores de status (ex.: um ponto para um evento).

3. Definir a Lógica de Intervalo (Se Aplicável)

Ao selecionar um intervalo, a interface deve monitorar três estados:

  • Início da Seleção: A primeira data clicada.
  • O "Intervalo": A conexão visual entre o início e a posição atual do cursor.
  • Fim da Seleção: A segunda data clicada, finalizando o intervalo.
  • Feedback Visual: Use um preenchimento de fundo sutil para as datas "Dentro do Intervalo", com formas distintas ou maior contraste para os limites "Início" e "Fim".

4. Projetar para Acessibilidade

  • Navegação por Teclado: Os usuários devem poder navegar entre os dias usando as teclas de seta, alternar meses com PageUp/PageDown e selecionar com Enter.
  • Gerenciamento de Foco: Quando o seletor abrir, o foco deve ir para a data atualmente selecionada ou para "Hoje".
  • Funções ARIA: Use role="grid" para o calendário, role="columnheader" para os dias da semana e role="gridcell" para os dias. Use aria-selected="true" para a seleção ativa.

5. Planejar Adaptações Responsivas

  • Visualização em Dispositivos Móveis: Em telas pequenas, a visualização de um único mês geralmente é a melhor. Para seleção de intervalo, considere empilhar dois meses verticalmente ou usar uma sobreposição em tela cheia.
  • Alvos de Toque: Garanta que cada célula de dia tenha pelo menos 44x44px ou forneça espaçamento adequado para evitar cliques acidentais.

Regras de Decisão

  • Regra do "Digite Primeiro": Sempre permita que os usuários digitem a data manualmente no campo de entrada. Não os force a usar o calendário.
  • Limites de Mês: Se estiver selecionando uma data muito no passado ou futuro (por exemplo, 5+ anos), forneça um seletor de Ano/Mês suspenso em vez de forçar o usuário a clicar em "Próximo" dezenas de vezes.
  • Feedback Imediato: Se um usuário selecionar uma data inválida (por exemplo, um domingo para uma entrega apenas em dias úteis), mostre uma mensagem de erro contextual imediatamente, em vez de esperar pelo envio do formulário.
  • Início da Semana: Padrão para a localidade do usuário (geralmente domingo nos EUA, segunda-feira no Reino Unido/UE).

Restrições

  • Acessibilidade: Deve atender ao contraste WCAG AA (4.5:1) para todos os estados de data. As datas selecionadas devem ser distinguíveis por mais do que apenas cor (por exemplo, um fundo sólido vs. sem fundo).
  • Responsividade: Os calendários nunca devem ultrapassar a viewport. Os seletores de popover devem usar lógica de "flip" para permanecer visíveis se não houver espaço abaixo do campo de entrada.
  • Localização: Suportar diferentes formatos de data e traduções para nomes de meses e dias da semana.

Padrões Comuns de Falha

  • O "Clicador Infinito": Fazer os usuários clicarem em 12 meses para encontrar uma data, em vez de fornecer um seletor de ano.
  • Entrada Oculta: Impedir que os usuários digitem a data, o que frustra usuários avançados e usuários com deficiências motoras.
  • Alvos Minúsculos: Projetar uma grade com células de 20px que é impossível de usar em um dispositivo móvel.
  • Falta de Contexto de "Hoje": Deixar de destacar a data atual, dificultando a orientação dos usuários.
  • Intervalos Confusos: Não distinguir claramente entre o "Início" e "Fim" de um intervalo, ou não mostrar o intervalo "Dentro do Intervalo".

Critérios de Validação

  • Os usuários podem navegar pelo calendário e selecionar uma data usando apenas o teclado.
  • A entrada manual de texto é suportada e validada no campo de entrada.
  • A data de hoje é visualmente distinta, mas não compete com a seleção.
  • As seleções de intervalo têm um tratamento visual claro de "Início", "Fim" e "Intervalo".
  • Os alvos de toque para as células de dia atendem à recomendação de 44x44px (ou mínimo de 24x24px com espaçamento).
  • As taxas de contraste para todos os estados (Hover, Selecionado, Desabilitado) atendem ao WCAG AA.
  • O calendário adapta seu layout (ou muda para tela cheia) em dispositivos móveis.

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.

Habilidades Relacionadas