import { useState, type ReactNode } from 'react'; import type { TopBarProps } from './types.js'; export function TopBar({ user, features = {}, onSignOut, onNavigate, actions, onToggleSidebar, }: TopBarProps): ReactNode { const [menuOpen, setMenuOpen] = useState(false); const handleNav = (href: string) => { setMenuOpen(false); if (onNavigate) onNavigate(href); }; const initials = user ? user.name .split(' ') .map(w => w[0]) .join('') .toUpperCase() .slice(0, 2) : '?'; return (
{/* Left: mobile hamburger */}
{onToggleSidebar && ( )}
{/* Right: actions + user menu */}
{actions} {features.notifications && ( )} {user && (
{menuOpen && (
{user.name}
{user.email}
{features.profile !== false && ( { e.preventDefault(); handleNav('/profile'); }} style={menuItemStyle} > Profile )} {features.billing && ( { e.preventDefault(); handleNav('/billing'); }} style={menuItemStyle} > Billing )} {features.settings !== false && ( { e.preventDefault(); handleNav('/settings'); }} style={menuItemStyle} > Settings )} {onSignOut && ( )}
)}
)}
); } const menuItemStyle: React.CSSProperties = { display: 'block', padding: '10px 16px', fontSize: 14, color: 'var(--color-foreground, #111827)', textDecoration: 'none', cursor: 'pointer', };