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:
co-authored by
Claude Opus 4.8
parent
6688ced6b3
commit
88789b3f5c
@@ -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')
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user