chore(balance): post-merge cleanup of #182-#185 reviews (#187) #195

Merged
maximus merged 7 commits from issue-187-balance-cleanup-post-184-185 into main 2026-05-03 23:42:15 +00:00
Showing only changes of commit 372a785834 - Show all commits

View file

@ -173,26 +173,32 @@ export default function BalancePage() {
</div> </div>
)} )}
<div className="space-y-6"> {/* Issue #178 — empty-state guard. We probe accountsLatest for ANY
snapshot date so the guard is independent of the active period
filter (state.period). When empty, we render only the onboarding
card — period selector, chart and accounts table would all show
empty states stacked under it (S2 from #187). */}
{(() => { {(() => {
// Issue #178 — show a 2-step onboarding card while the user has no
// accounts or no snapshots yet. We probe accountsLatest for ANY
// snapshot date so the empty-state guard is independent of the
// active period filter (state.period).
const accountsCount = state.accountsLatest.length; const accountsCount = state.accountsLatest.length;
const hasAnySnapshot = state.accountsLatest.some( const hasAnySnapshot = state.accountsLatest.some(
(a) => a.latest_snapshot_date != null (a) => a.latest_snapshot_date != null
); );
if (accountsCount === 0 || !hasAnySnapshot) { const isEmpty = accountsCount === 0 || !hasAnySnapshot;
if (isEmpty) {
return ( return (
<div className="space-y-6">
<BalanceOnboardingCard <BalanceOnboardingCard
accountsCount={accountsCount} accountsCount={accountsCount}
snapshotsCount={hasAnySnapshot ? 1 : 0} snapshotsCount={hasAnySnapshot ? 1 : 0}
/> />
</div>
); );
} }
return <BalanceOverviewCard totals={state.evolutionTotals} />;
})()} return (
<div className="space-y-6">
<BalanceOverviewCard totals={state.evolutionTotals} />
<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3"> <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3">
{/* Period selector */} {/* Period selector */}
@ -263,6 +269,8 @@ export default function BalancePage() {
/> />
</div> </div>
</div> </div>
);
})()}
<StarterAccountsModal <StarterAccountsModal
isOpen={showStarterModal} isOpen={showStarterModal}