Skip to content

Commit

Permalink
Merge pull request #14 from dkk/master
Browse files Browse the repository at this point in the history
Refactoring
  • Loading branch information
costachung committed Feb 15, 2021
2 parents 40add15 + 809ccba commit f747e18
Showing 1 changed file with 31 additions and 49 deletions.
80 changes: 31 additions & 49 deletions Sources/Neumorphic/ColorExtension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,76 +3,58 @@ import SwiftUI
public extension Color {

struct Neumorphic {

//Color
private static let defaultMainColor = Color(red: 0.925, green: 0.941, blue: 0.953, opacity: 1.000)
private static let defaultSecondaryColor = Color(red: 0.482, green: 0.502, blue: 0.549, opacity: 1.000)
private static let defaultLightShadowSolidColor = Color(red: 1.000, green: 1.000, blue: 1.000, opacity: 1.000)
private static let defaultDarkShadowSolidColor = Color(red: 0.820, green: 0.851, blue: 0.902, opacity: 1.000)
private static let defaultLightShadowColor = Color(red: 1.000, green: 1.000, blue: 1.000, opacity: 0.500)
private static let defaultDarkShadowColor = Color(red: 0.66, green: 0.72, blue: 0.84, opacity: 0.55)

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

//CGColor
private static let defaultMainCGColor = CGColor(red: 0.925, green: 0.941, blue: 0.953, alpha: 1.000)
private static let defaultSecondaryCGColor = CGColor(red: 0.482, green: 0.502, blue: 0.549, alpha: 1.000)
private static let defaultLightShadowSolidCGColor = CGColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1.000)
private static let defaultDarkShadowSolidCGColor = CGColor(red: 0.820, green: 0.851, blue: 0.902, alpha: 1.000)
private static let defaultLightShadowCGColor = CGColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.500)
private static let defaultDarkShadowCGColor = CGColor(red: 0.66, green: 0.72, blue: 0.84, alpha: 0.55)

private static let darkThemeMainCGColor = CGColor(red: 0.188, green: 0.192, blue: 0.208, alpha: 1.000)
private static let darkThemeSecondaryCGColor = CGColor(red: 0.910, green: 0.910, blue: 0.910, alpha: 1.000)
private static let darkThemeLightShadowSolidCGColor = CGColor(red: 0.243, green: 0.247, blue: 0.275, alpha: 1.000)
private static let darkThemeDarkShadowSolidCGColor = CGColor(red: 0.137, green: 0.137, blue: 0.137, alpha: 1.000)
private static let darkThemeLightShadowCGColor = CGColor(red: 1, green: 1, blue: 1, alpha: 0.1)
private static let darkThemeDarkShadowCGColor = CGColor(red: 0, green: 0, blue: 0, alpha: 0.5)

#if os(macOS)
private typealias ColorType = Color
private static func colorType(red: Double, green: Double, blue: Double) -> ColorType {
.init(red: red, green: green, blue: blue, opacity: 1.0)
}

private static func isDarkMode() -> Bool {
if let window = NSApp.mainWindow {
return window.effectiveAppearance.bestMatch(from: [.darkAqua, .aqua]) == .darkAqua
}
return NSAppearance.current.bestMatch(from: [.darkAqua, .aqua]) == .darkAqua
}
#else
private typealias ColorType = UIColor
private static func colorType(red: CGFloat, green: CGFloat, blue: CGFloat) -> ColorType {
.init(red: red, green: green, blue: blue, alpha: 1.0)
}
#endif

public static var main: Color {
private static func color(light: ColorType, dark: ColorType) -> Color {
#if os(iOS)
return Color(.init { $0.userInterfaceStyle == .light ? UIColor(cgColor: defaultMainCGColor) : UIColor(cgColor: darkThemeMainCGColor) })
return Color(.init { $0.userInterfaceStyle == .light ? light : dark })
#else
return isDarkMode() ? darkThemeMainColor : defaultMainColor
return isDarkMode() ? dark : light
#endif
}

//Color
private static let defaultMainColor = colorType(red: 0.925, green: 0.941, blue: 0.953)
private static let defaultSecondaryColor = colorType(red: 0.482, green: 0.502, blue: 0.549)
private static let defaultLightShadowSolidColor = colorType(red: 1.000, green: 1.000, blue: 1.000)
private static let defaultDarkShadowSolidColor = colorType(red: 0.820, green: 0.851, blue: 0.902)

private static let darkThemeMainColor = colorType(red: 0.188, green: 0.192, blue: 0.208)
private static let darkThemeSecondaryColor = colorType(red: 0.910, green: 0.910, blue: 0.910)
private static let darkThemeLightShadowSolidColor = colorType(red: 0.243, green: 0.247, blue: 0.275)
private static let darkThemeDarkShadowSolidColor = colorType(red: 0.137, green: 0.137, blue: 0.137)

public static var main: Color {
color(light: defaultMainColor, dark: darkThemeMainColor)
}

public static var secondary: Color {
#if os(iOS)
return Color(.init { $0.userInterfaceStyle == .light ? UIColor(cgColor: defaultSecondaryCGColor) : UIColor(cgColor: darkThemeSecondaryCGColor) })
#else
return isDarkMode() ? darkThemeSecondaryColor : defaultSecondaryColor
#endif
color(light: defaultSecondaryColor, dark: darkThemeSecondaryColor)
}

public static var lightShadow: Color {
#if os(iOS)
return Color(.init { $0.userInterfaceStyle == .light ? UIColor(cgColor: defaultLightShadowSolidCGColor) : UIColor(cgColor: darkThemeLightShadowSolidCGColor) })
#else
return isDarkMode() ? darkThemeLightShadowSolidColor : defaultLightShadowSolidColor
#endif
color(light: defaultLightShadowSolidColor, dark: darkThemeLightShadowSolidColor)
}

public static var darkShadow: Color {
#if os(iOS)
return Color(.init { $0.userInterfaceStyle == .light ? UIColor(cgColor: defaultDarkShadowSolidCGColor) : UIColor(cgColor: darkThemeDarkShadowSolidCGColor) })
#else
return isDarkMode() ? darkThemeDarkShadowColor : defaultDarkShadowSolidColor
#endif
color(light: defaultDarkShadowSolidColor, dark: darkThemeDarkShadowSolidColor)
}
}
}

0 comments on commit f747e18

Please sign in to comment.