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
Sync all
AI Suggest joins
New source
{/* 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 => (
setCat(c)}
style={{ padding: '5px 12px', borderRadius: 6, border: 'none', background: cat === c ? 'var(--panel)' : 'transparent', color: cat === c ? 'var(--ink)' : 'var(--ink-3)', fontSize: 12, fontWeight: cat === c ? 600 : 500, cursor: 'pointer', boxShadow: cat === c ? 'var(--shadow-sm)' : 'none', fontFamily: 'inherit' }}
>{c}
))}
{/* Grid */}
{filtered.map(s => {
const ico = CONNECTOR_ICONS[s.type] || { bg: "#666", char: s.type[0] };
return (
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_id ↔
vendor_master.id —
98% confidence
• Detected schema drift on
mssql-legacy.tbl_vendors — 2 new columns
•
oracle-hr connection lost — retry with new credentials or
investigate
Auto-apply joins
Review changes
);
}
window.SourcesScreen = SourcesScreen;