diff --git a/client/src/components/SiteHeader.jsx b/client/src/components/SiteHeader.jsx index 16fea82..e8df12f 100644 --- a/client/src/components/SiteHeader.jsx +++ b/client/src/components/SiteHeader.jsx @@ -1,27 +1,37 @@ -import { Link } from 'react-router-dom' +import { Link, NavLink } from 'react-router-dom' import MoonDot from './MoonDot.jsx' +import { useAuth } from '../contexts/AuthContext.jsx' -const NAV = { - website: [ - { label: 'Shard', to: '/site/shard' }, - { label: 'News', to: '/site/news' }, - { label: 'Screenshots', to: '/site/screenshots' }, - { label: 'Five on Friday', to: '/site/five-on-friday' }, - { label: 'Newsletter', to: '/site/newsletter' }, - { label: 'About', to: '/site/about' }, - { label: 'Wiki', to: '/wiki' }, - ], - wiki: [ - { label: 'Website', to: '/site' }, - { label: 'New Player Guide', to: '/wiki/new-player-guide' }, - { label: 'Maps & Atlas', to: '/wiki/maps-atlas' }, - { label: 'Systems', to: '/wiki/systems' }, - { label: 'Rules', to: '/wiki/rules' }, - ], -} +// One consistent top nav for the whole public site. Every page gets the same +// main links plus an auth-aware entry on the right (Sign in / My Account / Admin). +const NAV = [ + { label: 'Home', to: '/', end: true }, + { label: 'News', to: '/site/news' }, + { label: 'Screenshots', to: '/site/screenshots' }, + { label: 'Five on Friday', to: '/site/five-on-friday' }, + { label: 'Newsletter', to: '/site/newsletter' }, + { label: 'Wiki', to: '/wiki' }, + { label: 'Shard', to: '/site/shard' }, + { label: 'About', to: '/site/about' }, +] + +const linkStyle = ({ isActive }) => ({ + background: isActive ? 'var(--accent)' : undefined, + color: isActive ? 'var(--bg-deep)' : undefined, + borderColor: isActive ? 'var(--accent)' : undefined, +}) + +export default function SiteHeader() { + const { user, loading } = useAuth() + + // Where the auth entry points: staff → admin, player → portal, else sign in. + const account = + user && user.role && user.role !== 'player' + ? { label: 'Admin', to: '/admin' } + : user + ? { label: 'My Account', to: '/player' } + : { label: 'Sign in', to: '/account/login' } -export default function SiteHeader({ section = 'website' }) { - const links = NAV[section] || NAV.website return (
UOMysticmoon
diff --git a/client/src/routes/public/Portal.jsx b/client/src/routes/public/Portal.jsx index 9cf1fd6..1851b35 100644 --- a/client/src/routes/public/Portal.jsx +++ b/client/src/routes/public/Portal.jsx @@ -40,7 +40,7 @@ export default function Portal() { const elements = [...layout.elements].sort((a, b) => (a.z || 0) - (b.z || 0)) return ( - +
{PREVIEW && draft && (