@@ -55,6 +55,12 @@ const accentClasses: Record<CandidatePosition['accent'], string> = {
5555const completedAccentClass =
5656 'border-emerald-300/35 bg-[radial-gradient(circle_at_top,rgba(52,211,153,0.18),transparent_62%),rgba(255,255,255,0.03)]'
5757
58+ const ChallengeSectionTitle : React . FC < { title : string } > = ( { title } ) => (
59+ < div className = "md:col-span-2 xl:col-span-3" >
60+ < p className = "text-sm uppercase tracking-[0.24em] text-white/40" > { title } </ p >
61+ </ div >
62+ )
63+
5864const PositionBoard : React . FC < {
5965 position : CandidatePosition
6066 completed ?: boolean
@@ -184,10 +190,6 @@ export default function CandidatesPage() {
184190 const [ completedChallengeIds , setCompletedChallengeIds ] = useState < string [ ] > (
185191 [ ] ,
186192 )
187- const positions = useMemo (
188- ( ) => [ ...CANDIDATES_FEATURED_POSITIONS , ...CANDIDATES_WARMUP_POSITIONS ] ,
189- [ ] ,
190- )
191193 const completedChallengeId =
192194 typeof router . query . completedChallenge === 'string'
193195 ? router . query . completedChallenge
@@ -242,7 +244,7 @@ export default function CandidatesPage() {
242244 FIDE Candidates Tournament 2026
243245 </ h1 >
244246 < p className = "mt-2 text-sm uppercase tracking-[0.2em] text-white/45" >
245- Round 1
247+ Round 2
246248 </ p >
247249 < div className = "mt-4 flex flex-wrap gap-3" >
248250 < Link
@@ -265,13 +267,30 @@ export default function CandidatesPage() {
265267 </ a >
266268 </ div >
267269 </ header >
268- { positions . map ( ( position ) => (
269- < PositionPill
270- key = { position . id }
271- position = { position }
272- completed = { completedChallengeIds . includes ( position . id ) }
273- />
274- ) ) }
270+ { CANDIDATES_FEATURED_POSITIONS . length > 0 ? (
271+ < >
272+ < ChallengeSectionTitle title = "Round 2 Challenges" />
273+ { CANDIDATES_FEATURED_POSITIONS . map ( ( position ) => (
274+ < PositionPill
275+ key = { position . id }
276+ position = { position }
277+ completed = { completedChallengeIds . includes ( position . id ) }
278+ />
279+ ) ) }
280+ </ >
281+ ) : null }
282+ { CANDIDATES_WARMUP_POSITIONS . length > 0 ? (
283+ < >
284+ < ChallengeSectionTitle title = "Round 1 Challenges" />
285+ { CANDIDATES_WARMUP_POSITIONS . map ( ( position ) => (
286+ < PositionPill
287+ key = { position . id }
288+ position = { position }
289+ completed = { completedChallengeIds . includes ( position . id ) }
290+ />
291+ ) ) }
292+ </ >
293+ ) : null }
275294 </ div >
276295 </ main >
277296 </ >
0 commit comments