+ {editingUnit?.origin_framework_slot_id
+ ? (() => {
+ const L = frameworkLineageText(editingUnit)
+ return (
+
+
Herkunft:{' '}
+ {editingUnit.origin_framework_program_id ? (
+
+ {L.fpTitle}
+
+ ) : (
+ L.fpTitle
+ )}
+
· {L.slotBit}
+
+ Inhalt stammt aus dem Session-Blueprint des Rahmenprogramms. Änderungen gelten nur für diese
+ geplante Einheit; die Zuordnung zum Rahmen bleibt zur Nachverfolgung erhalten.
+
+
+ )
+ })()
+ : null}
+
+ {!editingUnit && (
+
+
+
+
+ Übernimmt nur die Sektionsstruktur aus der Bibliothek; Übungen trägst du unten bei den
+ Abschnitten ein. Vorlagen verwaltest du unter{' '}
+ Planung → Vorlagen.
+
+
+ )}
+
+
Planung
+
+
+
+
+
+ updateFormField('planned_focus', e.target.value)}
+ placeholder="z.B. Grundlagen, Kinder altersgerecht"
+ />
+
+
+
+
Trainerzuordnung (diese Einheit)
+
+
+
+
+
+
+
+ {!formData.session_assistants_inherit ? (
+
+ {clubDirectoryForCo.map((m) => {
+ const mid = typeof m.id === 'number' ? m.id : parseInt(String(m.id), 10)
+ const isOn =
+ Number.isFinite(mid) && formData.session_assistant_profile_ids.includes(mid)
+ return (
+
+ )
+ })}
+
+ ) : null}
+
+
+
+
+
+ {editingUnit ? (
+
+
+
+ Ablauf bearbeiten als
+
+
+ {[
+ { id: 'planning', label: 'Planung' },
+ { id: 'debrief', label: 'Nachbereitung' },
+ ].map((opt, i) => (
+
+ ))}
+
+
+
+ ) : null}
+
+
+
+
+
+ {newTplVisibility === 'club' ? (
+
+
+
+
+ ) : null}
+
+ {editingUnit?.id && !editingUnit?.framework_slot_id ? (
+ <>
+
+
+ >
+ ) : null}
+
+ }
+ sections={formData.sections}
+ wideExerciseGrid
+ onSectionsChange={(updater) =>
+ setFormData((prev) => ({ ...prev, sections: updater(prev.sections) }))
+ }
+ onRequestTrainingModulePick={onRequestTrainingModulePick}
+ onRequestExercisePick={onRequestExercisePick}
+ onPeekExercise={onPeekExercise}
+ showExecutionExtras={Boolean(editingUnit) && sectionsEditMode === 'debrief'}
+ enableParallelPhaseControls
+ />
+
+
+ {editingUnit ? (
+ <>
+
+