UI fixes: onboarding scroll, expertise tags, jury assignments view

- Fix onboarding card overflow (overflow-hidden → overflow-x-hidden) so
  expertise step can scroll to submit button
- Reduce expertise category list height (max-h-64 → max-h-48)
- Add color dots to expertise tag options matching admin display
- Single-column layout for expertise tags (no truncation)
- Ocean background on onboarding (matches email template)
- Rewrite jury competitions page as assignment-centric grouped by round
- Conditionally show Awards nav item only when juror has award assignments

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt
2026-02-17 11:48:14 +01:00
parent a006c6505c
commit f9016168e7
4 changed files with 128 additions and 59 deletions

View File

@@ -1,6 +1,6 @@
'use client'
import { BookOpen, Home, Trophy, Layers } from 'lucide-react'
import { BookOpen, Home, Trophy, ClipboardList } from 'lucide-react'
import { RoleNav, type NavItem, type RoleNavUser } from '@/components/layouts/role-nav'
import { trpc } from '@/lib/trpc/client'
import { Badge } from '@/components/ui/badge'
@@ -42,6 +42,11 @@ function RemainingBadge() {
}
export function JuryNav({ user }: JuryNavProps) {
const { data: myAwards } = trpc.specialAward.getMyAwards.useQuery(
undefined,
{ refetchInterval: 60000 }
)
const navigation: NavItem[] = [
{
name: 'Dashboard',
@@ -49,15 +54,19 @@ export function JuryNav({ user }: JuryNavProps) {
icon: Home,
},
{
name: 'Competitions',
name: 'Assignments',
href: '/jury/competitions',
icon: Layers,
},
{
name: 'Awards',
href: '/jury/awards',
icon: Trophy,
icon: ClipboardList,
},
...(myAwards && myAwards.length > 0
? [
{
name: 'Awards',
href: '/jury/awards',
icon: Trophy,
},
]
: []),
{
name: 'Learning Hub',
href: '/jury/learning',

View File

@@ -182,7 +182,7 @@ export function ExpertiseSelect({
)}
{/* Categories with expandable tag lists */}
<div className="space-y-2 max-h-64 overflow-y-auto pr-1">
<div className="space-y-2 max-h-48 overflow-y-auto pr-1">
{Object.entries(filteredTagsByCategory)
.sort(([a], [b]) => a.localeCompare(b))
.map(([category, categoryTags]) => {
@@ -261,6 +261,10 @@ export function ExpertiseSelect({
<Check className="h-2 w-2 text-white" />
))}
</div>
<span
className="h-2.5 w-2.5 rounded-full shrink-0 mr-1.5"
style={{ backgroundColor: tag.color || '#6b7280' }}
/>
<span className="text-xs">{tag.name}</span>
</Button>
)