Files
CRAPP/src/routeTree.gen.ts
T
davideandClaude Opus 5 da51517ffc Dashboard amministratore e profilo per il tesseramento
Implementa la voce "Dashboard amministratore" della roadmap v1.1, come descritta
in docs/modules/profilo-giocatore.md, insieme alla parte di profilo che la
alimenta.

- /admin: stato dei profili della squadra, download di documento, certificato e
  foto tessera, export CSV con i 12 campi del tesseramento CSI. Un certificato
  scaduto non conta come valido.
- Profilo giocatore: dati personali, documento (fronte e retro), certificato e
  foto tessera, con widget di completamento in Home che sparisce al 100%.
- I permessi di amministrazione arrivano da user_roles (DD-011) e non più dalla
  lista di nomi in crapp-data.ts, che resta come ponte finché
  VITE_AUTH_OBBLIGATORIA non viene acceso in produzione.
- Login Google via Supabase Auth: al primo accesso l'account si collega a uno
  slot libero di giocatori_squadra, e il vincolo lo fa rispettare il trigger di
  M1 (DD-016 regola 2).

Migration additive: M2 crea profili_giocatore, M3 il bucket privato
profili-giocatore. Nessuna tabella v1.0 viene toccata, quindi si possono
applicare senza cambiare il comportamento attuale dell'app.

supabase/config.toml e seed.sql configurano lo stack locale: serve perché il
progetto Supabase è uno solo, condiviso tra sviluppo e produzione.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 17:57:59 +02:00

412 lines
14 KiB
TypeScript

