forked from X901/FXDatePicker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathThemeColorModifier.swift
69 lines (57 loc) · 1.92 KB
/
ThemeColorModifier.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
////
//ThemeColorModifier.swift
//DatePickerExample
//
//Created by Basel Baragabah on 01/01/2024.
//Copyright © 2024 Basel Baragabah. All rights reserved.
//
import SwiftUI
@available(iOS 14.0, *)
public struct DatePickerThemeKey: EnvironmentKey {
public static var defaultValue: DatePickerTheme = DatePickerTheme()
}
public extension EnvironmentValues {
var datePickerTheme: DatePickerTheme {
get { self[DatePickerThemeKey.self] }
set { self[DatePickerThemeKey.self] = newValue }
}
}
public extension View {
func datePickerTheme(_ theme: DatePickerTheme) -> some View {
self.environment(\.datePickerTheme, theme)
}
func datePickerTheme(
main: DatePickerTheme.Main = .init()
) -> some View {
self.environment(\.datePickerTheme, DatePickerTheme(main: main))
}
}
public struct DatePickerTheme {
public let main: Main
public init(main: DatePickerTheme.Main = .init()) {
self.main = main
}
}
public extension DatePickerTheme {
struct Main {
public let accentColor: Color
public let monthTitle: Color
public let daysName: Color
public let daysNumbers: Color
public let previousDaysNumber: Color
public let backgroundColor: Color
public init(accentColor: Color = .blue,
monthTitle: Color = Color(color: .label),
daysName: Color = .gray,
daysNumbers: Color = Color(color: .label),
previousDaysNumber: Color = .gray,
backgroundColor: Color = Color(color: .systemBackground)) {
self.accentColor = accentColor
self.monthTitle = monthTitle
self.daysName = daysName
self.daysNumbers = daysNumbers
self.previousDaysNumber = previousDaysNumber
self.backgroundColor = backgroundColor
}
}
}