Implemented the ProfileSection UI component for the Profile module.

This commit is contained in:
Javier Cicchelli 2022-12-12 02:50:32 +01:00
parent d7ec5aad47
commit 8b8f0d9f1f

View File

@ -0,0 +1,75 @@
//
// ProfileSection.swift
// Profile
//
// Created by Javier Cicchelli on 12/12/2022.
//
import SwiftUI
struct ProfileSection: View {
// MARK: Properties
let header: LocalizedStringKey
let items: [Item]
// MARK: Body
var body: some View {
Section {
ForEach(items) { item in
Label {
Text(item.value)
} icon: {
Text(
item.key,
bundle: .module
)
}
.labelStyle(.nameAndValue)
}
} header: {
Text(
header,
bundle: .module
)
}
}
}
// MARK: - Structs
extension ProfileSection {
struct Item {
let key: LocalizedStringKey
let value: String
}
}
// MARK: - Identifiable
extension ProfileSection.Item: Identifiable {
var id: String { UUID().uuidString }
}
// MARK: - Previews
struct ProfileSection_Previews: PreviewProvider {
static var previews: some View {
ProfileSection(
header: "some-localised-header-key",
items: [
.init(
key: "some-localized-key",
value: "some value"
),
.init(
key: "some-other-localised-key",
value: "some other value"
)
]
)
}
}