/* eslint-disable */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// This file was automatically generated by TanStack Router.
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
import { Route as rootRouteImport } from './routes/__root'
import { Route as IndexRouteImport } from './routes/index'
import { Route as AdminRouteImport } from './routes/admin'
import { Route as BenvenutoRouteImport } from './routes/benvenuto'
import { Route as CalendarioRouteImport } from './routes/calendario'
import { Route as ClassificaRouteImport } from './routes/classifica'
import { Route as EventiRouteImport } from './routes/eventi'
import { Route as ProfiloRouteImport } from './routes/profilo'
import { Route as ScoutRouteImport } from './routes/scout'
import { Route as SquadraRouteImport } from './routes/squadra'
import { Route as AllenamentoIdRouteImport } from './routes/allenamento.$id'
import { Route as PartitaIdRouteImport } from './routes/partita.$id'
import { Route as ApiPublicCsiRouteImport } from './routes/api/public/csi'
import { Route as ApiPublicPromemoriaPalloniRouteImport } from './routes/api/public/promemoria-palloni'
import { Route as ApiPublicPushConfigRouteImport } from './routes/api/public/push-config'
import { Route as ApiPublicPushMessaggioRouteImport } from './routes/api/public/push-messaggio'
import { Route as ApiPublicPushSubscribeRouteImport } from './routes/api/public/push-subscribe'
import { Route as ApiPublicSollecitaPresenzeRouteImport } from './routes/api/public/sollecita-presenze'
const IndexRoute = IndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => rootRouteImport,
} as any)
const AdminRoute = AdminRouteImport.update({
id: '/admin',
path: '/admin',
getParentRoute: () => rootRouteImport,
} as any)
const BenvenutoRoute = BenvenutoRouteImport.update({
id: '/benvenuto',
path: '/benvenuto',
getParentRoute: () => rootRouteImport,
} as any)
const CalendarioRoute = CalendarioRouteImport.update({
id: '/calendario',
path: '/calendario',
getParentRoute: () => rootRouteImport,
} as any)
const ClassificaRoute = ClassificaRouteImport.update({
id: '/classifica',
path: '/classifica',
getParentRoute: () => rootRouteImport,
} as any)
const EventiRoute = EventiRouteImport.update({
id: '/eventi',
path: '/eventi',
getParentRoute: () => rootRouteImport,
} as any)
const ProfiloRoute = ProfiloRouteImport.update({
id: '/profilo',
path: '/profilo',
getParentRoute: () => rootRouteImport,
} as any)
const ScoutRoute = ScoutRouteImport.update({
id: '/scout',
path: '/scout',
getParentRoute: () => rootRouteImport,
} as any)
const SquadraRoute = SquadraRouteImport.update({
id: '/squadra',
path: '/squadra',
getParentRoute: () => rootRouteImport,
} as any)
const AllenamentoIdRoute = AllenamentoIdRouteImport.update({
id: '/allenamento/$id',
path: '/allenamento/$id',
getParentRoute: () => rootRouteImport,
} as any)
const PartitaIdRoute = PartitaIdRouteImport.update({
id: '/partita/$id',
path: '/partita/$id',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicCsiRoute = ApiPublicCsiRouteImport.update({
id: '/api/public/csi',
path: '/api/public/csi',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicPromemoriaPalloniRoute =
ApiPublicPromemoriaPalloniRouteImport.update({
id: '/api/public/promemoria-palloni',
path: '/api/public/promemoria-palloni',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicPushConfigRoute = ApiPublicPushConfigRouteImport.update({
id: '/api/public/push-config',
path: '/api/public/push-config',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicPushMessaggioRoute = ApiPublicPushMessaggioRouteImport.update({
id: '/api/public/push-messaggio',
path: '/api/public/push-messaggio',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicPushSubscribeRoute = ApiPublicPushSubscribeRouteImport.update({
id: '/api/public/push-subscribe',
path: '/api/public/push-subscribe',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPublicSollecitaPresenzeRoute =
ApiPublicSollecitaPresenzeRouteImport.update({
id: '/api/public/sollecita-presenze',
path: '/api/public/sollecita-presenze',
getParentRoute: () => rootRouteImport,
} as any)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/admin': typeof AdminRoute
'/benvenuto': typeof BenvenutoRoute
'/calendario': typeof CalendarioRoute
'/classifica': typeof ClassificaRoute
'/eventi': typeof EventiRoute
'/profilo': typeof ProfiloRoute
'/scout': typeof ScoutRoute
'/squadra': typeof SquadraRoute
'/allenamento/$id': typeof AllenamentoIdRoute
'/partita/$id': typeof PartitaIdRoute
'/api/public/csi': typeof ApiPublicCsiRoute
'/api/public/promemoria-palloni': typeof ApiPublicPromemoriaPalloniRoute
'/api/public/push-config': typeof ApiPublicPushConfigRoute
'/api/public/push-messaggio': typeof ApiPublicPushMessaggioRoute
'/api/public/push-subscribe': typeof ApiPublicPushSubscribeRoute
'/api/public/sollecita-presenze': typeof ApiPublicSollecitaPresenzeRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/admin': typeof AdminRoute
'/benvenuto': typeof BenvenutoRoute
'/calendario': typeof CalendarioRoute
'/classifica': typeof ClassificaRoute
'/eventi': typeof EventiRoute
'/profilo': typeof ProfiloRoute
'/scout': typeof ScoutRoute
'/squadra': typeof SquadraRoute
'/allenamento/$id': typeof AllenamentoIdRoute
'/partita/$id': typeof PartitaIdRoute
'/api/public/csi': typeof ApiPublicCsiRoute
'/api/public/promemoria-palloni': typeof ApiPublicPromemoriaPalloniRoute
'/api/public/push-config': typeof ApiPublicPushConfigRoute
'/api/public/push-messaggio': typeof ApiPublicPushMessaggioRoute
'/api/public/push-subscribe': typeof ApiPublicPushSubscribeRoute
'/api/public/sollecita-presenze': typeof ApiPublicSollecitaPresenzeRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
'/': typeof IndexRoute
'/admin': typeof AdminRoute
'/benvenuto': typeof BenvenutoRoute
'/calendario': typeof CalendarioRoute
'/classifica': typeof ClassificaRoute
'/eventi': typeof EventiRoute
'/profilo': typeof ProfiloRoute
'/scout': typeof ScoutRoute
'/squadra': typeof SquadraRoute
'/allenamento/$id': typeof AllenamentoIdRoute
'/partita/$id': typeof PartitaIdRoute
'/api/public/csi': typeof ApiPublicCsiRoute
'/api/public/promemoria-palloni': typeof ApiPublicPromemoriaPalloniRoute
'/api/public/push-config': typeof ApiPublicPushConfigRoute
'/api/public/push-messaggio': typeof ApiPublicPushMessaggioRoute
'/api/public/push-subscribe': typeof ApiPublicPushSubscribeRoute
'/api/public/sollecita-presenze': typeof ApiPublicSollecitaPresenzeRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
| '/'
| '/admin'
| '/benvenuto'
| '/calendario'
| '/classifica'
| '/eventi'
| '/profilo'
| '/scout'
| '/squadra'
| '/allenamento/$id'
| '/partita/$id'
| '/api/public/csi'
| '/api/public/promemoria-palloni'
| '/api/public/push-config'
| '/api/public/push-messaggio'
| '/api/public/push-subscribe'
| '/api/public/sollecita-presenze'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
| '/admin'
| '/benvenuto'
| '/calendario'
| '/classifica'
| '/eventi'
| '/profilo'
| '/scout'
| '/squadra'
| '/allenamento/$id'
| '/partita/$id'
| '/api/public/csi'
| '/api/public/promemoria-palloni'
| '/api/public/push-config'
| '/api/public/push-messaggio'
| '/api/public/push-subscribe'
| '/api/public/sollecita-presenze'
id:
| '__root__'
| '/'
| '/admin'
| '/benvenuto'
| '/calendario'
| '/classifica'
| '/eventi'
| '/profilo'
| '/scout'
| '/squadra'
| '/allenamento/$id'
| '/partita/$id'
| '/api/public/csi'
| '/api/public/promemoria-palloni'
| '/api/public/push-config'
| '/api/public/push-messaggio'
| '/api/public/push-subscribe'
| '/api/public/sollecita-presenze'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
AdminRoute: typeof AdminRoute
BenvenutoRoute: typeof BenvenutoRoute
CalendarioRoute: typeof CalendarioRoute
ClassificaRoute: typeof ClassificaRoute
EventiRoute: typeof EventiRoute
ProfiloRoute: typeof ProfiloRoute
ScoutRoute: typeof ScoutRoute
SquadraRoute: typeof SquadraRoute
AllenamentoIdRoute: typeof AllenamentoIdRoute
PartitaIdRoute: typeof PartitaIdRoute
ApiPublicCsiRoute: typeof ApiPublicCsiRoute
ApiPublicPromemoriaPalloniRoute: typeof ApiPublicPromemoriaPalloniRoute
ApiPublicPushConfigRoute: typeof ApiPublicPushConfigRoute
ApiPublicPushMessaggioRoute: typeof ApiPublicPushMessaggioRoute
ApiPublicPushSubscribeRoute: typeof ApiPublicPushSubscribeRoute
ApiPublicSollecitaPresenzeRoute: typeof ApiPublicSollecitaPresenzeRoute
}
declare module '@tanstack/react-router' {
interface FileRoutesByPath {
'/': {
id: '/'
path: '/'
fullPath: '/'
preLoaderRoute: typeof IndexRouteImport
parentRoute: typeof rootRouteImport
}
'/admin': {
id: '/admin'
path: '/admin'
fullPath: '/admin'
preLoaderRoute: typeof AdminRouteImport
parentRoute: typeof rootRouteImport
}
'/benvenuto': {
id: '/benvenuto'
path: '/benvenuto'
fullPath: '/benvenuto'
preLoaderRoute: typeof BenvenutoRouteImport
parentRoute: typeof rootRouteImport
}
'/calendario': {
id: '/calendario'
path: '/calendario'
fullPath: '/calendario'
preLoaderRoute: typeof CalendarioRouteImport
parentRoute: typeof rootRouteImport
}
'/classifica': {
id: '/classifica'
path: '/classifica'
fullPath: '/classifica'
preLoaderRoute: typeof ClassificaRouteImport
parentRoute: typeof rootRouteImport
}
'/eventi': {
id: '/eventi'
path: '/eventi'
fullPath: '/eventi'
preLoaderRoute: typeof EventiRouteImport
parentRoute: typeof rootRouteImport
}
'/profilo': {
id: '/profilo'
path: '/profilo'
fullPath: '/profilo'
preLoaderRoute: typeof ProfiloRouteImport
parentRoute: typeof rootRouteImport
}
'/scout': {
id: '/scout'
path: '/scout'
fullPath: '/scout'
preLoaderRoute: typeof ScoutRouteImport
parentRoute: typeof rootRouteImport
}
'/squadra': {
id: '/squadra'
path: '/squadra'
fullPath: '/squadra'
preLoaderRoute: typeof SquadraRouteImport
parentRoute: typeof rootRouteImport
}
'/allenamento/$id': {
id: '/allenamento/$id'
path: '/allenamento/$id'
fullPath: '/allenamento/$id'
preLoaderRoute: typeof AllenamentoIdRouteImport
parentRoute: typeof rootRouteImport
}
'/partita/$id': {
id: '/partita/$id'
path: '/partita/$id'
fullPath: '/partita/$id'
preLoaderRoute: typeof PartitaIdRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/csi': {
id: '/api/public/csi'
path: '/api/public/csi'
fullPath: '/api/public/csi'
preLoaderRoute: typeof ApiPublicCsiRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/promemoria-palloni': {
id: '/api/public/promemoria-palloni'
path: '/api/public/promemoria-palloni'
fullPath: '/api/public/promemoria-palloni'
preLoaderRoute: typeof ApiPublicPromemoriaPalloniRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/push-config': {
id: '/api/public/push-config'
path: '/api/public/push-config'
fullPath: '/api/public/push-config'
preLoaderRoute: typeof ApiPublicPushConfigRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/push-messaggio': {
id: '/api/public/push-messaggio'
path: '/api/public/push-messaggio'
fullPath: '/api/public/push-messaggio'
preLoaderRoute: typeof ApiPublicPushMessaggioRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/push-subscribe': {
id: '/api/public/push-subscribe'
path: '/api/public/push-subscribe'
fullPath: '/api/public/push-subscribe'
preLoaderRoute: typeof ApiPublicPushSubscribeRouteImport
parentRoute: typeof rootRouteImport
}
'/api/public/sollecita-presenze': {
id: '/api/public/sollecita-presenze'
path: '/api/public/sollecita-presenze'
fullPath: '/api/public/sollecita-presenze'
preLoaderRoute: typeof ApiPublicSollecitaPresenzeRouteImport
parentRoute: typeof rootRouteImport
}
}
}
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
AdminRoute: AdminRoute,
BenvenutoRoute: BenvenutoRoute,
CalendarioRoute: CalendarioRoute,
ClassificaRoute: ClassificaRoute,
EventiRoute: EventiRoute,
ProfiloRoute: ProfiloRoute,
ScoutRoute: ScoutRoute,
SquadraRoute: SquadraRoute,
AllenamentoIdRoute: AllenamentoIdRoute,
PartitaIdRoute: PartitaIdRoute,
ApiPublicCsiRoute: ApiPublicCsiRoute,
ApiPublicPromemoriaPalloniRoute: ApiPublicPromemoriaPalloniRoute,
ApiPublicPushConfigRoute: ApiPublicPushConfigRoute,
ApiPublicPushMessaggioRoute: ApiPublicPushMessaggioRoute,
ApiPublicPushSubscribeRoute: ApiPublicPushSubscribeRoute,
ApiPublicSollecitaPresenzeRoute: ApiPublicSollecitaPresenzeRoute,
}
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)
._addFileTypes<FileRouteTypes>()
import type { getRouter } from './router.tsx'
import type { startInstance } from './start.ts'
declare module '@tanstack/react-start' {
interface Register {
ssr: true
router: Awaited<ReturnType<typeof getRouter>>
config: Awaited<ReturnType<typeof startInstance.getOptions>>
}
}