import React, { useState } from 'react'; import { Database, FileCode, Play, Send, RefreshCw, Layers, CheckCircle2, Copy } from 'lucide-react'; const DataExtractionTab: React.FC = () => { const [url, setUrl] = useState('https://news.ycombinator.com'); const [schema, setSchema] = useState( JSON.stringify({ title: 'Hacker News Scrape', selectors: { stories: '.athing', title: '.titleline > a', score: '.score' } }, null, 2) ); const [isScraping, setIsScraping] = useState(false); const [results, setResults] = useState(''); const [isImported, setIsImported] = useState(false); const handleScrape = () => { if (!url.trim()) { alert('Please enter a target URL.'); return; } setIsScraping(true); setResults(''); setTimeout(() => { setIsScraping(false); setResults(JSON.stringify({ status: 'success', extracted_at: new Date().toISOString(), data: { items_scraped: 3, competitors: [ { name: "NovaAgent", price_tier: "$49/mo", reviews: "Positive" }, { name: "SyncUsers Pro", price_tier: "$99/mo", reviews: "Highly Engaged" }, { name: "SaaS Simulator", price_tier: "$15/mo", reviews: "Neutral" } ] } }, null, 2)); }, 1500); }; const handleExportToUserSync = () => { setIsImported(true); setTimeout(() => { setIsImported(false); alert('Scraped competitive profiles successfully mapped and imported into Tab 4 (Persona Builder) database!'); }, 1000); }; return (
{/* Scraper Configuration Form */}

Nova Act Data Extraction Studio

Define extraction selectors & structured JSON schemas to gather competitor intelligence.

setUrl(e.target.value)} className="w-full bg-black border border-gray-800 rounded-xl p-3 text-sm focus:border-indigo-500 outline-none text-white font-mono" placeholder="e.g. https://news.ycombinator.com" />