Skip to content

Commit

Permalink
Resolves #11: Take the colorScheme from the system automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
dkk committed Feb 8, 2021
1 parent df59e5e commit 0c82d5c
Show file tree
Hide file tree
Showing 11 changed files with 71 additions and 87 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,24 @@ Simply use **.softOuterShadow** and **.softInnerShadow** methods to create outer
![Neumorphic SwiftUI Outer Shadow](https://user-images.githubusercontent.com/169746/77294908-fcbed500-6d1f-11ea-9125-cab24891a03d.png)

```swift
RoundedRectangle(cornerRadius: 20).fill(Neumorphic.shared.mainColor()).softOuterShadow()
RoundedRectangle(cornerRadius: 20).fill(Color.Neumorphic.main).softOuterShadow()
```

#### Create Rounded Rectangle with Inner Shadow

![Neumorphic SwiftUI Inner Shadow](https://user-images.githubusercontent.com/169746/77295134-57f0c780-6d20-11ea-8e40-88b7a15319aa.png)

```swift
RoundedRectangle(cornerRadius: 20).fill(Neumorphic.shared.mainColor()).softInnerShadow(RoundedRectangle(cornerRadius: 20))
RoundedRectangle(cornerRadius: 20).fill(Color.Neumorphic.main).softInnerShadow(RoundedRectangle(cornerRadius: 20))
```

#### Create Circles
![Neumorphic SwiftUI Circles](https://user-images.githubusercontent.com/169746/77296271-60e29880-6d22-11ea-942b-23d4e503f03e.png)

```swift
HStack {
Circle().fill(Neumorphic.shared.mainColor()).softOuterShadow()
Circle().fill(Neumorphic.shared.mainColor()).softInnerShadow(Circle())
Circle().fill(Color.Neumorphic.main).softOuterShadow()
Circle().fill(Color.Neumorphic.main).softInnerShadow(Circle())
}
```

Expand Down
35 changes: 35 additions & 0 deletions Sources/Neumorphic/ColorExtension.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import SwiftUI

public extension Color {
struct Neumorphic {
private static let defaultMainColor = UIColor(red: 0.925, green: 0.941, blue: 0.953, alpha: 1.000)
private static let defaultSecondaryColor = UIColor(red: 0.482, green: 0.502, blue: 0.549, alpha: 1.000)
private static let defaultLightShadowSolidColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1.000)
private static let defaultDarkShadowSolidColor = UIColor(red: 0.820, green: 0.851, blue: 0.902, alpha: 1.000)
private static let defaultLightShadowColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.500)
private static let defaultDarkShadowColor = UIColor(red: 0.66, green: 0.72, blue: 0.84, alpha: 0.55)

private static let darkThemeMainColor = UIColor(red: 0.188, green: 0.192, blue: 0.208, alpha: 1.000)
private static let darkThemeSecondaryColor = UIColor(red: 0.910, green: 0.910, blue: 0.910, alpha: 1.000)
private static let darkThemeLightShadowSolidColor = UIColor(red: 0.243, green: 0.247, blue: 0.275, alpha: 1.000)
private static let darkThemeDarkShadowSolidColor = UIColor(red: 0.137, green: 0.137, blue: 0.137, alpha: 1.000)
private static let darkThemeLightShadowColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.1)
private static let darkThemeDarkShadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)

public static var main: Color {
Color(.init { $0.userInterfaceStyle == .light ? Self.defaultMainColor : Self.darkThemeMainColor })
}

public static var secondary: Color {
Color(.init { $0.userInterfaceStyle == .light ? Self.defaultSecondaryColor : Self.darkThemeSecondaryColor })
}

public static var lightShadow: Color {
Color(.init { $0.userInterfaceStyle == .light ? Self.defaultLightShadowSolidColor : Self.darkThemeLightShadowSolidColor })
}

public static var darkShadow: Color {
Color(.init { $0.userInterfaceStyle == .light ? Self.defaultDarkShadowSolidColor : Self.darkThemeDarkShadowSolidColor })
}
}
}
51 changes: 0 additions & 51 deletions Sources/Neumorphic/Neumorphic.swift

This file was deleted.

