import React, { useEffect, useState } from 'react'; import { Num, AssetRow, PipelineTrace, Sparkline } from '../components/ui/index'; interface Props { balance: { sol: number; usdt: number }; publicKey: string | null; onRefresh: () => void; onNavigate: (p: any) => void; } export default function Dashboard({ balance, publicKey, onRefresh, onNavigate }: Props) { const [txs, setTxs] = useState([]); const [aiStatus, setAiStatus] = useState(null); useEffect(() => { if (!window.solvox) return; Promise.all([window.solvox.wallet.getHistory(5), window.solvox.ai.getStatus()]) .then(([h, s]) => { if (h.success) setTxs(h.history || []); setAiStatus(s); }).catch(() => {}); }, []); const total = balance.sol * 170 + balance.usdt; const mods = aiStatus ? [ { k: 'llm', n: 'LLM', p: '@qvac/llm-llamacpp' }, { k: 'transcription', n: 'Speech-to-Text', p: '@qvac/transcription-whispercpp' }, { k: 'tts', n: 'Text-to-Speech', p: '@qvac/tts-onnx' }, { k: 'embed', n: 'Embeddings', p: '@qvac/embed-llamacpp' }, { k: 'translation', n: 'Translation', p: '@qvac/translation-nmtcpp' }, { k: 'ocr', n: 'OCR', p: '@qvac/ocr-onnx' }, ] : []; return (
{/* ── Hero Band ──────────────────────────────────────────────── */}
Total portfolio value
{/* Floating product-UI card — Coinbase signature */}
SOL Balance
≈ $
USDT Balance
{/* ── Assets ─────────────────────────────────────────────────── */}
Assets
Solana
SOL
${(balance.sol * 170).toLocaleString(undefined, { minimumFractionDigits: 2 })}
+2.34%
Tether
USDT
${balance.usdt.toLocaleString(undefined, { minimumFractionDigits: 2 })}
+0.01%
{/* ── AI Engine + Transactions ──────────────────────────────── */}
QVAC AI Engine
{mods.map(m => (
{m.n}
{m.p}
{(aiStatus as any)?.[m.k] ? 'ACTIVE' : 'LOADING'}
))}
All inference runs 100% locally via QVAC Fabric (Vulkan GPU)
Recent activity
{txs.length === 0 ? (
No transactions yet
Try "Send 1 SOL to…"
) : txs.map((tx, i) => (
{tx.status === 'success' ? '✓' : '✗'}
{tx.signature?.slice(0, 16)}…
{tx.timestamp ? new Date(tx.timestamp).toLocaleDateString() : '—'}
{tx.status}
))}
{/* ── Wallet Address ────────────────────────────────────────── */}
Wallet address
{publicKey || '—'}
); }