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 @@
## 2026-02-07 - PR Hygiene and Spanish Linguistics
**Learning:** Automatically generated files (lockfiles, PWA artifacts, logs) should be excluded from UX-focused PRs to keep the focus on relevant changes. Spanish UI text requires consistent accentuation (tildes) for professional look and feel.
**Action:** Use 'git status' and 'git diff' to verify files before submitting. Maintain a checklist of common Spanish UI words (Mañana, más, descripción, etc.) for every review.
8 changes: 5 additions & 3 deletions frontend/components/calendar/task-calendar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,15 @@ export default function TaskCalendar({ token, onTaskClick }: TaskCalendarProps)
variant="outline"
size="icon"
onClick={() => onNavigate("PREV")}
aria-label="Mes anterior"
>
<ChevronLeft className="h-4 w-4" />
</Button>
<Button
variant="outline"
size="icon"
onClick={() => onNavigate("NEXT")}
aria-label="Mes siguiente"
>
<ChevronRight className="h-4 w-4" />
</Button>
Expand Down Expand Up @@ -150,7 +152,7 @@ export default function TaskCalendar({ token, onTaskClick }: TaskCalendarProps)
size="sm"
onClick={() => setView(Views.DAY)}
>
Dia
Día
</Button>
</div>
</div>
Expand All @@ -162,13 +164,13 @@ export default function TaskCalendar({ token, onTaskClick }: TaskCalendarProps)
next: "Siguiente",
month: "Mes",
week: "Semana",
day: "Dia",
day: "Día",
agenda: "Agenda",
date: "Fecha",
time: "Hora",
event: "Evento",
noEventsInRange: "No hay tareas en este rango",
showMore: (total: number) => `+ ${total} mas`,
showMore: (total: number) => `+ ${total} más`,
};

return (
Expand Down
1 change: 1 addition & 0 deletions frontend/components/kanban/kanban-card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ export default function KanbanCard({
{...listeners}
className="mt-1 cursor-grab active:cursor-grabbing opacity-0 group-hover:opacity-100 transition-opacity"
onClick={(e) => e.stopPropagation()}
aria-label="Arrastrar tarea"
>
<GripVertical className="h-4 w-4 text-muted-foreground" />
</div>
Expand Down
7 changes: 6 additions & 1 deletion frontend/components/notifications/notification-bell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,12 @@ export default function NotificationBell({ token }: NotificationBellProps) {
return (
<Popover open={open} onOpenChange={setOpen}>
<PopoverTrigger asChild>
<Button variant="ghost" size="icon" className="relative">
<Button
variant="ghost"
size="icon"
className="relative"
aria-label="Notificaciones"
>
<Bell className="h-5 w-5" />
{unreadCount > 0 && (
<Badge
Expand Down
2 changes: 1 addition & 1 deletion frontend/components/projects/project-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,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: 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
8 changes: 4 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 @@ -371,7 +371,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
8 changes: 5 additions & 3 deletions 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 Expand Up @@ -177,7 +177,9 @@ export default function TaskList({
size="sm"
className="h-6 w-6 p-0"
onClick={() => toggleTaskExpansion(task.id)}
aria-label={isExpanded ? "Contraer descripcion" : "Expandir descripcion"}
aria-label={
isExpanded ? "Contraer descripción" : "Expandir descripción"
}
>
{isExpanded ? (
<ChevronUp className="h-4 w-4" />
Expand All @@ -203,7 +205,7 @@ export default function TaskList({
onClick={() => toggleTaskExpansion(task.id)}
className="text-xs font-semibold text-primary hover:underline mt-1 focus:outline-none"
>
{isExpanded ? "Ver menos" : "Ver mas"}
{isExpanded ? "Ver menos" : "Ver más"}
</button>
)}
</div>
Expand Down
16 changes: 8 additions & 8 deletions frontend/hooks/useTasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export function useTasks(token: string) {
} else {
toast({
title: "Error",
description: result.error || "Ocurrio un error al cargar las tareas.",
description: result.error || "Ocurrió un error al cargar las tareas.",
variant: "destructive",
});
}
Expand Down Expand Up @@ -74,7 +74,7 @@ export function useTasks(token: string) {
);
setEditingTask(null);
toast({
title: "Exito",
title: "Éxito",
description: "Tarea modificada exitosamente.",
});
} else {
Expand All @@ -95,7 +95,7 @@ export function useTasks(token: string) {
if (createdTask.success && createdTask.task) {
setTasks((prev) => [...prev, createdTask.task.data]);
toast({
title: "Exito",
title: "Éxito",
description: "Tarea creada exitosamente.",
});
} else {
Expand All @@ -117,7 +117,7 @@ export function useTasks(token: string) {
if (deleted.success) {
setTasks((prev) => prev.filter((task) => task.id !== id));
toast({
title: "Exito",
title: "Éxito",
description: "Tarea borrada exitosamente",
});
} else {
Expand Down Expand Up @@ -148,7 +148,7 @@ export function useTasks(token: string) {
if (updated.success && updated.task) {
setTasks((prev) => prev.map((t) => (t.id === id ? updated.task : t)));
toast({
title: "Exito",
title: "Éxito",
description: `Tarea marcada como ${
updated.task.completed ? "completada" : "pendiente"
}.`,
Expand Down Expand Up @@ -183,13 +183,13 @@ export function useTasks(token: string) {
await logoutAction();
router.push("/");
toast({
title: "Sesion cerrada",
description: "Has cerrado sesion correctamente.",
title: "Sesión cerrada",
description: "Has cerrado sesión correctamente.",
});
} catch (error) {
toast({
title: "Error",
description: "Error al cerrar sesion.",
description: "Error al cerrar sesión.",
variant: "destructive",
});
}
Expand Down