import { useState } from 'react'; import apiClient from '../api/client'; export default function RegisterBusinessModal({ onClose }) { const [url, setUrl] = useState(''); const [status, setStatus] = useState('idle'); // idle | loading | success | error const [brandName, setBrandName] = useState(''); const [error, setError] = useState(''); async function handleSubmit(e) { e.preventDefault(); if (!url.trim()) return; setStatus('loading'); setError(''); try { const res = await apiClient.post('/api/businesses', { websiteUrl: url.trim() }); setBrandName(res.data.brandName); setStatus('success'); } catch (err) { setError(err.response?.data?.error || 'Something went wrong. Please try again.'); setStatus('error'); } } return (
{/* Success */} {status === 'success' && (

Business Added!

Brand detected:

{brandName}

)} {/* Form */} {(status === 'idle' || status === 'loading' || status === 'error') && ( <>

Add a Business

Enter your website URL. We'll scrape your site and extract brand context to generate TRAI-compliant SMS templates.

setUrl(e.target.value)} placeholder="https://yourstore.com" disabled={status === 'loading'} className="w-full px-4 py-2.5 rounded-lg bg-white border border-gray-300 text-gray-900 placeholder-gray-400 font-medium focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:border-transparent transition disabled:opacity-50 text-sm shadow-sm" required />
{status === 'error' && (

{error}

)}
{status === 'loading' && (

Scraping your site and extracting brand context. This may take 20–30 seconds.

)}
)}
); }