HTML; } function renderTopBar(string $title, bool $addBtn = false, string $addId = ''): void { $user = currentUser(); $name = htmlspecialchars($user['display_name'] ?? ''); $btn = $addBtn ? "" : ''; $initial = $name ? strtoupper(substr(strip_tags($name), 0, 1)) : ''; $avatar = $initial ? "{$initial}" : ''; echo << {$avatar}

{$title}

{$btn} HTML; } function renderNav(string $active): void { $pages = [ 'trends' => ['index.php', 'Trends', trendIcon()], 'transactions' => ['transactions.php', 'Recurring', txIcon()], 'oneoff' => ['oneoff.php', 'One-off', oneoffIcon()], 'debts' => ['debts.php', 'Debts', debtIcon()], 'balances' => ['balances.php', 'Balances', balIcon()], 'accounts' => ['accounts.php', 'Accounts', acctIcon()], 'settings' => ['settings.php', 'Settings', settingsIcon()], ]; if (isAdmin()) { $pages['admin'] = ['admin.php', 'Admin', adminIcon()]; } echo ''; } // ── Icons ───────────────────────────────────── function trendIcon(): string { return ''; } function txIcon(): string { return ''; } function balIcon(): string { return ''; } function acctIcon(): string { return ''; } function debtIcon(): string { return ''; } function oneoffIcon(): string { return ''; } function settingsIcon(): string { return ''; } function adminIcon(): string { return ''; }