diff --git a/client/components/CommandPalette.jsx b/client/components/CommandPalette.jsx index 490a4a0..22d5201 100644 --- a/client/components/CommandPalette.jsx +++ b/client/components/CommandPalette.jsx @@ -3,6 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { BarChart2, Calendar, CreditCard, Loader2, Navigation, Plus, Receipt, Search, Settings, Snowflake, Tag, Upload, User, X, + Landmark, ArrowRightLeft, Download, } from 'lucide-react'; import { toast } from 'sonner'; import { api } from '@/api'; @@ -28,6 +29,10 @@ const NAV_COMMANDS = [ { id: 'nav-snowball', label: 'Go to Snowball', icon: Snowflake, path: '/snowball', group: 'Navigate' }, { id: 'nav-categories', label: 'Go to Categories', icon: Tag, path: '/categories', group: 'Navigate' }, { id: 'nav-data', label: 'Go to Data', icon: Upload, path: '/data', group: 'Navigate' }, + { id: 'nav-data-bank', label: 'Data: Bank sync', icon: Landmark, path: '/data?section=bank-sync', group: 'Navigate' }, + { id: 'nav-data-tx', label: 'Data: Transactions', icon: ArrowRightLeft, path: '/data?section=transactions', group: 'Navigate' }, + { id: 'nav-data-import', label: 'Data: Import', icon: Upload, path: '/data?section=import', group: 'Navigate' }, + { id: 'nav-data-export', label: 'Data: Export & backups', icon: Download, path: '/data?section=export', group: 'Navigate' }, { id: 'nav-settings', label: 'Go to Settings', icon: Settings, path: '/settings', group: 'Navigate' }, { id: 'nav-profile', label: 'Go to Profile', icon: User, path: '/profile', group: 'Navigate' }, { id: 'action-new-bill', label: 'Add a new bill', icon: Plus, path: '/bills?new=1', group: 'Actions' }, diff --git a/client/components/data/ConnectionHero.jsx b/client/components/data/ConnectionHero.jsx index 4c0745d..be03f67 100644 --- a/client/components/data/ConnectionHero.jsx +++ b/client/components/data/ConnectionHero.jsx @@ -55,6 +55,7 @@ export default function ConnectionHero({ enabled, // status.enabled (server feature flag) hasConnections, // status.has_connections conn, // the simplefin data_source (name, last_sync_at, last_error) or null + txnTotal, // total synced transactions (at-a-glance), or null onRetry, onGoTo, // (sectionId) => void onSynced, // () => void — refresh after a successful sync @@ -160,7 +161,14 @@ export default function ConnectionHero({
{needsAttention ? conn.last_error - : <>{conn.name || 'SimpleFIN'}{synced ? <> · synced {synced}> : null} · syncs automatically>} + : ( + <> + {conn.name || 'SimpleFIN'} + {Number(txnTotal) > 0 ? <> · {Number(txnTotal).toLocaleString('en-US')} transactions> : null} + {synced ? <> · synced {synced}> : null} + {' · syncs automatically'} + > + )}