Skip to content

Commit 1881267

Browse files
Guillaumeclaude
andcommitted
refactor(nav): re-nest /synthesis et /citations,/commendations sous leur section (Phase 2)
- Synthese sous Solo (/stats/synthesis) ; Citations + Commendations sous Carriere (/career/citations, /career/commendations) — coherence d'imbrication par section - Anciennes URLs redirigees (beforeLoad redirect) - Nav alignee : navL1Sections (onglets Solo/Carriere), NavL2 (CAREER_TABS + detection section ; Synthese exclue de la barre filtres NavL2 car gere ses propres pills), pageTitle, shellNavigation, classifyFeedback (regex legacy + nouveau chemin) - routeTree.gen regenere Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ae6a615 commit 1881267

12 files changed

Lines changed: 133 additions & 38 deletions

File tree

apps/web/src/components/shell/NavL2.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const COMMUNITY_LEADERBOARD_PATH = '/players/$playerSlug/community'
2727

2828
const CAREER_TABS = [
2929
{ label: 'Progression', path: '/players/$playerSlug/career' },
30-
{ label: 'Citations', path: '/players/$playerSlug/citations' },
30+
{ label: 'Citations', path: '/players/$playerSlug/career/citations' },
3131
{ label: 'Pass saisonnier', path: '/players/$playerSlug/career/season-pass' },
3232
] as const
3333

@@ -43,7 +43,7 @@ const CAREER_TABS_H5 = [
4343
{ label: 'Progression', path: '/players/$playerSlug/career' },
4444
// Halo 5 : commendations natives, libellé FR « Citations » (terme officiel Halo
4545
// FR, cohérent avec Infinite et l'onglet L1).
46-
{ label: 'Citations', path: '/players/$playerSlug/commendations' },
46+
{ label: 'Citations', path: '/players/$playerSlug/career/commendations' },
4747
] as const
4848

