File size: 1,461 Bytes
1ae4d65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import React, { useState } from 'react'

export default function App(){
  const [prompt, setPrompt] = useState('');
  const [out, setOut] = useState('');
  const [loading, setLoading] = useState(false);
  const callServer = async () => {
    setLoading(true); setOut('');
    try{
      const resp = await fetch('/api/ask', { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ prompt, model: 'gpt-4o-mini' }) });
      const j = await resp.json();
      if(j.ok) setOut(j.answer);
      else setOut('Error: ' + (j.error||JSON.stringify(j)));
    }catch(e){ setOut('Network error: ' + e.message) }
    setLoading(false);
  }
  return (
    <div style={{padding:24,fontFamily:'Inter,Arial',color:'#0b1220'}}>
      <h1>Marketing Workflow — Demo Client</h1>
      <p>Type a question for the marketing expert (server-side AI).</p>
      <textarea value={prompt} onChange={e=>setPrompt(e.target.value)} style={{width:'100%',height:120}}/>
      <div style={{marginTop:8,display:'flex',gap:8}}>
        <button onClick={callServer} disabled={loading}>{loading ? 'Thinking...' : 'Ask AI'}</button>
        <button onClick={()=>{ setPrompt('Create 3 messaging pillars for a handcrafted apparel DTC brand targeting women 28-45 in Tier 1 cities. Provide offers and ad formats.') }}>Sample prompt</button>
      </div>
      <h3>Answer</h3>
      <pre style={{background:'#f2f4f7',padding:12,borderRadius:8}}>{out}</pre>
    </div>
  )
}