feat(HeaderNavigation): update navigation to use user preferences for Jira configuration

- Replaced Jira configuration context with user preferences context to determine Jira setup.
- Enhanced navigation links to reflect user-specific Jira project key.
- Fixed CSS class syntax for hover effects and adjusted link display logic for larger screens.
This commit is contained in:
Julien Froidefond
2025-10-10 15:48:01 +02:00
parent 67515441fb
commit 5dcfa19b0c

View File

@@ -2,7 +2,7 @@
import Link from 'next/link'; import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { useJiraConfig } from '@/contexts/JiraConfigContext'; import { useUserPreferences } from '@/contexts/UserPreferencesContext';
interface HeaderNavigationProps { interface HeaderNavigationProps {
variant: 'desktop' | 'mobile'; variant: 'desktop' | 'mobile';
@@ -15,10 +15,18 @@ export function HeaderNavigation({
className = '', className = '',
onLinkClick, onLinkClick,
}: HeaderNavigationProps) { }: HeaderNavigationProps) {
const { isConfigured: isJiraConfigured, config: jiraConfig } = const { preferences } = useUserPreferences();
useJiraConfig();
const pathname = usePathname(); const pathname = usePathname();
// Vérifier si Jira est configuré depuis les préférences utilisateur
const isJiraConfigured = Boolean(
preferences.jiraConfig?.enabled &&
preferences.jiraConfig?.baseUrl &&
preferences.jiraConfig?.email &&
preferences.jiraConfig?.apiToken &&
preferences.jiraConfig?.projectKey
);
// Liste des liens de navigation // Liste des liens de navigation
const navLinks = [ const navLinks = [
{ href: '/', label: 'Dashboard' }, { href: '/', label: 'Dashboard' },
@@ -30,7 +38,7 @@ export function HeaderNavigation({
? [ ? [
{ {
href: '/jira-dashboard', href: '/jira-dashboard',
label: `Jira${jiraConfig?.projectKey ? ` (${jiraConfig.projectKey})` : ''}`, label: `Jira${preferences.jiraConfig?.projectKey ? ` (${preferences.jiraConfig.projectKey})` : ''}`,
}, },
] ]
: []), : []),
@@ -66,7 +74,7 @@ export function HeaderNavigation({
return `${baseClasses} text-[var(--primary)] bg-[var(--primary)]/10 border border-[var(--primary)]/30`; return `${baseClasses} text-[var(--primary)] bg-[var(--primary)]/10 border border-[var(--primary)]/30`;
} }
return `${baseClasses} text-[var(--muted-foreground)] hover:text-[var(--primary)] hover:bg-[var(--card-hover"]`; return `${baseClasses} text-[var(--muted-foreground)] hover:text-[var(--primary)] hover:bg-[var(--card-hover)]`;
}; };
if (variant === 'mobile') { if (variant === 'mobile') {
@@ -89,7 +97,7 @@ export function HeaderNavigation({
// Desktop version // Desktop version
return ( return (
<nav className={`flex items-center gap-1 xl:gap-2 flex-wrap ${className}`}> <nav className={`flex items-center gap-1 xl:gap-2 flex-wrap ${className}`}>
{navLinks.slice(0, 4).map(({ href, label }) => ( {navLinks.slice(0, 5).map(({ href, label }) => (
<Link <Link
key={href} key={href}
href={href} href={href}
@@ -100,8 +108,8 @@ export function HeaderNavigation({
))} ))}
{/* Plus d'éléments sur très grands écrans */} {/* Plus d'éléments sur très grands écrans */}
<div className="hidden 2xl:flex items-center gap-1"> <div className="hidden xl:flex items-center gap-1">
{navLinks.slice(4).map(({ href, label }) => ( {navLinks.slice(5).map(({ href, label }) => (
<Link key={href} href={href} className={getLinkClasses(href)}> <Link key={href} href={href} className={getLinkClasses(href)}>
{label} {label}
</Link> </Link>