import React, { useState } from 'react' import { useNavigate } from 'react-router-dom' import { useMutation } from '@tanstack/react-query' import { startAnalysis } from '../api/analysis' function AnalysisForm() { const navigate = useNavigate() const [url, setUrl] = useState('') const [options, setOptions] = useState({ viewports: ['desktop', 'tablet', 'mobile'], includeAccessibility: true, analysisType: 'comprehensive' }) const analysisMutation = useMutation({ mutationFn: startAnalysis, onSuccess: (data) => { navigate(`/analysis/${data.analysisId}`) }, onError: (error) => { console.error('Analysis failed:', error) } }) const handleSubmit = (e) => { e.preventDefault() if (!url.trim()) { alert('Please enter a URL') return } // Basic URL validation try { new URL(url) } catch { alert('Please enter a valid URL (include http:// or https://)') return } analysisMutation.mutate({ url: url.trim(), options }) } const handleViewportChange = (viewport) => { setOptions(prev => ({ ...prev, viewports: prev.viewports.includes(viewport) ? prev.viewports.filter(v => v !== viewport) : [...prev.viewports, viewport] })) } return (

Analyze Your Website

{/* URL Input */}
setUrl(e.target.value)} placeholder="https://example.com" className="input" disabled={analysisMutation.isPending} required />

Enter the full URL including http:// or https://

{/* Analysis Options */}

Analysis Options

{/* Analysis Type */}
{/* Viewports */}
{['desktop', 'tablet', 'mobile'].map(viewport => ( ))}
{/* Accessibility */}
{/* Error Display */} {analysisMutation.isError && (
Error: {analysisMutation.error?.message || 'Failed to start analysis'}
)} {/* Submit Button */} {options.viewports.length === 0 && (

Please select at least one viewport to analyze

)}
{/* Info Box */}

What happens next?

) } export default AnalysisForm