4949
// Communauté : aligné sur le dropdown L1 (NavL1 section 'community'). Face-à-face
@@ -63,6 +63,8 @@ const PERSONAL_STATS_RE = /\/players\/[^/]+\/stats\/(summary|maps-modes|distribu
6363

6464
function detectSection(pathname: string): ActiveSection {
6565
if (PERSONAL_STATS_RE.test(pathname)) return null
66+
// Synthèse gère sa propre barre de filtres (PeriodePill/SaisonPill) → pas de NavL2.
67+
if (/\/players\/[^/]+\/stats\/synthesis/.test(pathname)) return null
6668
if (/\/players\/[^/]+\/stats\//.test(pathname)) return 'stats'
6769
if (/\/players\/[^/]+\/squad/.test(pathname)) return 'squad'
6870
if (/\/players\/[^/]+\/(career|citations|commendations)/.test(pathname)) return 'career'

apps/web/src/components/shell/navL1Sections.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const L1_SECTIONS: L1Section[] = [
8484
defaultPath: '/players/$playerSlug/stats/timeseries',
8585
matchPathname: (p) => /\/players\/[^/]+\/(stats\/|synthesis)/.test(p),
8686
tabs: [
87-
{ key: 'synthesis', label: 'Synthèse', path: '/players/$playerSlug/synthesis' },
87+
{ key: 'synthesis', label: 'Synthèse', path: '/players/$playerSlug/stats/synthesis' },
8888
{ key: 'timeseries', label: 'Séries temporelles', path: '/players/$playerSlug/stats/timeseries' },
8989
{ key: 'sessions', label: 'Sessions', path: '/players/$playerSlug/stats/sessions' },
9090
],
@@ -107,7 +107,7 @@ export const L1_SECTIONS: L1Section[] = [
107107
matchPathname: (p) => /\/players\/[^/]+\/(career|citations|profile)/.test(p),
108108
tabs: [
109109
{ key: 'progression', label: 'Progression', path: '/players/$playerSlug/career' },
110-
{ key: 'citations', label: 'Citations', path: '/players/$playerSlug/citations' },
110+
{ key: 'citations', label: 'Citations', path: '/players/$playerSlug/career/citations' },
111111
{
112112
key: 'season-pass',
113113
label: 'Pass saisonnier',

apps/web/src/components/shell/shellNavigation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export const PLAYER_SECONDARY_NAV_ITEMS: ShellNavItem[] = [
5757
description: 'Approfondir, filtrer et descendre dans le détail.',
5858
},
5959
{
60-
to: '/players/$playerSlug/synthesis',
60+
to: '/players/$playerSlug/stats/synthesis',
6161
label: 'Synthèse',
6262
eyebrow: 'Recap',
6363
description: 'Vue consolidée et transversale.',

apps/web/src/features/feedback-drawer/classifyFeedback.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export function classifyFeedback(
9898
}
9999

100100
const AREA_PATTERNS: Array<[RegExp, FeedbackArea]> = [
101-
[/\/players\/[^/]+\/synthesis(\/|$|\?)/, 'synthesis'],
101+
[/\/players\/[^/]+\/(stats\/)?synthesis(\/|$|\?)/, 'synthesis'],
102102
[/\/players\/[^/]+\/explorer(\/|$|\?)/, 'explorer'],
103103
[/\/players\/[^/]+\/squad(\/|$|\?)/, 'squad'],
104104
[/\/players\/[^/]+\/stats\/sessions(\/|$|\?)/, 'sessions'],
@@ -107,7 +107,7 @@ const AREA_PATTERNS: Array<[RegExp, FeedbackArea]> = [
107107
[/\/players\/[^/]+\/(community|palmares)/, 'palmares'],
108108
[/\/players\/[^/]+\/home(\/|$|\?)/, 'player_home'],
109109
[/\/players\/[^/]+\/media(\/|$|\?)/, 'media'],
110-
[/\/players\/[^/]+\/citations(\/|$|\?)/, 'citations'],
110+
[/\/players\/[^/]+\/(career\/)?citations(\/|$|\?)/, 'citations'],
111111
[/\/players\/[^/]+\/career(\/|$|\?)/, 'career'],
112112
[/\/players\/[^/]+\/notifications(\/|$|\?)/, 'notifications'],
113113
[/\/players\/[^/]+\/(objectifs|ascension)(\/|$|\?)/, 'objectifs'],

apps/web/src/lib/pageTitle.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ const PLAYER_ROUTE_OVERRIDES: RouteTitleRule[] = [
1313
// Solo
1414
{ pattern: '/players/$playerSlug/stats/timeseries', title: 'Séries temporelles' },
1515
{ pattern: '/players/$playerSlug/stats/sessions', title: 'Sessions' },
16+
{ pattern: '/players/$playerSlug/stats/synthesis', title: 'Synthèse' },
1617
{ pattern: '/players/$playerSlug/stats', title: 'Solo' },
1718
// Carrière
1819
{ pattern: '/players/$playerSlug/career/season-pass', title: 'Pass saisonnier' },
1920
{ pattern: '/players/$playerSlug/career', title: 'Carrière' },
20-
{ pattern: '/players/$playerSlug/citations', title: 'Citations' },
21+
{ pattern: '/players/$playerSlug/career/citations', title: 'Citations' },
22+
{ pattern: '/players/$playerSlug/career/commendations', title: 'Citations' },
2123
// Communauté / Palmarès
2224
{ pattern: '/players/$playerSlug/community/compare', title: 'Face-à-face' },
2325
{ pattern: '/players/$playerSlug/community/relations', title: 'Relations' },

apps/web/src/routeTree.gen.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import { Route as PlayersPlayerSlugExplorerIndexRouteImport } from './routes/pla
4949
import { Route as PlayersPlayerSlugCommunityIndexRouteImport } from './routes/players/$playerSlug/community/index'
5050
import { Route as PlayersPlayerSlugAscensionIndexRouteImport } from './routes/players/$playerSlug/ascension/index'
5151
import { Route as PlayersPlayerSlugStatsTimeseriesRouteImport } from './routes/players/$playerSlug/stats/timeseries'
52+
import { Route as PlayersPlayerSlugStatsSynthesisRouteImport } from './routes/players/$playerSlug/stats/synthesis'
5253
import { Route as PlayersPlayerSlugStatsSessionsRouteImport } from './routes/players/$playerSlug/stats/sessions'
5354
import { Route as PlayersPlayerSlugSquadSynergiesRouteImport } from './routes/players/$playerSlug/squad/synergies'
5455
import { Route as PlayersPlayerSlugSquadContributionsRouteImport } from './routes/players/$playerSlug/squad/contributions'
@@ -59,6 +60,8 @@ import { Route as PlayersPlayerSlugCommunityRelationsRouteImport } from './route
5960
import { Route as PlayersPlayerSlugCommunityPrestigeRouteImport } from './routes/players/$playerSlug/community/prestige'
6061
import { Route as PlayersPlayerSlugCommunityCompareRouteImport } from './routes/players/$playerSlug/community/compare'
6162
import { Route as PlayersPlayerSlugCareerSeasonPassRouteImport } from './routes/players/$playerSlug/career/season-pass'
63+
import { Route as PlayersPlayerSlugCareerCommendationsRouteImport } from './routes/players/$playerSlug/career/commendations'
64+
import { Route as PlayersPlayerSlugCareerCitationsRouteImport } from './routes/players/$playerSlug/career/citations'
6265
import { Route as PlayersPlayerSlugAscensionRealisationsRouteImport } from './routes/players/$playerSlug/ascension/realisations'
6366
import { Route as PlayersPlayerSlugAscensionCoachingRouteImport } from './routes/players/$playerSlug/ascension/coaching'
6467
import { Route as PlayersPlayerSlugMatchesMatchIdReplayRouteImport } from './routes/players/$playerSlug/matches/$matchId/replay'
@@ -277,6 +280,12 @@ const PlayersPlayerSlugStatsTimeseriesRoute =
277280
path: '/stats/timeseries',
278281
getParentRoute: () => PlayersPlayerSlugRoute,
279282
} as any)
283+
const PlayersPlayerSlugStatsSynthesisRoute =
284+
PlayersPlayerSlugStatsSynthesisRouteImport.update({
285+
id: '/stats/synthesis',
286+
path: '/stats/synthesis',
287+
getParentRoute: () => PlayersPlayerSlugRoute,
288+
} as any)
280289
const PlayersPlayerSlugStatsSessionsRoute =
281290
PlayersPlayerSlugStatsSessionsRouteImport.update({
282291
id: '/stats/sessions',
@@ -337,6 +346,18 @@ const PlayersPlayerSlugCareerSeasonPassRoute =
337346
path: '/career/season-pass',
338347
getParentRoute: () => PlayersPlayerSlugRoute,
339348
} as any)
349+
const PlayersPlayerSlugCareerCommendationsRoute =
350+
PlayersPlayerSlugCareerCommendationsRouteImport.update({
351+
id: '/career/commendations',
352+
path: '/career/commendations',
353+
getParentRoute: () => PlayersPlayerSlugRoute,
354+
} as any)
355+
const PlayersPlayerSlugCareerCitationsRoute =
356+
PlayersPlayerSlugCareerCitationsRouteImport.update({
357+
id: '/career/citations',
358+
path: '/career/citations',
359+
getParentRoute: () => PlayersPlayerSlugRoute,
360+
} as any)
340361
const PlayersPlayerSlugAscensionRealisationsRoute =
341362
PlayersPlayerSlugAscensionRealisationsRouteImport.update({
342363
id: '/realisations',
@@ -391,6 +412,8 @@ export interface FileRoutesByFullPath {
391412
'/players/$playerSlug/synthesis': typeof PlayersPlayerSlugSynthesisRoute
392413
'/players/$playerSlug/ascension/coaching': typeof PlayersPlayerSlugAscensionCoachingRoute
393414
'/players/$playerSlug/ascension/realisations': typeof PlayersPlayerSlugAscensionRealisationsRoute
415+
'/players/$playerSlug/career/citations': typeof PlayersPlayerSlugCareerCitationsRoute
416+
'/players/$playerSlug/career/commendations': typeof PlayersPlayerSlugCareerCommendationsRoute
394417
'/players/$playerSlug/career/season-pass': typeof PlayersPlayerSlugCareerSeasonPassRoute
395418
'/players/$playerSlug/community/compare': typeof PlayersPlayerSlugCommunityCompareRoute
396419
'/players/$playerSlug/community/prestige': typeof PlayersPlayerSlugCommunityPrestigeRoute
@@ -401,6 +424,7 @@ export interface FileRoutesByFullPath {
401424
'/players/$playerSlug/squad/contributions': typeof PlayersPlayerSlugSquadContributionsRoute
402425
'/players/$playerSlug/squad/synergies': typeof PlayersPlayerSlugSquadSynergiesRoute
403426
'/players/$playerSlug/stats/sessions': typeof PlayersPlayerSlugStatsSessionsRoute
427+
'/players/$playerSlug/stats/synthesis': typeof PlayersPlayerSlugStatsSynthesisRoute
404428
'/players/$playerSlug/stats/timeseries': typeof PlayersPlayerSlugStatsTimeseriesRoute
405429
'/players/$playerSlug/ascension/': typeof PlayersPlayerSlugAscensionIndexRoute
406430
'/players/$playerSlug/community/': typeof PlayersPlayerSlugCommunityIndexRoute
@@ -443,6 +467,8 @@ export interface FileRoutesByTo {
443467
'/players/$playerSlug/synthesis': typeof PlayersPlayerSlugSynthesisRoute
444468
'/players/$playerSlug/ascension/coaching': typeof PlayersPlayerSlugAscensionCoachingRoute
445469
'/players/$playerSlug/ascension/realisations': typeof PlayersPlayerSlugAscensionRealisationsRoute
470+
'/players/$playerSlug/career/citations': typeof PlayersPlayerSlugCareerCitationsRoute
471+
'/players/$playerSlug/career/commendations': typeof PlayersPlayerSlugCareerCommendationsRoute
446472
'/players/$playerSlug/career/season-pass': typeof PlayersPlayerSlugCareerSeasonPassRoute
447473
'/players/$playerSlug/community/compare': typeof PlayersPlayerSlugCommunityCompareRoute
448474
'/players/$playerSlug/community/prestige': typeof PlayersPlayerSlugCommunityPrestigeRoute
@@ -453,6 +479,7 @@ export interface FileRoutesByTo {
453479
'/players/$playerSlug/squad/contributions': typeof PlayersPlayerSlugSquadContributionsRoute
454480
'/players/$playerSlug/squad/synergies': typeof PlayersPlayerSlugSquadSynergiesRoute
455481
'/players/$playerSlug/stats/sessions': typeof PlayersPlayerSlugStatsSessionsRoute
482+
'/players/$playerSlug/stats/synthesis': typeof PlayersPlayerSlugStatsSynthesisRoute
456483
'/players/$playerSlug/stats/timeseries': typeof PlayersPlayerSlugStatsTimeseriesRoute
457484
'/players/$playerSlug/ascension': typeof PlayersPlayerSlugAscensionIndexRoute
458485
'/players/$playerSlug/community': typeof PlayersPlayerSlugCommunityIndexRoute
@@ -499,6 +526,8 @@ export interface FileRoutesById {
499526
'/players/$playerSlug/synthesis': typeof PlayersPlayerSlugSynthesisRoute
500527
'/players/$playerSlug/ascension/coaching': typeof PlayersPlayerSlugAscensionCoachingRoute
501528
'/players/$playerSlug/ascension/realisations': typeof PlayersPlayerSlugAscensionRealisationsRoute
529+
'/players/$playerSlug/career/citations': typeof PlayersPlayerSlugCareerCitationsRoute
530+
'/players/$playerSlug/career/commendations': typeof PlayersPlayerSlugCareerCommendationsRoute
502531
'/players/$playerSlug/career/season-pass': typeof PlayersPlayerSlugCareerSeasonPassRoute
503532
'/players/$playerSlug/community/compare': typeof PlayersPlayerSlugCommunityCompareRoute
504533
'/players/$playerSlug/community/prestige': typeof PlayersPlayerSlugCommunityPrestigeRoute
@@ -509,6 +538,7 @@ export interface FileRoutesById {
509538
'/players/$playerSlug/squad/contributions': typeof PlayersPlayerSlugSquadContributionsRoute
510539
'/players/$playerSlug/squad/synergies': typeof PlayersPlayerSlugSquadSynergiesRoute
511540
'/players/$playerSlug/stats/sessions': typeof PlayersPlayerSlugStatsSessionsRoute
541+
'/players/$playerSlug/stats/synthesis': typeof PlayersPlayerSlugStatsSynthesisRoute
512542
'/players/$playerSlug/stats/timeseries': typeof PlayersPlayerSlugStatsTimeseriesRoute
513543
'/players/$playerSlug/ascension/': typeof PlayersPlayerSlugAscensionIndexRoute
514544
'/players/$playerSlug/community/': typeof PlayersPlayerSlugCommunityIndexRoute
@@ -556,6 +586,8 @@ export interface FileRouteTypes {
556586
| '/players/$playerSlug/synthesis'
557587
| '/players/$playerSlug/ascension/coaching'
558588
| '/players/$playerSlug/ascension/realisations'
589+
| '/players/$playerSlug/career/citations'
590+
| '/players/$playerSlug/career/commendations'
559591
| '/players/$playerSlug/career/season-pass'
560592
| '/players/$playerSlug/community/compare'
561593
| '/players/$playerSlug/community/prestige'
@@ -566,6 +598,7 @@ export interface FileRouteTypes {
566598
| '/players/$playerSlug/squad/contributions'
567599
| '/players/$playerSlug/squad/synergies'
568600
| '/players/$playerSlug/stats/sessions'
601+
| '/players/$playerSlug/stats/synthesis'
569602
| '/players/$playerSlug/stats/timeseries'
570603
| '/players/$playerSlug/ascension/'
571604
| '/players/$playerSlug/community/'
@@ -608,6 +641,8 @@ export interface FileRouteTypes {
608641
| '/players/$playerSlug/synthesis'
609642
| '/players/$playerSlug/ascension/coaching'
610643
| '/players/$playerSlug/ascension/realisations'
644+
| '/players/$playerSlug/career/citations'
645+
| '/players/$playerSlug/career/commendations'
611646
| '/players/$playerSlug/career/season-pass'
612647
| '/players/$playerSlug/community/compare'
613648
| '/players/$playerSlug/community/prestige'
@@ -618,6 +653,7 @@ export interface FileRouteTypes {
618653
| '/players/$playerSlug/squad/contributions'
619654
| '/players/$playerSlug/squad/synergies'
620655
| '/players/$playerSlug/stats/sessions'
656+
| '/players/$playerSlug/stats/synthesis'
621657
| '/players/$playerSlug/stats/timeseries'
622658
| '/players/$playerSlug/ascension'
623659
| '/players/$playerSlug/community'
@@ -663,6 +699,8 @@ export interface FileRouteTypes {
663699
| '/players/$playerSlug/synthesis'
664700
| '/players/$playerSlug/ascension/coaching'
665701
| '/players/$playerSlug/ascension/realisations'
702+
| '/players/$playerSlug/career/citations'
703+
| '/players/$playerSlug/career/commendations'
666704
| '/players/$playerSlug/career/season-pass'
667705
| '/players/$playerSlug/community/compare'
668706
| '/players/$playerSlug/community/prestige'
@@ -673,6 +711,7 @@ export interface FileRouteTypes {
673711
| '/players/$playerSlug/squad/contributions'
674712
| '/players/$playerSlug/squad/synergies'
675713
| '/players/$playerSlug/stats/sessions'
714+
| '/players/$playerSlug/stats/synthesis'
676715
| '/players/$playerSlug/stats/timeseries'
677716
| '/players/$playerSlug/ascension/'
678717
| '/players/$playerSlug/community/'
@@ -982,6 +1021,13 @@ declare module '@tanstack/react-router' {
9821021
preLoaderRoute: typeof PlayersPlayerSlugStatsTimeseriesRouteImport
9831022
parentRoute: typeof PlayersPlayerSlugRoute
9841023
}
1024+
'/players/$playerSlug/stats/synthesis': {
1025+
id: '/players/$playerSlug/stats/synthesis'
1026+
path: '/stats/synthesis'
1027+
fullPath: '/players/$playerSlug/stats/synthesis'
1028+
preLoaderRoute: typeof PlayersPlayerSlugStatsSynthesisRouteImport
1029+
parentRoute: typeof PlayersPlayerSlugRoute
1030+
}
9851031
'/players/$playerSlug/stats/sessions': {
9861032
id: '/players/$playerSlug/stats/sessions'
9871033
path: '/stats/sessions'
@@ -1052,6 +1098,20 @@ declare module '@tanstack/react-router' {
10521098
preLoaderRoute: typeof PlayersPlayerSlugCareerSeasonPassRouteImport
10531099
parentRoute: typeof PlayersPlayerSlugRoute
10541100
}
1101+
'/players/$playerSlug/career/commendations': {
1102+
id: '/players/$playerSlug/career/commendations'
1103+
path: '/career/commendations'
1104+
fullPath: '/players/$playerSlug/career/commendations'
1105+
preLoaderRoute: typeof PlayersPlayerSlugCareerCommendationsRouteImport
1106+
parentRoute: typeof PlayersPlayerSlugRoute
1107+
}
1108+
'/players/$playerSlug/career/citations': {
1109+
id: '/players/$playerSlug/career/citations'
1110+
path: '/career/citations'
1111+
fullPath: '/players/$playerSlug/career/citations'
1112+
preLoaderRoute: typeof PlayersPlayerSlugCareerCitationsRouteImport
1113+
parentRoute: typeof PlayersPlayerSlugRoute
1114+
}
10551115
'/players/$playerSlug/ascension/realisations': {
10561116
id: '/players/$playerSlug/ascension/realisations'
10571117
path: '/realisations'
@@ -1167,6 +1227,8 @@ interface PlayersPlayerSlugRouteChildren {
11671227
PlayersPlayerSlugNotificationsRoute: typeof PlayersPlayerSlugNotificationsRoute
11681228
PlayersPlayerSlugSquadRoute: typeof PlayersPlayerSlugSquadRouteWithChildren
11691229
PlayersPlayerSlugSynthesisRoute: typeof PlayersPlayerSlugSynthesisRoute
1230+
PlayersPlayerSlugCareerCitationsRoute: typeof PlayersPlayerSlugCareerCitationsRoute
1231+
PlayersPlayerSlugCareerCommendationsRoute: typeof PlayersPlayerSlugCareerCommendationsRoute
11701232
PlayersPlayerSlugCareerSeasonPassRoute: typeof PlayersPlayerSlugCareerSeasonPassRoute
11711233
PlayersPlayerSlugCommunityCompareRoute: typeof PlayersPlayerSlugCommunityCompareRoute
11721234
PlayersPlayerSlugCommunityPrestigeRoute: typeof PlayersPlayerSlugCommunityPrestigeRoute
@@ -1175,6 +1237,7 @@ interface PlayersPlayerSlugRouteChildren {
11751237
PlayersPlayerSlugPalmaresPrestigeRoute: typeof PlayersPlayerSlugPalmaresPrestigeRoute
11761238
PlayersPlayerSlugPalmaresRelationsRoute: typeof PlayersPlayerSlugPalmaresRelationsRoute
11771239
PlayersPlayerSlugStatsSessionsRoute: typeof PlayersPlayerSlugStatsSessionsRoute
1240+
PlayersPlayerSlugStatsSynthesisRoute: typeof PlayersPlayerSlugStatsSynthesisRoute
11781241
PlayersPlayerSlugStatsTimeseriesRoute: typeof PlayersPlayerSlugStatsTimeseriesRoute
11791242
PlayersPlayerSlugCommunityIndexRoute: typeof PlayersPlayerSlugCommunityIndexRoute
11801243
PlayersPlayerSlugExplorerIndexRoute: typeof PlayersPlayerSlugExplorerIndexRoute
@@ -1194,6 +1257,9 @@ const PlayersPlayerSlugRouteChildren: PlayersPlayerSlugRouteChildren = {
11941257
PlayersPlayerSlugNotificationsRoute: PlayersPlayerSlugNotificationsRoute,
11951258
PlayersPlayerSlugSquadRoute: PlayersPlayerSlugSquadRouteWithChildren,
11961259
PlayersPlayerSlugSynthesisRoute: PlayersPlayerSlugSynthesisRoute,
1260+
PlayersPlayerSlugCareerCitationsRoute: PlayersPlayerSlugCareerCitationsRoute,
1261+
PlayersPlayerSlugCareerCommendationsRoute:
1262+
PlayersPlayerSlugCareerCommendationsRoute,
11971263
PlayersPlayerSlugCareerSeasonPassRoute:
11981264
PlayersPlayerSlugCareerSeasonPassRoute,
11991265
PlayersPlayerSlugCommunityCompareRoute:
@@ -1209,6 +1275,7 @@ const PlayersPlayerSlugRouteChildren: PlayersPlayerSlugRouteChildren = {
12091275
PlayersPlayerSlugPalmaresRelationsRoute:
12101276
PlayersPlayerSlugPalmaresRelationsRoute,
12111277
PlayersPlayerSlugStatsSessionsRoute: PlayersPlayerSlugStatsSessionsRoute,
1278+
PlayersPlayerSlugStatsSynthesisRoute: PlayersPlayerSlugStatsSynthesisRoute,
12121279
PlayersPlayerSlugStatsTimeseriesRoute: PlayersPlayerSlugStatsTimeseriesRoute,
12131280
PlayersPlayerSlugCommunityIndexRoute: PlayersPlayerSlugCommunityIndexRoute,
12141281
PlayersPlayerSlugExplorerIndexRoute: PlayersPlayerSlugExplorerIndexRoute,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* Route /players/$playerSlug/career/citations — page Citations (section Carrière).
3+
*/
4+
import { createFileRoute } from '@tanstack/react-router'
5+
import { UnifiedCitationsPage } from '@/features/citations/UnifiedCitationsPage'
6+
import { RouteCapabilityGate } from '@/lib/capabilities/RouteCapabilityGate'
7+
8+
export const Route = createFileRoute('/players/$playerSlug/career/citations')({
9+
component: () => (
10+
<RouteCapabilityGate capability="career">
11+
<UnifiedCitationsPage source="infinite" />
12+
</RouteCapabilityGate>
13+
),
14+
})

0 commit comments

Comments
 (0)