chore: initial import

This commit is contained in:
u1
2026-01-06 12:33:47 +01:00
commit ed37565e25
38 changed files with 5707 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
import type { ReactNode } from 'react';
import Button from '../ui/Button';
type NavId = 'portfolio' | 'trade' | 'earn' | 'vaults' | 'leaderboard' | 'more';
const navItems: Array<{ id: NavId; label: string }> = [
{ id: 'portfolio', label: 'Portfolio' },
{ id: 'trade', label: 'Trade' },
{ id: 'earn', label: 'Earn' },
{ id: 'vaults', label: 'Vaults' },
{ id: 'leaderboard', label: 'Leaderboard' },
{ id: 'more', label: 'More' },
];
type Props = {
active?: NavId;
onSelect?: (id: NavId) => void;
rightSlot?: ReactNode;
};
export default function TopNav({ active = 'trade', onSelect, rightSlot }: Props) {
return (
<header className="topNav">
<div className="topNav__left">
<div className="topNav__brand" aria-label="Drift">
<div className="topNav__brandMark" aria-hidden="true" />
<div className="topNav__brandName">Drift</div>
</div>
<nav className="topNav__menu" aria-label="Primary">
{navItems.map((it) => (
<button
key={it.id}
type="button"
className={['topNav__link', active === it.id ? 'topNav__link--active' : ''].filter(Boolean).join(' ')}
onClick={() => onSelect?.(it.id)}
>
{it.label}
</button>
))}
</nav>
</div>
<div className="topNav__right">
{rightSlot ?? (
<>
<Button size="sm" variant="primary" type="button">
Deposit
</Button>
<button className="topNav__iconBtn" type="button" aria-label="Settings">
</button>
<div className="topNav__account">
<div className="topNav__accountName">Main Account</div>
<div className="topNav__accountSub">visualizer</div>
</div>
</>
)}
</div>
</header>
);
}