feat: Add visual feedback and polish (Task 15)

- Implement toast notification system for success/error messages
- Add loading states with skeleton loaders for async operations
- Create smooth CSS transitions and animations
- Enhance empty states with EmptyState component
- Add loading.tsx files for Next.js loading states
- Integrate toast notifications across all CRUD operations
- Add fade-in and scale-in animations for better UX
- Improve visual feedback for user actions
This commit is contained in:
2025-12-01 21:14:14 +00:00
parent a037117b15
commit e51e88fddd
20 changed files with 432 additions and 33 deletions

View File

@@ -3,6 +3,7 @@
import { highlightText } from '@/lib/utils'
import Link from 'next/link'
import { Calendar, Tag, AlertCircle } from 'lucide-react'
import EmptyState from './EmptyState'
interface SearchResultsProps {
results: Array<{
@@ -31,10 +32,11 @@ export default function SearchResults({ results, query, onClose }: SearchResults
if (results.length === 0) {
return (
<div className="bg-white rounded-lg border border-gray-200 p-8 text-center">
<p className="text-gray-500">No tasks found matching "{query}"</p>
<p className="text-sm text-gray-400 mt-2">Try a different search term</p>
</div>
<EmptyState
icon="search"
title={`No tasks found matching "${query}"`}
description="Try a different search term or check your spelling"
/>
)
}
@@ -45,7 +47,7 @@ export default function SearchResults({ results, query, onClose }: SearchResults
}
return (
<div className="space-y-2">
<div className="space-y-2 animate-fade-in">
<div className="flex items-center justify-between mb-4">
<p className="text-sm text-gray-600">
Found {results.length} {results.length === 1 ? 'task' : 'tasks'}