import '../../domain/domain.dart'; import 'starter_content.dart'; const basketStarterExerciseSeedsV2 = [ StarterExerciseSeed( id: 'starter-v2-exercise-form-shooting', name: 'Form shooting proche panier', description: 'Travail technique près du cercle, priorité au geste propre.', businessTypes: [BusinessExerciseType.shoot], tags: ['tir', 'technique'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 25, defaultTargetScore: 20, ), StarterExerciseSeed( id: 'starter-v2-exercise-spot-shooting-5-positions', name: 'Spot shooting 5 positions', description: '5 tirs depuis 5 spots autour de la raquette ou du périmètre.', businessTypes: [BusinessExerciseType.shoot], tags: ['tir', 'spots'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 1, defaultTargetScore: 15, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-spot-shooting-right-corner', name: 'Coin droit', type: ExerciseStepType.reps, defaultTargetValue: 5, ), StarterExerciseStepSeed( id: 'starter-v2-step-spot-shooting-right-wing', name: 'Aile droite', type: ExerciseStepType.reps, defaultTargetValue: 5, ), StarterExerciseStepSeed( id: 'starter-v2-step-spot-shooting-top', name: 'Face cercle', type: ExerciseStepType.reps, defaultTargetValue: 5, ), StarterExerciseStepSeed( id: 'starter-v2-step-spot-shooting-left-wing', name: 'Aile gauche', type: ExerciseStepType.reps, defaultTargetValue: 5, ), StarterExerciseStepSeed( id: 'starter-v2-step-spot-shooting-left-corner', name: 'Coin gauche', type: ExerciseStepType.reps, defaultTargetValue: 5, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-free-throw-routine', name: 'Routine lancers francs', description: 'Série calme avec routine complète avant chaque tir.', businessTypes: [BusinessExerciseType.freeThrows], tags: ['lancers francs', 'routine'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'lancers', defaultTargetReps: 20, defaultTargetScore: 16, ), StarterExerciseSeed( id: 'starter-v2-exercise-fatigue-free-throws', name: 'Lancers francs sous fatigue', description: 'Lancers francs après effort court.', businessTypes: [ BusinessExerciseType.freeThrows, BusinessExerciseType.highIntensity, ], tags: ['lancers francs', 'fatigue'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'lancers', defaultTargetReps: 5, defaultTargetScore: 8, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-fatigue-free-throws-baseline-run', name: 'Course ligne de fond', type: ExerciseStepType.time, defaultTargetValue: 15, ), StarterExerciseStepSeed( id: 'starter-v2-step-fatigue-free-throws-two-shots', name: '2 lancers francs', type: ExerciseStepType.reps, defaultTargetValue: 2, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-catch-and-shoot', name: 'Catch & shoot', description: 'Recevoir, armer vite, tirer équilibré.', businessTypes: [BusinessExerciseType.shoot], tags: ['tir', 'réception'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 20, defaultTargetScore: 12, ), StarterExerciseSeed( id: 'starter-v2-exercise-pull-up-shooting', name: 'Tir après dribble', description: 'Création d\'espace puis tir en rythme.', businessTypes: [BusinessExerciseType.shoot, BusinessExerciseType.dribble], tags: ['tir', 'dribble'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 20, defaultTargetScore: 10, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-pull-up-right', name: 'Départ main droite', type: ExerciseStepType.reps, defaultTargetValue: 10, ), StarterExerciseStepSeed( id: 'starter-v2-step-pull-up-left', name: 'Départ main gauche', type: ExerciseStepType.reps, defaultTargetValue: 10, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-stationary-dribble-alternating', name: 'Dribble stationnaire alterné', description: 'Contrôle de balle enchaîné main droite/main gauche.', businessTypes: [BusinessExerciseType.dribble], tags: ['dribble', 'maniement'], hasTimeMeasure: true, defaultTargetTimeSeconds: 60, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-stationary-dribble-right-low', name: 'Main droite basse', type: ExerciseStepType.time, defaultTargetValue: 15, ), StarterExerciseStepSeed( id: 'starter-v2-step-stationary-dribble-left-low', name: 'Main gauche basse', type: ExerciseStepType.time, defaultTargetValue: 15, ), StarterExerciseStepSeed( id: 'starter-v2-step-stationary-dribble-crossovers', name: 'Crossovers', type: ExerciseStepType.time, defaultTargetValue: 15, ), StarterExerciseStepSeed( id: 'starter-v2-step-stationary-dribble-between-legs', name: 'Entre les jambes', type: ExerciseStepType.time, defaultTargetValue: 15, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-combo-change-of-hand', name: 'Combo changement de main', description: 'Enchaîner les changements de main avec régularité.', businessTypes: [BusinessExerciseType.dribble], tags: ['dribble', 'coordination'], hasRepsMeasure: true, defaultTargetReps: 10, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-combo-crossover', name: 'Crossover', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-combo-between-legs', name: 'Entre les jambes', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-combo-behind-back', name: 'Dans le dos', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-combo-explosive-start', name: 'Départ explosif', type: ExerciseStepType.reps, defaultTargetValue: 1, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-cone-slalom', name: 'Slalom cônes', description: 'Conduite de balle en vitesse sur parcours.', businessTypes: [ BusinessExerciseType.dribble, BusinessExerciseType.highIntensity, ], tags: ['dribble', 'vitesse'], hasRepsMeasure: true, hasScoreMeasure: true, scoreInputMode: ScoreInputMode.stopwatch, scoreLabel: 'Temps parcours', defaultTargetReps: 6, defaultTargetScoreTimeMs: 12000, ), StarterExerciseSeed( id: 'starter-v2-exercise-mikan-drill', name: 'Mikan drill', description: 'Alternance de finitions près du cercle.', businessTypes: [BusinessExerciseType.finishing], tags: ['finition', 'proche cercle'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 20, defaultTargetScore: 16, ), StarterExerciseSeed( id: 'starter-v2-exercise-alternating-layups', name: 'Layups alternés droite/gauche', description: 'Alterner les côtés avec course courte.', businessTypes: [BusinessExerciseType.finishing], tags: ['finition', 'layup'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 20, defaultTargetScore: 16, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-alternating-layup-right', name: 'Layup côté droit', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-alternating-layup-left', name: 'Layup côté gauche', type: ExerciseStepType.reps, defaultTargetValue: 1, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-weak-hand-finishes', name: 'Finitions main faible', description: 'Layups et finitions contrôlées main faible.', businessTypes: [BusinessExerciseType.finishing], tags: ['finition', 'main faible'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 20, defaultTargetScore: 12, ), StarterExerciseSeed( id: 'starter-v2-exercise-contact-finishing', name: 'Finition avec contact', description: 'Absorber le contact puis finir près du cercle.', businessTypes: [BusinessExerciseType.finishing], tags: ['finition', 'contact'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'paniers', defaultTargetReps: 12, defaultTargetScore: 8, ), StarterExerciseSeed( id: 'starter-v2-exercise-half-court-suicides', name: 'Suicides demi-terrain', description: 'Aller-retour progressif sur lignes du terrain.', businessTypes: [ BusinessExerciseType.conditioning, BusinessExerciseType.highIntensity, ], tags: ['condition physique', 'intense'], hasRepsMeasure: true, hasScoreMeasure: true, scoreInputMode: ScoreInputMode.stopwatch, scoreLabel: 'Temps total', defaultTargetReps: 4, defaultTargetScoreTimeMs: 45000, ), StarterExerciseSeed( id: 'starter-v2-exercise-baseline-sprint', name: 'Sprint ligne de fond', description: 'Départs explosifs répétés.', businessTypes: [ BusinessExerciseType.conditioning, BusinessExerciseType.highIntensity, ], tags: ['vitesse', 'intense'], hasRepsMeasure: true, hasScoreMeasure: true, scoreInputMode: ScoreInputMode.stopwatch, scoreLabel: 'Meilleur sprint', defaultTargetReps: 10, defaultTargetScoreTimeMs: 5000, ), StarterExerciseSeed( id: 'starter-v2-exercise-line-hops', name: 'Line hops', description: 'Petits sauts rapides de part et d\'autre d\'une ligne.', businessTypes: [ BusinessExerciseType.conditioning, BusinessExerciseType.highIntensity, ], tags: ['appuis', 'intense'], hasTimeMeasure: true, hasScoreMeasure: true, scoreLabel: 'Contacts', scoreUnit: 'touches', defaultTargetTimeSeconds: 30, defaultTargetScore: 50, ), StarterExerciseSeed( id: 'starter-v2-exercise-defensive-slides', name: 'Slides défensifs', description: 'Déplacements latéraux bas et contrôlés.', businessTypes: [BusinessExerciseType.defense], tags: ['défense', 'appuis'], hasTimeMeasure: true, defaultTargetTimeSeconds: 45, ), StarterExerciseSeed( id: 'starter-v2-exercise-closeout-slide', name: 'Closeout + slide', description: 'Fermer l\'espace puis contenir latéralement.', businessTypes: [BusinessExerciseType.defense], tags: ['défense', 'closeout'], hasRepsMeasure: true, defaultTargetReps: 10, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-closeout-slide-closeout', name: 'Closeout', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-closeout-slide-right', name: 'Slide droite', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-closeout-slide-left', name: 'Slide gauche', type: ExerciseStepType.reps, defaultTargetValue: 1, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-rebound-outlet-pass', name: 'Rebond + outlet pass', description: 'Capturer le rebond puis ressortir proprement.', businessTypes: [BusinessExerciseType.defense], tags: ['défense', 'rebond'], hasRepsMeasure: true, hasScoreMeasure: true, scoreLabel: 'Réussites', scoreUnit: 'actions', defaultTargetReps: 12, defaultTargetScore: 10, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-rebound-outlet-rebound', name: 'Rebond', type: ExerciseStepType.reps, defaultTargetValue: 1, ), StarterExerciseStepSeed( id: 'starter-v2-step-rebound-outlet-pass', name: 'Outlet pass', type: ExerciseStepType.reps, defaultTargetValue: 1, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-basket-hip-mobility', name: 'Mobilité hanches basket', description: 'Préparer hanches, appuis et amplitude.', businessTypes: [ BusinessExerciseType.mobility, BusinessExerciseType.recovery, ], tags: ['mobilité', 'échauffement'], hasTimeMeasure: true, defaultTargetTimeSeconds: 300, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-hip-mobility-openers', name: 'Ouverture hanches', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-hip-mobility-lunges', name: 'Fentes dynamiques', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-hip-mobility-squat-hold', name: 'Squat hold', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-hip-mobility-adductors', name: 'Adducteurs', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-hip-mobility-breathing', name: 'Respiration basse', type: ExerciseStepType.time, defaultTargetValue: 60, ), ], ), StarterExerciseSeed( id: 'starter-v2-exercise-ankles-calves', name: 'Chevilles et mollets', description: 'Préparer les appuis, réceptions et changements de direction.', businessTypes: [ BusinessExerciseType.mobility, BusinessExerciseType.recovery, ], tags: ['mobilité', 'appuis'], hasTimeMeasure: true, defaultTargetTimeSeconds: 180, steps: [ StarterExerciseStepSeed( id: 'starter-v2-step-ankles-calves-right-ankle', name: 'Mobilité cheville droite', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-ankles-calves-left-ankle', name: 'Mobilité cheville gauche', type: ExerciseStepType.time, defaultTargetValue: 60, ), StarterExerciseStepSeed( id: 'starter-v2-step-ankles-calves-dynamic-calves', name: 'Mollets dynamiques', type: ExerciseStepType.time, defaultTargetValue: 60, ), ], ), ]; const basketStarterProgramSeedV2 = StarterProgramSeed( id: 'starter-v2-program-basket-foundations-45-min', name: 'Fondations basket - 45 min', defaultRestSeconds: 45, tags: ['fondations', 'basket'], exercises: [ StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-hip-mobility', exerciseId: 'starter-v2-exercise-basket-hip-mobility', setsCount: 1, enabledMeasures: {WorkoutMeasure.time}, targetTimeSeconds: 300, restSecondsOverride: 30, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-stationary-dribble', exerciseId: 'starter-v2-exercise-stationary-dribble-alternating', setsCount: 2, enabledMeasures: {WorkoutMeasure.time}, targetTimeSeconds: 60, restSecondsOverride: 30, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-combo-change-of-hand', exerciseId: 'starter-v2-exercise-combo-change-of-hand', setsCount: 2, enabledMeasures: {WorkoutMeasure.reps}, targetReps: 10, restSecondsOverride: 45, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-form-shooting', exerciseId: 'starter-v2-exercise-form-shooting', setsCount: 3, enabledMeasures: {WorkoutMeasure.reps, WorkoutMeasure.score}, targetReps: 25, targetScore: 20, restSecondsOverride: 45, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-spot-shooting', exerciseId: 'starter-v2-exercise-spot-shooting-5-positions', setsCount: 3, enabledMeasures: {WorkoutMeasure.reps, WorkoutMeasure.score}, targetReps: 1, targetScore: 15, restSecondsOverride: 60, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-alternating-layups', exerciseId: 'starter-v2-exercise-alternating-layups', setsCount: 3, enabledMeasures: {WorkoutMeasure.reps, WorkoutMeasure.score}, targetReps: 20, targetScore: 16, restSecondsOverride: 45, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-free-throw-routine', exerciseId: 'starter-v2-exercise-free-throw-routine', setsCount: 4, enabledMeasures: {WorkoutMeasure.reps, WorkoutMeasure.score}, targetReps: 10, targetScore: 8, restSecondsOverride: 30, ), StarterProgramExerciseSeed( id: 'starter-v2-program-exercise-defensive-slides', exerciseId: 'starter-v2-exercise-defensive-slides', setsCount: 4, enabledMeasures: {WorkoutMeasure.time}, targetTimeSeconds: 45, ), ], ); const basketStarterWorkoutTemplateSeedV2 = StarterWorkoutTemplateSeed( id: 'starter-v2-workout-template-basket-foundations-example', name: 'Séance exemple - Fondations basket', programSnapshotId: 'starter-v2-workout-template-program-basket-foundations', tags: ['fondations', 'séance'], );