import { useState } from 'react'; import apiClient from '../api/client'; import { getBusinessDomain, getBusinessImage, getBusinessName, getBusinessTagline, } from '../utils/businessProfile'; export default function RegisterBusinessModal({ onClose }) { const [url, setUrl] = useState(''); const [status, setStatus] = useState('idle'); const [createdBusiness, setCreatedBusiness] = useState(null); 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(), }); setCreatedBusiness(res.data); setStatus('success'); } catch (err) { setError(err.response?.data?.error || 'Something went wrong. Please try again.'); setStatus('error'); } } const successName = getBusinessName(createdBusiness); const successDomain = getBusinessDomain(createdBusiness); const successTagline = getBusinessTagline(createdBusiness); const successImage = getBusinessImage(createdBusiness); return (
{status === 'success' && (

Business Added!

Brand detected and ready for onboarding.

{successImage ? ( {successName} ) : ( {successName?.[0]?.toUpperCase() || 'B'} )}

{successName}

{successDomain && (

{successDomain}

)} {successTagline && (

{successTagline}

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

Add a Business

Enter the storefront website URL and we'll scrape it to detect the brand, images, and copy you need for onboarding.

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' && (

Fetching the website context and extracting brand details. This may take 20–30 seconds.

)}
)}
); }