Complete rename across all bundle IDs, App Groups, CloudKit containers, StoreKit product IDs, data store filenames, URL schemes, logger subsystems, Swift identifiers, user-facing strings (7 languages), file names, directory names, Xcode project, schemes, assets, and documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
56 lines
1.7 KiB
Swift
56 lines
1.7 KiB
Swift
//
|
|
// ImagePickerGrid.swift
|
|
// Reflect (iOS)
|
|
//
|
|
// Created by Trey Tartt on 3/12/22.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct ImagePickerGridView: View {
|
|
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
|
|
@Environment(\.presentationMode) var presentationMode
|
|
@State var column = Array(repeating: GridItem(.flexible(), spacing: 10), count: 7)
|
|
let pickedImageClosure: ((CustomWidgeImageOptions) -> Void)
|
|
|
|
private var textColor: Color { theme.currentTheme.labelColor }
|
|
|
|
let imageOptions = CustomWidgeImageOptions.allCases.sorted(by: {
|
|
$0.rawValue < $1.rawValue
|
|
})
|
|
|
|
var body: some View {
|
|
VStack {
|
|
ScrollView {
|
|
LazyVGrid(columns: column,spacing: 10, content: {
|
|
ForEach(imageOptions, id:\.self.rawValue) { item in
|
|
Image(item.rawValue)
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 40, height: 40)
|
|
.foregroundColor(textColor)
|
|
.onTapGesture {
|
|
pickedImageClosure(item)
|
|
presentationMode.wrappedValue.dismiss()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
.padding()
|
|
Spacer()
|
|
}
|
|
.background(
|
|
theme.currentTheme.bg
|
|
.edgesIgnoringSafeArea(.all)
|
|
)
|
|
}
|
|
}
|
|
|
|
struct ImagePickerGridView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
ImagePickerGridView(pickedImageClosure: { image in
|
|
|
|
})
|
|
}
|
|
}
|