diff --git a/frontend/src/components/navbar/Header.tsx b/frontend/src/components/navbar/Header.tsx
index 2e5f09d81..6896c7f44 100644
--- a/frontend/src/components/navbar/Header.tsx
+++ b/frontend/src/components/navbar/Header.tsx
@@ -1,10 +1,10 @@
import React, { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
-import { Link } from 'react-router-dom';
import { Button } from '@/src/components/buttons/button';
import { useIsMobile } from '@/src/hooks/use-mobile';
import UserIcon from '@/src/components/navbar/UserIcon';
import ThemeToggle from '@/src/components/theme/ThemeToggle';
+import { useNavigate } from 'react-router-dom';
interface HeaderProps {
logoSrc?: string;
@@ -19,6 +19,7 @@ const Header = ({
}: HeaderProps) => {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const isMobile = useIsMobile();
+ const navigate = useNavigate();
const toggleMobileMenu = () => {
setMobileMenuOpen(!mobileMenuOpen);
@@ -28,7 +29,7 @@ const Header = ({
e.preventDefault();
e.stopPropagation();
console.log('🚀 Using window.location.href to navigate to: /');
- window.location.href = '/';
+ navigate('/');
};
return (
<>
@@ -52,15 +53,16 @@ const Header = ({
{/* Desktop Navigation - shown when not mobile */}
{!isMobile && !isLoggedIn && (
)}
{/* Show UserIcon only when logged in */}
@@ -100,16 +102,26 @@ const Header = ({
transition={{ duration: 0.3 }}
>
- setMobileMenuOpen(false)}
+ onClick={() => {
+ setMobileMenuOpen(false);
+ navigate('/auth/sign-in');
+ }}
>
Sign In
-
- setMobileMenuOpen(false)}>
+
+ {
+ setMobileMenuOpen(false);
+ navigate('/auth/sign-up');
+ }}
+ className="py-2"
+ >
Get Started
-
+
)}
diff --git a/frontend/src/components/navbar/UserIcon.tsx b/frontend/src/components/navbar/UserIcon.tsx
index 25bfc563f..5acf318d7 100644
--- a/frontend/src/components/navbar/UserIcon.tsx
+++ b/frontend/src/components/navbar/UserIcon.tsx
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react';
import { User, List, MessageCircle } from 'lucide-react';
-import { Link, useNavigate } from 'react-router-dom';
+import { useNavigate } from 'react-router-dom';
import { assessmentApi } from '@/src/pages/assessment/api';
import { getConversationsList } from '@/src/pages/chat/sidebar/api/get-list/getConversationsList';
import { useAuth } from '@/src/pages/auth/context/useAuthContext';
@@ -40,28 +40,32 @@ const UserIcon: React.FC = () => {
e.preventDefault();
e.stopPropagation();
console.log('🚀 Using window.location.href to navigate to: /user/profile');
- window.location.href = '/user/profile';
+ navigate('/user/profile');
};
const handleHistoryClick = (e: React.MouseEvent) => {
e.preventDefault();
e.stopPropagation();
console.log('🚀 Using window.location.href to navigate to: /assessment/history');
- window.location.href = '/assessment/history';
+ navigate('/assessment/history');
};
const handleChatClick = (e: React.MouseEvent) => {
e.preventDefault();
e.stopPropagation();
console.log('🚀 Using window.location.href to navigate to: /chat');
- window.location.href = '/chat';
+ navigate('/chat');
+ };
+
+ const handleNavigation = () => {
+ navigate('/');
};
if (!isAuthenticated) {
return (
-
+
not authenticated
-
+
);
}
@@ -69,6 +73,7 @@ const UserIcon: React.FC = () => {
{!loading && hasConversations && (
{
)}
{!loading && hasHistory && (
{
)}
-
diff --git a/frontend/src/pages/assessment/list/page.tsx b/frontend/src/pages/assessment/list/page.tsx
index 31c118371..b14ee4804 100644
--- a/frontend/src/pages/assessment/list/page.tsx
+++ b/frontend/src/pages/assessment/list/page.tsx
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
import { format, isValid, parseISO } from 'date-fns';
import { Calendar, ChevronRight } from 'lucide-react';
-import { Link, useNavigate } from 'react-router-dom';
+import { useNavigate, useLocation } from 'react-router-dom';
import { assessmentApi, type Assessment } from '@/src/pages/assessment/api';
import { toast } from 'sonner';
import PageTransition from '../animations/page-transitions';
@@ -10,6 +10,7 @@ export default function HistoryPage() {
// #actual
const [assessments, setAssessments] = useState([]);
const navigate = useNavigate();
+ const location = useLocation();
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState(null);
@@ -89,12 +90,13 @@ export default function HistoryPage() {
Assessment History
- navigate('/assessment/age-verification')}
className="inline-flex items-center rounded-lg bg-pink-600 px-4 py-2 text-white transition-colors hover:bg-pink-700 hover:text-white"
>
New Assessment
-
+
{error ? (
@@ -104,7 +106,7 @@ export default function HistoryPage() {
window.location.reload()}
+ onClick={() => navigate(location.pathname)}
className="inline-flex w-full items-center rounded-lg bg-pink-600 px-4 py-2 text-white transition-colors hover:bg-pink-700"
>
Retry
@@ -120,6 +122,7 @@ export default function HistoryPage() {
{
navigate('/assessment');
}}
@@ -164,9 +167,16 @@ export default function HistoryPage() {
: assessment.assessment_data?.cycleLength;
return (
- navigate(`/assessment/history/${assessment.id}`)}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ navigate(`/assessment/history/${assessment.id}`);
+ }
+ }}
className="block rounded-lg border bg-white p-6 shadow-sm transition-shadow hover:shadow-md dark:border-slate-700 dark:bg-slate-800 dark:hover:border-slate-600"
>
@@ -197,7 +207,7 @@ export default function HistoryPage() {
-
+
);
})}