Skip to content

Commit 4e98929

Browse files
committed
add completed todo styling
1 parent 8a4cfe7 commit 4e98929

1 file changed

Lines changed: 42 additions & 7 deletions

File tree

src/ui/todos/todo-card.tsx

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
DropdownMenuTrigger,
99
} from '@/components/ui/dropdown-menu';
1010
import { CheckIcon, ClockIcon, PriorityIcon } from '../icons';
11+
import { cn } from '@/lib/utils';
1112

1213
interface TodoCardProp {
1314
todo: Todo;
@@ -24,10 +25,27 @@ function TodoCard({ todo, onDelete, onEdit, onChangeState }: TodoCardProp) {
2425
medium: 'bg-yellow-100 text-yellow-800',
2526
low: 'bg-green-100 text-green-800',
2627
};
28+
2729
return (
28-
<div className="bg-white shadow-md p-5 border border-gray-200 rounded-lg space-y-2 hover:shadow-lg transition-shadow duration-300">
30+
<div
31+
className={cn(
32+
'shadow-md p-5 borde rounded-lg space-y-2 hover:shadow-lg transition-shadow duration-300',
33+
todo.completed
34+
? 'bg-gray-50 dark:bg-gray-800/50 border-gray-200 dark:border-gray-700'
35+
: 'bg-white dark:bg-gray-800 border-gray-200 dark:border-gray-700',
36+
)}
37+
>
2938
<div className="flex justify-between items-start">
30-
<span className="truncate text-lg font-bold">{todo.title}</span>
39+
<h3
40+
className={cn(
41+
'truncate text-lg font-medium',
42+
todo.completed
43+
? 'text-gray-500 dark:text-gray-400 line-through'
44+
: 'text-gray-900 dark:text-white',
45+
)}
46+
>
47+
{todo.title}
48+
</h3>
3149
<div className="flex items-center">
3250
<DropdownMenu>
3351
<DropdownMenuTrigger className="cursor-pointer">
@@ -82,7 +100,16 @@ function TodoCard({ todo, onDelete, onEdit, onChangeState }: TodoCardProp) {
82100
</div>
83101
</div>
84102

85-
<p className="text-gray-600 mb-4 line-clamp-2">{todo.description}</p>
103+
<p
104+
className={cn(
105+
'mb-4 line-clamp-2',
106+
todo.completed
107+
? 'text-gray-400 dark:text-gray-500'
108+
: 'text-gray-600 dark:text-gray-300',
109+
)}
110+
>
111+
{todo.description}
112+
</p>
86113

87114
<div className="flex justify-between items-center">
88115
<div className="flex items-center text-sm text-gray-500 space-x-0.5">
@@ -92,10 +119,18 @@ function TodoCard({ todo, onDelete, onEdit, onChangeState }: TodoCardProp) {
92119
) : null}
93120
</div>
94121

95-
<Badge className={`${colorClasses[todo.priority]}`}>
96-
<PriorityIcon priority={todo.priority} />
97-
<span className="ml-1 capitalize">{todo.priority}</span>
98-
</Badge>
122+
<div className="flex space-x-2">
123+
<Badge>
124+
<span className="ml-1 capitalize">
125+
{todo.completed ? t('completedTab') : t('activeTab')}
126+
</span>
127+
</Badge>
128+
129+
<Badge className={`${colorClasses[todo.priority]}`}>
130+
<PriorityIcon priority={todo.priority} />
131+
<span className="ml-1 capitalize">{todo.priority}</span>
132+
</Badge>
133+
</div>
99134
</div>
100135
</div>
101136
);

0 commit comments

Comments
 (0)