const SOURCE_CATS = ["All", "Database", "Big Data", "SaaS", "API", "Streaming", "Files", "Data Lake"]; const CONNECTOR_ICONS = { PostgreSQL: { bg: "#336791", char: "P" }, ClickHouse: { bg: "#FCC000", char: "C" }, "SAP HANA": { bg: "#008FD3", char: "S" }, REST: { bg: "#059669", char: "R" }, Kafka: { bg: "#231F20", char: "K" }, "MinIO / Iceberg": { bg: "#C72E29", char: "M" }, "SQL Server": { bg: "#A91D22", char: "S" }, MQTT: { bg: "#660066", char: "M" }, Salesforce: { bg: "#00A1E0", char: "S" }, "Excel Upload": { bg: "#217346", char: "X" }, "Hadoop HDFS": { bg: "#F2C300", char: "H" }, Oracle: { bg: "#C74634", char: "O" }, }; function SourcesScreen() { const [cat, setCat] = useState("All"); const [q, setQ] = useState(""); const filtered = DATA_SOURCES.filter(s => (cat === "All" || s.cat === cat) && (q === "" || s.name.toLowerCase().includes(q.toLowerCase()))); return (
Data Sources
10 healthy · 1 warning · 1 error · Total volume: 826 TB · Live rows: 48.2K/min
{/* Filter bar */}
setQ(e.target.value)} placeholder="Search sources…" style={{ width: '100%', height: 32, borderRadius: 8, border: '1px solid var(--border)', background: 'var(--panel)', padding: '0 10px 0 30px', fontSize: 12.5, color: 'var(--ink)', fontFamily: 'inherit', outline: 'none' }} />
{SOURCE_CATS.map(c => ( ))}
{/* Grid */}
{filtered.map(s => { const ico = CONNECTOR_ICONS[s.type] || { bg: "#666", char: s.type[0] }; return (
{ico.char}
{s.name}
{s.status}
{s.type} · {s.cat}
Volume
{s.rows}
Freshness
{s.freshness === 'live' ? <>Live : s.freshness}
); })} {/* Add new tile */}
Connect new source
50+ connectors available
{/* AI ETL suggestions */}
AI-suggested integrations 3 new
• Join gem_transactions.vendor_idvendor_master.id98% confidence
• Detected schema drift on mssql-legacy.tbl_vendors — 2 new columns
oracle-hr connection lost — retry with new credentials or investigate
); } window.SourcesScreen = SourcesScreen;