2 changes: 1 addition & 1 deletion Sources/Neumorphic/SoftButtonStyle.swift
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public struct SoftButtonStyle<S: Shape> : ButtonStyle {

extension Button {

public func softButtonStyle<S : Shape>(_ content: S, padding : CGFloat = 16, mainColor : Color = Neumorphic.shared.mainColor(), textColor : Color = Neumorphic.shared.secondaryColor(), darkShadowColor: Color = Neumorphic.shared.darkShadowColor(), lightShadowColor: Color = Neumorphic.shared.lightShadowColor(), pressedEffect : SoftButtonPressedEffect = .hard) -> some View {
public func softButtonStyle<S : Shape>(_ content: S, padding : CGFloat = 16, mainColor : Color = Color.Neumorphic.main, textColor : Color = Color.Neumorphic.secondary, darkShadowColor: Color = Color.Neumorphic.darkShadow, lightShadowColor: Color = Color.Neumorphic.lightShadow, pressedEffect : SoftButtonPressedEffect = .hard) -> some View {
self.buttonStyle(SoftDynamicButtonStyle(content, mainColor: mainColor, textColor: textColor, darkShadowColor: darkShadowColor, lightShadowColor: lightShadowColor, pressedEffect : pressedEffect, padding:padding))
}

Expand Down
4 changes: 2 additions & 2 deletions Sources/Neumorphic/SoftDynamicToggleStyle.swift
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,11 @@ public struct SoftSwitchToggleStyle : ToggleStyle {

extension Toggle {

public func softToggleStyle<S : Shape>(_ content: S, padding : CGFloat = 16, mainColor : Color = Neumorphic.shared.mainColor(), textColor : Color = Neumorphic.shared.secondaryColor(), darkShadowColor: Color = Neumorphic.shared.darkShadowColor(), lightShadowColor: Color = Neumorphic.shared.lightShadowColor(), pressedEffect : SoftButtonPressedEffect = .hard) -> some View {
public func softToggleStyle<S : Shape>(_ content: S, padding : CGFloat = 16, mainColor : Color = Color.Neumorphic.main, textColor : Color = Color.Neumorphic.secondary, darkShadowColor: Color = Color.Neumorphic.darkShadow, lightShadowColor: Color = Color.Neumorphic.lightShadow, pressedEffect : SoftButtonPressedEffect = .hard) -> some View {
self.toggleStyle(SoftDynamicToggleStyle(content, mainColor: mainColor, textColor: textColor, darkShadowColor: darkShadowColor, lightShadowColor: lightShadowColor, pressedEffect : pressedEffect, padding:padding))
}

public func softSwitchToggleStyle(tint: Color = .green, offTint: Color = Neumorphic.shared.mainColor(), mainColor : Color = Neumorphic.shared.mainColor(), darkShadowColor: Color = Neumorphic.shared.darkShadowColor(), lightShadowColor: Color = Neumorphic.shared.lightShadowColor(), labelsHidden : Bool = false) -> some View {
public func softSwitchToggleStyle(tint: Color = .green, offTint: Color = Color.Neumorphic.main, mainColor : Color = Color.Neumorphic.main, darkShadowColor: Color = Color.Neumorphic.darkShadow, lightShadowColor: Color = Color.Neumorphic.lightShadow, labelsHidden : Bool = false) -> some View {
return self.toggleStyle(SoftSwitchToggleStyle(tintColor: tint, offTintColor: offTint, mainColor: mainColor, darkShadowColor: darkShadowColor, lightShadowColor: lightShadowColor, hideLabel: labelsHidden))
}

Expand Down
2 changes: 1 addition & 1 deletion Sources/Neumorphic/SoftInnerShadowViewModifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ private struct SoftInnerShadowViewModifier<S: Shape> : ViewModifier {
//For more readable, we extend the View and create a softInnerShadow function.
extension View {

public func softInnerShadow<S : Shape>(_ content: S, darkShadow: Color = Neumorphic.shared.darkShadowColor(), lightShadow: Color = Neumorphic.shared.lightShadowColor(), spread: CGFloat = 0.5, radius: CGFloat = 10) -> some View {
public func softInnerShadow<S : Shape>(_ content: S, darkShadow: Color = Color.Neumorphic.darkShadow, lightShadow: Color = Color.Neumorphic.lightShadow, spread: CGFloat = 0.5, radius: CGFloat = 10) -> some View {
modifier(
SoftInnerShadowViewModifier(shape: content, darkShadowColor: darkShadow, lightShadowColor: lightShadow, spread: spread, radius: radius)
)
Expand Down
2 changes: 1 addition & 1 deletion Sources/Neumorphic/SoftOuterShadowViewModifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ private struct SoftOuterShadowViewModifier: ViewModifier {

extension View {

public func softOuterShadow(darkShadow: Color = Neumorphic.shared.darkShadowColor(), lightShadow: Color = Neumorphic.shared.lightShadowColor(), offset: CGFloat = 6, radius:CGFloat = 3) -> some View {
public func softOuterShadow(darkShadow: Color = Color.Neumorphic.darkShadow, lightShadow: Color = Color.Neumorphic.lightShadow, offset: CGFloat = 6, radius:CGFloat = 3) -> some View {
modifier(SoftOuterShadowViewModifier(darkShadowColor: darkShadow, lightShadowColor: lightShadow, offset: offset, radius: radius))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ struct ContentView: View {

var body: some View {
let cornerRadius : CGFloat = 15
Neumorphic.shared.colorScheme = colorScheme
let mainColor = Neumorphic.shared.mainColor()
let secondaryColor = Neumorphic.shared.secondaryColor()
let mainColor = Color.Neumorphic.main
let secondaryColor = Color.Neumorphic.secondary

return ZStack {
mainColor.edgesIgnoringSafeArea(.all)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@ struct SoftButtonDemoView: View {
@Environment(\.colorScheme) var colorScheme: ColorScheme

var body: some View {
Neumorphic.shared.colorScheme = colorScheme
return NavigationView {
ZStack {
Neumorphic.shared.mainColor().edgesIgnoringSafeArea(.all)
Color.Neumorphic.main.edgesIgnoringSafeArea(.all)

ScrollView {
VStack(spacing:25){
Expand Down Expand Up @@ -65,7 +64,7 @@ struct SoftButtonDemoView: View {
}


Text("Pressed Effect").font(.headline).foregroundColor(Neumorphic.shared.secondaryColor())
Text("Pressed Effect").font(.headline).foregroundColor(Color.Neumorphic.secondary)

HStack {
Spacer()
Expand All @@ -84,7 +83,7 @@ struct SoftButtonDemoView: View {
}


Text("ContextMenu").font(.headline).foregroundColor(Neumorphic.shared.secondaryColor())
Text("ContextMenu").font(.headline).foregroundColor(Color.Neumorphic.secondary)

Button(action: {}) {
Text("Button").fontWeight(.bold)
Expand All @@ -98,7 +97,7 @@ struct SoftButtonDemoView: View {
}
))
.background(
Capsule().fill(Neumorphic.shared.mainColor()).softOuterShadow()
Capsule().fill(Color.Neumorphic.main).softOuterShadow()
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ extension Text {
public func demoViewSectionTitle() -> some View {
return self.font(.body)
.fontWeight(.bold)
.foregroundColor(Neumorphic.shared.secondaryColor())
.foregroundColor(Color.Neumorphic.secondary)
}
}

Expand All @@ -23,9 +23,8 @@ struct SoftSwitchToggleDemoView: View {
@State var toggleIsOn : Bool = false

var body: some View {
Neumorphic.shared.colorScheme = colorScheme
return ZStack {
Neumorphic.shared.mainColor().edgesIgnoringSafeArea(.all)
Color.Neumorphic.main.edgesIgnoringSafeArea(.all)
VStack(spacing:8){
Text("Toggle")
.font(.title)
Expand Down Expand Up @@ -90,8 +89,13 @@ struct SoftSwitchToggleDemoView: View {

struct SoftSwitchToggleDemoView_Previews: PreviewProvider {
static var previews: some View {
SoftSwitchToggleDemoView()
.environment(\.colorScheme, .light)
Group {
SoftSwitchToggleDemoView()
.environment(\.colorScheme, .light)

SoftSwitchToggleDemoView()
.environment(\.colorScheme, .dark)
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ struct SoftToggleDemoView: View {
@State var toggleIsOn : Bool = false

var body: some View {
Neumorphic.shared.colorScheme = colorScheme
return ZStack {
Neumorphic.shared.mainColor().edgesIgnoringSafeArea(.all)
Color.Neumorphic.main.edgesIgnoringSafeArea(.all)
ScrollView {
VStack(spacing:8){
//System Toggle Button
Expand Down Expand Up @@ -122,22 +121,21 @@ struct SoftToggleDemoView: View {
}

struct SoftToggleDemoView_Previews: PreviewProvider {
static var demoView: some View {
NavigationView {
SoftToggleDemoView()
.navigationBarTitle("Toggle Demo")
}
.navigationViewStyle(StackNavigationViewStyle())
}

static var previews: some View {
Group {
NavigationView {
SoftToggleDemoView()
.navigationBarTitle("Toggle Demo")
}
.navigationViewStyle(StackNavigationViewStyle())
.environment(\.colorScheme, .dark)
demoView
.environment(\.colorScheme, .light)

NavigationView {
SoftToggleDemoView()
.navigationBarTitle("Toggle Demo")
}
.navigationViewStyle(StackNavigationViewStyle())
.environment(\.colorScheme, .light)
demoView
.environment(\.colorScheme, .dark)
}
}
}

0 comments on commit 0c82d5c

Please sign in to comment.