import SwiftUI struct EvolutionPickerMenu: View { @Binding var selectedEvolution: StageType private func select(_ stageType: StageType) { withAnimation { selectedEvolution = stageType } } var body: some View { VStack(alignment: .leading, spacing: 1.0) { Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.types")) { ForEach(StageType.types) { stage in EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { select(stage) } } } Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.characteristics")) { ForEach(StageType.characteristics) { stage in EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { select(stage) } } } Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.general_properties")) { ForEach(StageType.properties) { stage in EvolutionPickerMenuItem(stageType: stage, isSelected: selectedEvolution.id == stage.id) .onTapGesture { select(stage) } } } Section(header: EvolutionPickerMenuHeader(key: "stage_type.section.custom")) { ForEach(StageType.customStages) { customStage in EvolutionPickerMenuItem( stageType: customStage, isSelected: selectedEvolution.id == customStage.id ) .onTapGesture { select(customStage) } } } } .padding(.horizontal, Dimensions.Spacing.coziest) .padding(.vertical, Dimensions.Spacing.regular) } } #Preview { EvolutionPickerMenu(selectedEvolution: .constant(.ubiquity)) }