import React from 'react'; import { MathJax } from 'better-react-mathjax'; export const isMathQuery = (q) => { return /[\d+\-*/^=()[\]{}]/.test(q) || q.toLowerCase().includes('solve') || q.toLowerCase().includes('plot'); }; export const getSuggestedQueries = (topic) => { const suggestions = { 'Quadratic Equation': ['solve x^2 + 5x + 6 = 0', 'plot y = x^2 - 4x + 4'], 'Fourier Transform': ['Fourier transform of rect(t)', 'FourierTransform[exp(-a t^2), t, w]'], 'Linear Algebra': ['eigenvalues {{1,2},{3,4}}', 'det {{a,b},{c,d}}'], 'Calculus': ['derivative of sin(x) * exp(x)', 'integrate log(x) from 1 to e'], 'Stochastic Calculus': ['Brownian motion path', 'Ito integral example'], }; return suggestions[topic] || [`properties of ${topic}`, `plot ${topic} function`]; }; export const formatAIText = (text) => { if (!text) return null; const SECTIONS = [ { key: 'SIMPLE EXPLANATION:', label: 'Simple Explanation', icon: '💡', accent: 'from-blue-500 to-indigo-500', bg: 'bg-blue-50 dark:bg-blue-950/30', border: 'border-blue-200 dark:border-blue-800/50', tag: 'bg-blue-100 dark:bg-blue-900/40 text-blue-700 dark:text-blue-300', }, { key: 'INTUITION:', label: 'Intuition', icon: '🧠', accent: 'from-violet-500 to-purple-500', bg: 'bg-violet-50 dark:bg-violet-950/30', border: 'border-violet-200 dark:border-violet-800/50', tag: 'bg-violet-100 dark:bg-violet-900/40 text-violet-700 dark:text-violet-300', }, { key: 'EXAMPLE:', label: 'Example', icon: '⚡', accent: 'from-amber-500 to-orange-500', bg: 'bg-amber-50 dark:bg-amber-950/30', border: 'border-amber-200 dark:border-amber-800/50', tag: 'bg-amber-100 dark:bg-amber-900/40 text-amber-700 dark:text-amber-300', isCode: true, }, { key: 'USED IN:', label: 'Used In', icon: '🔗', accent: 'from-emerald-500 to-teal-500', bg: 'bg-emerald-50 dark:bg-emerald-950/30', border: 'border-emerald-200 dark:border-emerald-800/50', tag: 'bg-emerald-100 dark:bg-emerald-900/40 text-emerald-700 dark:text-emerald-300', }, ]; const blocks = text.split('\n\n'); return (
{blocks.map((block, i) => { const section = SECTIONS.find(s => block.startsWith(s.key)); if (section) { const lines = block.split('\n'); const bodyLines = lines.slice(1).join('\n').trim(); return (
{/* Section header */}
{section.icon} {section.label}
{/* Section body */}
{section.isCode || bodyLines.includes('=') || bodyLines.includes('f(') ? (
{bodyLines}
) : (

{bodyLines}

)}
); } // Fallback for unrecognised paragraphs if (block.trim()) { return (

{block}

); } return null; })}
); };