Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 2025-02-03 - Spanish Linguistic Polish and Button Accessibility
**Learning:** In Spanish-language interfaces, missing accents (tildes) on common UI terms like "Mañana", "Título", "Descripción", and "Búsqueda" significantly degrade the perceived quality and professionalism of the application. Additionally, icon-only buttons in complex dashboards frequently lack ARIA labels, hindering accessibility for screen reader users.
**Action:** Always perform a sweep for common Spanish UI terms that require accentuation and ensure all icon-only buttons have descriptive `aria-label` and `title` attributes.
9 changes: 6 additions & 3 deletions frontend/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "./globals.css";
import { Toaster } from "@/components/ui/toaster";
import { ThemeProvider } from "@/components/theme-provider";
import { PWAProvider } from "@/components/pwa";
import { TooltipProvider } from "@/components/ui/tooltip";

const inter = Inter({ subsets: ["latin"] });

Expand Down Expand Up @@ -79,9 +80,11 @@ export default function RootLayout({
enableSystem
disableTransitionOnChange
>
{children}
<Toaster />
<PWAProvider />
<TooltipProvider>
{children}
<Toaster />
<PWAProvider />
</TooltipProvider>
</ThemeProvider>
</body>
</html>
Expand Down
4 changes: 3 additions & 1 deletion frontend/components/projects/project-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ export default function ProjectForm({
size="sm"
className="h-6 w-6 p-0"
onClick={onCancel}
aria-label="Cerrar formulario de proyecto"
title="Cerrar formulario de proyecto"
>
<X className="h-4 w-4" />
</Button>
Expand All @@ -94,7 +96,7 @@ export default function ProjectForm({
/>

<Textarea
placeholder="Descripcion (opcional)"
placeholder="Descripción (opcional)"
value={description}
onChange={(e) => setDescription(e.target.value)}
rows={2}
Expand Down
4 changes: 4 additions & 0 deletions frontend/components/projects/project-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ export default function ProjectList({
size="sm"
className="h-7 w-7 p-0"
onClick={() => setShowForm(true)}
aria-label="Nuevo proyecto"
title="Nuevo proyecto"
>
<Plus className="h-4 w-4" />
</Button>
Expand Down Expand Up @@ -142,6 +144,8 @@ export default function ProjectList({
size="sm"
className="h-6 w-6 p-0 opacity-0 group-hover:opacity-100"
onClick={(e) => e.stopPropagation()}
aria-label="Acciones del proyecto"
title="Acciones del proyecto"
>
<MoreVertical className="h-3 w-3" />
</Button>
Expand Down
4 changes: 2 additions & 2 deletions frontend/components/tasks/task-dashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ export default function TaskDashboard({
<ModeToggle />
<Button variant="ghost" size="sm" onClick={handleLogout} className="text-muted-foreground hover:text-destructive transition-colors">
<LogOut className="h-4 w-4 mr-2" />
Cerrar sesion
Cerrar sesión
</Button>
</div>
</header>
Expand Down Expand Up @@ -241,7 +241,7 @@ export default function TaskDashboard({
value="mis-tareas"
className="data-[state=active]:bg-background"
>
Mias
Mías
<Badge variant="secondary" className="ml-2 bg-background/50">
{myTasksCount}
</Badge>
Expand Down
4 changes: 3 additions & 1 deletion frontend/components/tasks/task-filters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ export default function TaskFiltersComponent({
size="icon"
onClick={() => setShowFilters(!showFilters)}
className="relative"
aria-label="Alternar filtros"
title="Alternar filtros"
>
<Filter className="h-4 w-4" />
{activeFilterCount > 0 && (
Expand Down Expand Up @@ -326,7 +328,7 @@ export default function TaskFiltersComponent({
)}
{activeFilters.search && (
<Badge variant="secondary" className="text-xs">
Busqueda: {activeFilters.search}
Búsqueda: {activeFilters.search}
<button
className="ml-1 hover:text-destructive"
onClick={() => handleSearchChange("")}
Expand Down
12 changes: 8 additions & 4 deletions frontend/components/tasks/task-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ export default function TaskForm({
<form onSubmit={handleSubmit} className="space-y-4">
<div className="space-y-4">
<div className="space-y-2">
<Label htmlFor="task-title">Titulo de la tarea</Label>
<Label htmlFor="task-title">Título de la tarea</Label>
<Input
id="task-title"
placeholder="Ej: Comprar leche"
Expand All @@ -186,7 +186,7 @@ export default function TaskForm({
</div>

<div className="space-y-2">
<Label htmlFor="task-description">Descripcion (opcional)</Label>
<Label htmlFor="task-description">Descripción (opcional)</Label>
<Textarea
id="task-description"
placeholder="Detalles adicionales sobre la tarea"
Expand All @@ -198,7 +198,7 @@ export default function TaskForm({

<div className="grid grid-cols-2 gap-3">
<div className="space-y-2">
<Label>Fecha limite</Label>
<Label>Fecha límite</Label>
<Popover open={calendarOpen} onOpenChange={setCalendarOpen}>
<PopoverTrigger asChild>
<Button
Expand Down Expand Up @@ -325,6 +325,8 @@ export default function TaskForm({
size="sm"
className="h-8"
onClick={handleCreateTag}
aria-label="Crear etiqueta"
title="Crear etiqueta"
>
<Plus className="h-4 w-4" />
</Button>
Expand All @@ -334,6 +336,8 @@ export default function TaskForm({
size="sm"
className="h-8"
onClick={() => setShowNewTagForm(false)}
aria-label="Cancelar creación de etiqueta"
title="Cancelar creación de etiqueta"
>
<X className="h-4 w-4" />
</Button>
Expand Down Expand Up @@ -371,7 +375,7 @@ export default function TaskForm({
</Button>
{editingTask && (
<Button type="button" variant="ghost" onClick={onCancel} className="w-full h-10">
Cancelar Edicion
Cancelar Edición
</Button>
)}
</div>
Expand Down
2 changes: 1 addition & 1 deletion frontend/components/tasks/task-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ function getDueDateInfo(dueDate: string) {
}
if (isTomorrow(date)) {
return {
label: "Manana",
label: "Mañana",
className: "text-blue-600 dark:text-blue-400",
icon: Calendar,
};
Expand Down