/** * BoostMedia AI Content Generator Admin - Header Component * * @package BoostMedia_AI * @license GPL-2.0-or-later */ import { useState, useRef, useEffect } from 'react' import { RefreshCw, ExternalLink, HelpCircle, Globe, X, MessageSquare } from 'lucide-react' import { Button, FeedbackModal } from '../common' import { useDataLanguage } from '../../lib/DataLanguageContext' import { useOnboarding } from '../../hooks/useOnboarding' import { PingDot } from '../onboarding/PingDot' import { t } from '../../lib/i18n' interface HeaderProps { title: string subtitle?: string onRefresh?: () => void isRefreshing?: boolean helpContent?: string[] } export function Header({ title, subtitle, onRefresh, isRefreshing = false, helpContent }: HeaderProps) { const [showHelp, setShowHelp] = useState(false) const [showFeedback, setShowFeedback] = useState(false) const helpRef = useRef(null) const { dataLanguage, setDataLanguage, isSavingLanguage } = useDataLanguage() const { state: onboardingState, markSeen } = useOnboarding() useEffect(() => { const handler = (e: MouseEvent) => { if (helpRef.current && !helpRef.current.contains(e.target as Node)) setShowHelp(false) } if (showHelp) document.addEventListener('mousedown', handler) return () => document.removeEventListener('mousedown', handler) }, [showHelp]) return (

{title}

{subtitle && (

{subtitle}

)}
{onRefresh && ( )}
{showHelp && helpContent && helpContent.length > 0 && (

{t('Page Guide')}

  • {t("This controls which language's content you see and create. It's separate from the admin interface language.")}
  • {helpContent.map((item, i) => (
  • {item}
  • ))}
)}
setShowFeedback(false)} />
) }