feat(web): add staff sign-in entrance (judge / instructor) to landing

The landing page only routed attendees; /judge and /admin were
unlinked. Add a subtle "Staff sign-in ▾" disclosure in the header
linking to the judge and instructor consoles (both already gated by
AccessGate). Attendee hero is unchanged.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Omar Sobh
2026-07-06 15:24:18 -07:00
co-authored by Claude Opus 4.8
parent 6688ced6b3
commit 88789b3f5c
2 changed files with 25 additions and 0 deletions
+6
View File
@@ -33,6 +33,12 @@ describe('Landing', () => {
ctas.forEach((cta) => expect(cta).toHaveAttribute('href', '/workshop')) ctas.forEach((cta) => expect(cta).toHaveAttribute('href', '/workshop'))
}) })
it('exposes staff sign-in entrances for judge and instructor', () => {
renderLanding()
expect(screen.getByRole('link', { name: /judge/i })).toHaveAttribute('href', '/judge')
expect(screen.getByRole('link', { name: /instructor/i })).toHaveAttribute('href', '/admin')
})
it('lists the programme timeline with at least 5 phases', () => { it('lists the programme timeline with at least 5 phases', () => {
renderLanding() renderLanding()
const programme = screen.getByTestId('programme') const programme = screen.getByTestId('programme')
+19
View File
@@ -44,6 +44,25 @@ export function Landing() {
<Link to="/lecture" className="font-mono text-[11px] text-muted-foreground hover:text-foreground tracking-widest uppercase"> <Link to="/lecture" className="font-mono text-[11px] text-muted-foreground hover:text-foreground tracking-widest uppercase">
Lecture Lecture
</Link> </Link>
<details className="relative group [&_summary::-webkit-details-marker]:hidden">
<summary className="list-none cursor-pointer select-none font-mono text-[11px] text-muted-foreground hover:text-foreground tracking-widest uppercase">
Staff sign-in ▾
</summary>
<div className="absolute right-0 mt-2 w-40 rounded-md border border-border bg-background shadow-md py-1 z-50">
<Link
to="/judge"
className="block px-3 py-2 font-mono text-[11px] text-muted-foreground hover:text-foreground hover:bg-secondary/60 tracking-widest uppercase"
>
Judge
</Link>
<Link
to="/admin"
className="block px-3 py-2 font-mono text-[11px] text-muted-foreground hover:text-foreground hover:bg-secondary/60 tracking-widest uppercase"
>
Instructor
</Link>
</div>
</details>
<Button asChild size="sm"> <Button asChild size="sm">
<Link to="/workshop">Enter workshop →</Link> <Link to="/workshop">Enter workshop →</Link>
</Button> </Button>