@@ -236,7 +236,7 @@ export function CreateTaskPage() {
{errorMessage}
diff --git a/frontend/src/pages/LoginPage.tsx b/frontend/src/pages/LoginPage.tsx
new file mode 100644
index 0000000..d79bb08
--- /dev/null
+++ b/frontend/src/pages/LoginPage.tsx
@@ -0,0 +1,115 @@
+import React, { useState } from 'react'
+import { useNavigate, Link } from 'react-router-dom'
+import { motion } from 'framer-motion'
+import { Mail, Lock, LogIn, Layout } from 'lucide-react'
+import { useAuth } from '../contexts/AuthContext'
+
+export const LoginPage: React.FC = () => {
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
+ const navigate = useNavigate()
+ const { login } = useAuth()
+
+ const handleLogin = async (e: React.FormEvent) => {
+ e.preventDefault()
+ setIsLoading(true)
+
+ try {
+ await login(email, password)
+ navigate('/')
+ } catch (error) {
+ console.error('Login failed', error)
+ alert('Erro ao fazer login. Tente novamente.')
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ return (
+
+ {/* Visual decorations matching index.css body gradients */}
+
+
+
+
+
+
+
+
+
BeeTask
+
Bem-vindo de volta ao seu workspace
+
+
+
+
+
+
+ Não tem uma conta? Criar conta
+
+
+ Precisa de ajuda? Falar com suporte
+
+
+
+
+
+ )
+}
diff --git a/frontend/src/pages/RegisterPage.tsx b/frontend/src/pages/RegisterPage.tsx
new file mode 100644
index 0000000..4111e59
--- /dev/null
+++ b/frontend/src/pages/RegisterPage.tsx
@@ -0,0 +1,130 @@
+import React, { useState } from 'react'
+import { useNavigate, Link } from 'react-router-dom'
+import { motion } from 'framer-motion'
+import { Mail, Lock, User, Layout, UserPlus } from 'lucide-react'
+import { authService } from '../services/authService'
+
+export const RegisterPage: React.FC = () => {
+ const [name, setName] = useState('')
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
+ const navigate = useNavigate()
+
+ const handleRegister = async (e: React.FormEvent) => {
+ e.preventDefault()
+ setIsLoading(true)
+
+ try {
+ await authService.register(name, email, password)
+ alert('Conta criada com sucesso! Agora faça seu login.')
+ navigate('/login')
+ } catch (error) {
+ console.error('Registration failed', error)
+ alert('Erro ao criar conta. Tente novamente.')
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ return (
+
+ {/* Visual decorations */}
+
+
+
+
+
+
+
+
+
BeeTask
+
Crie sua conta para começar
+
+
+
+
+
+
+ Já tem uma conta? Fazer login
+
+
+
+
+
+ )
+}
diff --git a/frontend/src/pages/TaskBoardPage.tsx b/frontend/src/pages/TaskBoardPage.tsx
index b93f50a..e67765d 100644
--- a/frontend/src/pages/TaskBoardPage.tsx
+++ b/frontend/src/pages/TaskBoardPage.tsx
@@ -23,25 +23,25 @@ const COLUMNS: { id: TaskStatus; label: string; icon: any; color: string }[] = [
id: 'NOT_STARTED',
label: 'Pendente',
icon: AlertCircle,
- color: 'text-slate-400',
+ color: 'text-text-muted',
},
{
id: 'IN_PROGRESS',
label: 'Em Andamento',
icon: Clock,
- color: 'text-amber-500',
+ color: 'text-warning',
},
{
id: 'COMPLETED',
label: 'Concluída',
icon: CheckCircle2,
- color: 'text-emerald-500',
+ color: 'text-success',
},
{
id: 'CANCELED',
label: 'Cancelada',
icon: XCircle,
- color: 'text-rose-500',
+ color: 'text-danger',
},
]
diff --git a/frontend/src/pages/TaskListPage.tsx b/frontend/src/pages/TaskListPage.tsx
index 7e2b077..194989e 100644
--- a/frontend/src/pages/TaskListPage.tsx
+++ b/frontend/src/pages/TaskListPage.tsx
@@ -24,25 +24,25 @@ function getStatusConfig(status: TaskResponse['status']) {
switch (status) {
case 'COMPLETED':
return {
- tone: 'bg-emerald-50 text-emerald-700 border-emerald-100',
+ tone: 'bg-success-soft text-success border-success/20',
icon: CheckCircle2,
label: 'Concluído',
}
case 'IN_PROGRESS':
return {
- tone: 'bg-amber-50 text-amber-700 border-amber-100',
+ tone: 'bg-warning-soft text-warning border-warning/20',
icon: Clock,
label: 'Em Andamento',
}
case 'CANCELED':
return {
- tone: 'bg-rose-50 text-rose-700 border-rose-100',
+ tone: 'bg-danger-soft text-danger border-danger/20',
icon: XCircle,
label: 'Cancelado',
}
default:
return {
- tone: 'bg-slate-50 text-slate-600 border-slate-100',
+ tone: 'bg-surface-muted text-text-muted border-border-soft',
icon: AlertCircle,
label: 'Pendente',
}
@@ -213,7 +213,7 @@ export function TaskListPage() {