MovieCatalog
67 строк · 1.5 Кб
1//
2// FormItemBackground.swift
3// Movies
4//
5// Created by Ivan Semenov on 27.10.2023.
6//
7
8import SwiftUI
9
10struct FormItemBackgroundViewModifier: ViewModifier {
11
12enum Style {
13case `default`
14case error
15
16var tintColor: Color {
17switch self {
18case .default: .appAccent
19case .error: .appLightGray
20}
21}
22
23var borderColor: Color {
24switch self {
25case .default: .appGray
26case .error: .red
27}
28}
29
30var backgroundColor: Color {
31switch self {
32case .default:
33return .clear
34case .error:
35return .red.opacity(Constants.errorOpacity)
36}
37}
38}
39
40let style: Style
41
42func body(content: Content) -> some View {
43content
44.tintColor(style.tintColor)
45.background(background)
46}
47
48private enum Constants {
49static let cornerRadius: CGFloat = 10
50static let errorOpacity: CGFloat = 0.1
51}
52
53@ViewBuilder
54private var background: some View {
55let rectangle = RoundedRectangle(cornerRadius: Constants.cornerRadius)
56
57rectangle
58.stroke(style.borderColor)
59.background(rectangle.fill(style.backgroundColor))
60}
61}
62
63extension View {
64func formItemBackground(_ style: FormItemBackgroundViewModifier.Style = .default) -> some View {
65modifier(FormItemBackgroundViewModifier(style: style))
66}
67}
68