feat: enhance chat components with improved accessibility features, including ARIA attributes for search and user status, and implement message length validation and file type checks in message input handling

This commit is contained in:
2025-12-08 23:16:05 -03:00
parent e46738c5bf
commit 1810cbabe2
22 changed files with 1364 additions and 249 deletions

View File

@@ -188,7 +188,10 @@
placeholder="Buscar usuários (nome, email, matrícula)..."
class="input input-bordered w-full pl-10"
bind:value={searchQuery}
aria-label="Buscar usuários ou conversas"
aria-describedby="search-help"
/>
<span id="search-help" class="sr-only">Digite para buscar usuários por nome, email ou matrícula</span>
<Search
class="text-base-content/50 absolute top-1/2 left-3 h-5 w-5 -translate-y-1/2"
strokeWidth={1.5}
@@ -244,6 +247,8 @@
: 'cursor-pointer'}"
onclick={() => handleClickUsuario(usuario)}
disabled={processando}
aria-label="Abrir conversa com {usuario.nome}"
aria-describedby="usuario-status-{usuario._id}"
>
<!-- Ícone de mensagem -->
<div
@@ -260,6 +265,7 @@
fotoPerfilUrl={usuario.fotoPerfilUrl}
nome={usuario.nome}
size="md"
userId={usuario._id}
/>
<!-- Status badge -->
<div class="absolute right-0 bottom-0">
@@ -290,6 +296,9 @@
{usuario.statusMensagem || usuario.email}
</p>
</div>
<span id="usuario-status-{usuario._id}" class="sr-only">
Status: {getStatusLabel(usuario.statusPresenca)}
</span>
</div>
</button>
{/each}