export interface AdminBreadcrumbItem { label: string; to?: string; } /** 子页面顶栏面包屑(一级菜单 + 当前子页) */ export function resolveAdminBreadcrumb( path: string, t: (key: string) => string, query: Record = {}, ): AdminBreadcrumbItem[] | null { if (/^\/users\/agents\/[^/]+\/players/.test(path)) { return [ { label: t('nav.agents_players'), to: '/users' }, { label: t('breadcrumb.agent_direct_players') }, ]; } if (path === '/users/settings') { return [ { label: t('nav.agents_players'), to: '/users' }, { label: t('user.page_settings') }, ]; } if (/^\/matches\/leagues\/[^/]+/.test(path)) { return [ { label: t('nav.matches'), to: '/matches' }, { label: t('breadcrumb.league_fixtures') }, ]; } if (/^\/matches\/outrights\/leagues\/[^/]+/.test(path)) { return [ { label: t('nav.matches'), to: '/matches/outrights' }, { label: t('breadcrumb.league_outrights') }, ]; } if (/^\/settlement\/[^/]+/.test(path)) { const returnTo = typeof query.returnTo === 'string' && query.returnTo.startsWith('/') ? query.returnTo : '/matches'; return [ { label: t('nav.matches'), to: returnTo }, { label: t('breadcrumb.settlement') }, ]; } if (/^\/matches\/[^/]+\/edit/.test(path)) { return [ { label: t('nav.matches'), to: '/matches' }, { label: t('breadcrumb.match_edit') }, ]; } if (/^\/matches\/[^/]+\/markets/.test(path)) { return [ { label: t('nav.matches'), to: '/matches' }, { label: t('breadcrumb.match_markets') }, ]; } if (path === '/dashboard/players') { return [ { label: t('nav.dashboard'), to: '/' }, { label: t('nav.dashboard.players') }, ]; } if (/^\/outrights\/[^/]+\/edit/.test(path)) { return [ { label: t('nav.matches'), to: '/matches' }, { label: t('nav.matches.outrights'), to: '/matches/outrights' }, ]; } return null; }