import React from 'react'; import useKeywordAnalysis from '../hooks/useKeywordAnalysis'; const KeywordTrendAnalyzer = () => { const { keyword, setKeyword, analysisData, patternAnalysis, loading, patternLoading, error, analyzeKeyword, analyzeKeywordPattern } = useKeywordAnalysis(); const handleAnalyzeClick = async () => { try { // Run both analyses in parallel await Promise.all([ analyzeKeyword(), analyzeKeywordPattern() ]); } catch (err) { // Error is handled within the individual functions console.error('Analysis error:', err); } }; return (

Keyword Frequency Pattern Analysis

setKeyword(e.target.value)} placeholder="Enter keyword to analyze" className="flex-1 px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-gray-900" />
{error && (
{error}
)} {/* Pattern Analysis Results */} {patternAnalysis && !patternLoading && (

Frequency Pattern Analysis for "{keyword}"

Pattern: {patternAnalysis.pattern.toUpperCase()}

Explanation: {patternAnalysis.details.explanation}

Confidence: {(patternAnalysis.details.confidence * 100).toFixed(0)}%

Total Articles: {patternAnalysis.total_articles}

{patternAnalysis.date_range.start && patternAnalysis.date_range.end && (

Date Range: {patternAnalysis.date_range.start} to {patternAnalysis.date_range.end}

)}
)} {/* Recent Articles Table */} {patternAnalysis && patternAnalysis.articles && patternAnalysis.articles.length > 0 && (

5 Most Recent Articles for "{keyword}"

{patternAnalysis.articles.slice(0, 5).map((article, index) => { // Format the date from the article let formattedDate = 'N/A'; if (article.date) { try { // Parse the date string - it could be in various formats const date = new Date(article.date); // If the date parsing failed, try to extract date from the link if it's in the format needed if (isNaN(date.getTime())) { // Handle different date formats if needed // Try to extract from the link or other format formattedDate = 'N/A'; } else { // Format date as "09/oct/25" (day/mon/yy) const day = date.getDate().toString().padStart(2, '0'); const month = date.toLocaleString('default', { month: 'short' }).toLowerCase(); const year = date.getFullYear().toString().slice(-2); formattedDate = `${day}/${month}/${year}`; } } catch (e) { formattedDate = 'N/A'; } } return ( ); })}
Title Date
{article.title} {formattedDate}
)}
); }; export default KeywordTrendAnalyzer;