secant-ios-wallet/modules/Sources/Generated/DesignSystem.swift

836 lines
42 KiB
Swift

//
// DesignSystem.swift
// Zashi
//
// Created by Lukáš Korba on 28.08.2024.
//
import Foundation
import SwiftUI
public protocol Colorable {
func color(_ colorScheme: ColorScheme) -> Color
}
public enum Design {
case screenBackground
// MARK: Color Variables
public enum Surfaces: Colorable {
case bgPrimary
case bgAdjust
case bgSecondary
case bgTertiary
case bgQuaternary
case strokePrimary
case strokeSecondary
case strokeTertiary
case bgAlt
case bgHide
case brandPrimary
case brandSecondary
case brandFg
case divider
}
public enum Text: Colorable {
case primary
case secondary
case tertiary
case quaternary
case support
case disabled
case error
case link
case opposite
case oppositeSupport
}
public enum Btns {
public enum Primary: Colorable {
case bg
case bgHover
case fg
case bgDisabled
case fgDisabled
}
public enum Secondary: Colorable {
case bg
case bgHover
case fg
case fgHover
case border
case borderHover
case bgDisabled
case fgDisabled
}
public enum Tertiary: Colorable {
case bg
case bgHover
case fg
case fgHover
case bgDisabled
case fgDisabled
}
public enum Quaternary: Colorable {
case bg
case bgHover
case fg
case fgHover
case bgDisabled
case fgDisabled
}
public enum Destructive1: Colorable {
case bg
case bgHover
case fg
case fgHover
case border
case borderHover
case bgDisabled
case fgDisabled
}
public enum Destructive2: Colorable {
case bg
case bgHover
case fg
case bgDisabled
case fgDisabled
}
public enum Brand: Colorable {
case bg
case bgHover
case fg
case fgHover
case bgDisabled
case fgDisabled
}
public enum Ghost: Colorable {
case bg
case bgHover
case fg
case bgDisabled
case fgDisabled
}
}
public enum Tags: Colorable {
case tcDefaultFg
case tcHoverBg
case tcHoverFg
case tcCountBg
case tcCountFg
case surfaceIndicator
case surfacePrimary
case surfaceStroke
}
public enum Inputs {
public enum Default: Colorable {
case bg
case bgAlt
case label
case text
case hint
case required
case icon
case stroke
}
public enum Filled: Colorable {
case bg
case bgAlt
case asideBg
case stroke
case label
case text
case hint
case icon
case iconMain
case required
}
public enum ErrorFilled: Colorable {
case bg
case bgAlt
case label
case text
case textAside
case hint
case icon
case iconMain
case stroke
case strokeAlt
case dropdown
}
}
public enum Avatars: Colorable {
case profileBorder
case bg
case bgSecondary
case status
case textFg
case badgeBg
case badgeFg
}
public enum Checkboxes: Colorable {
case offBg
case offStroke
case offHoverBg
case offHoverStroke
case offDisabledBg
case offDisabledStroke
case onBg
case onFg
case onHoverBg
case onDisabledBg
case onDisabledStroke
case onDisabledFb
}
public enum HintTooltips: Colorable {
case surfacePrimary
case defaultBg
case defaultFg
case hoverBg
case hoverFg
case focusedBg
case focusedStroke
case disabledBg
case disabledFg
case titleText
case bodyText
}
public enum Dropdowns {
public enum Default: Colorable {
case bg
case label
case text
case hint
case required
case icon
case dropdown
case active
}
}
public enum Utility {
public enum Gray: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum SuccessGreen: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum ErrorRed: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum WarningYellow: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum HyperBlue: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum Indigo: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
public enum Purple: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
case _950
}
public enum Brand: Colorable {
case _50
case _100
case _200
case _300
case _400
case _500
case _600
case _700
case _800
case _900
}
}
// MARK: - Corner Radius Constants
public enum Radius {
public static let _none: CGFloat = 0
public static let _xxs: CGFloat = 2
public static let _xs: CGFloat = 4
public static let _sm: CGFloat = 6
public static let _md: CGFloat = 8
public static let _lg: CGFloat = 10
public static let _xl: CGFloat = 12
public static let _2xl: CGFloat = 16
public static let _3xl: CGFloat = 20
public static let _4xl: CGFloat = 24
public static let _5xl: CGFloat = 32
public static let _full: CGFloat = 9999
}
// MARK: - Spacing Constants
public enum Spacing {
public static let _none: CGFloat = 0
public static let _xxs: CGFloat = 2
public static let _xs: CGFloat = 4
public static let _sm: CGFloat = 6
public static let _md: CGFloat = 8
public static let _lg: CGFloat = 12
public static let _xl: CGFloat = 16
public static let _2xl: CGFloat = 20
public static let _3xl: CGFloat = 24
public static let _4xl: CGFloat = 32
public static let _5xl: CGFloat = 40
public static let _6xl: CGFloat = 48
public static let _7xl: CGFloat = 64
public static let _8xl: CGFloat = 80
public static let _9xl: CGFloat = 96
public static let _10xl: CGFloat = 128
public static let _11xl: CGFloat = 160
}
}
public extension Design {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .screenBackground: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.midnight.color, colorScheme)
}
}
}
// MARK: Color Variable Values
public extension Design.Surfaces {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bgPrimary: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.midnight.color, colorScheme)
case .bgAdjust: return Design.col(Asset.Colors.ZDesign.Base.concrete.color, Asset.Colors.ZDesign.sharkShades02dp.color, colorScheme)
case .bgSecondary: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .bgTertiary: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .bgQuaternary: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .strokePrimary: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .strokeSecondary: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .strokeTertiary: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .bgAlt: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.bone.color, colorScheme)
case .bgHide: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.midnight.color, colorScheme)
case .brandPrimary: return Design.col(Asset.Colors.ZDesign.Base.brand.color, Asset.Colors.ZDesign.Base.brand.color, colorScheme)
case .brandSecondary: return Design.col(Asset.Colors.ZDesign.brand300.color, Asset.Colors.ZDesign.brand600.color, colorScheme)
case .brandFg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.midnight.color, colorScheme)
case .divider: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
}
}
}
public extension Design.Text {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .primary: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .secondary: return Design.col(Asset.Colors.ZDesign.gray800.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case .tertiary: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case .quaternary: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .support: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .disabled: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .error: return Design.col(Asset.Colors.ZDesign.errorRed500.color, Asset.Colors.ZDesign.errorRed300.color, colorScheme)
case .link: return Design.col(Asset.Colors.ZDesign.hyperBlue500.color, Asset.Colors.ZDesign.hyperBlue300.color, colorScheme)
case .opposite: return Design.col(Asset.Colors.ZDesign.gray25.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .oppositeSupport: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
}
}
}
public extension Design.Btns.Primary {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.bone.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.gray100.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Secondary {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark950.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .fgHover: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .border: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .borderHover: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Tertiary {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case .fgHover: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Quaternary {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .fgHover: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Destructive1 {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.errorRed950.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.errorRed50.color, Asset.Colors.ZDesign.espresso900.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed100.color, colorScheme)
case .fgHover: return Design.col(Asset.Colors.ZDesign.errorRed700.color, Asset.Colors.ZDesign.errorRed50.color, colorScheme)
case .border: return Design.col(Asset.Colors.ZDesign.errorRed300.color, Asset.Colors.ZDesign.errorRed800.color, colorScheme)
case .borderHover: return Design.col(Asset.Colors.ZDesign.errorRed300.color, Asset.Colors.ZDesign.errorRed700.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Destructive2 {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed600.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.errorRed700.color, Asset.Colors.ZDesign.errorRed700.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.errorRed50.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Brand {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.brand400.color, Asset.Colors.ZDesign.brand400.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.brand300.color, Asset.Colors.ZDesign.brand300.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .fgHover: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Btns.Ghost {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .bgHover: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.gray900.color, colorScheme)
case .fg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .bgDisabled: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .fgDisabled: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
}
}
}
public extension Design.Tags {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .tcDefaultFg: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .tcHoverBg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .tcHoverFg: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case .tcCountBg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .tcCountFg: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .surfaceIndicator: return Design.col(Asset.Colors.ZDesign.successGreen600.color, Asset.Colors.ZDesign.successGreen500.color, colorScheme)
case .surfacePrimary: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.midnight.color, colorScheme)
case .surfaceStroke: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
}
}
}
public extension Design.Inputs.Default {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .bgAlt: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark950.color, colorScheme)
case .label: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .text: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .hint: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .required: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
case .icon: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .stroke: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
}
}
}
public extension Design.Inputs.Filled {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .bgAlt: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark950.color, colorScheme)
case .asideBg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .stroke: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .label: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .text: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case .hint: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .icon: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .iconMain: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .required: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
}
}
}
public extension Design.Inputs.ErrorFilled {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark950.color, colorScheme)
case .bgAlt: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .label: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .text: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case .textAside: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .hint: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
case .icon: return Design.col(Asset.Colors.ZDesign.errorRed500.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
case .iconMain: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .stroke: return Design.col(Asset.Colors.ZDesign.errorRed400.color, Asset.Colors.ZDesign.errorRed500.color, colorScheme)
case .strokeAlt: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .dropdown: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
}
}
}
public extension Design.Avatars {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .profileBorder: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
case .bg: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .bgSecondary: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .status: return Design.col(Asset.Colors.ZDesign.successGreen500.color, Asset.Colors.ZDesign.successGreen400.color, colorScheme)
case .textFg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case .badgeBg: return Design.col(Asset.Colors.ZDesign.hyperBlue400.color, Asset.Colors.ZDesign.hyperBlue400.color, colorScheme)
case .badgeFg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.Base.obsidian.color, colorScheme)
}
}
}
public extension Design.Checkboxes {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .offBg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .offStroke: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .offHoverBg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .offHoverStroke: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .offDisabledBg: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .offDisabledStroke: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .onBg: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .onFg: return Design.col(Asset.Colors.ZDesign.Base.bone.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .onHoverBg: return Design.col(Asset.Colors.ZDesign.gray800.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .onDisabledBg: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .onDisabledStroke: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .onDisabledFb: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
}
}
}
public extension Design.HintTooltips {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .surfacePrimary: return Design.col(Asset.Colors.ZDesign.gray950.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .defaultBg: return Design.col(Asset.Colors.ZDesign.gray950.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .defaultFg: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case .hoverBg: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .hoverFg: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case .focusedBg: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case .focusedStroke: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .disabledBg: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case .disabledFg: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case .titleText: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .bodyText: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
}
}
}
public extension Design.Dropdowns.Default {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case .bg: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case .label: return Design.col(Asset.Colors.ZDesign.Base.obsidian.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
case .text: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .hint: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case .required: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
case .icon: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case .dropdown: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case .active: return Design.col(Asset.Colors.ZDesign.successGreen500.color, Asset.Colors.ZDesign.successGreen400.color, colorScheme)
}
}
}
public extension Design.Utility.Gray {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.gray50.color, Asset.Colors.ZDesign.shark900.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.gray100.color, Asset.Colors.ZDesign.shark800.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.gray200.color, Asset.Colors.ZDesign.shark700.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.gray300.color, Asset.Colors.ZDesign.shark600.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.gray400.color, Asset.Colors.ZDesign.shark500.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.gray500.color, Asset.Colors.ZDesign.shark400.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.gray600.color, Asset.Colors.ZDesign.shark300.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.gray700.color, Asset.Colors.ZDesign.shark200.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.gray800.color, Asset.Colors.ZDesign.shark100.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.gray900.color, Asset.Colors.ZDesign.shark50.color, colorScheme)
}
}
}
public extension Design.Utility.SuccessGreen {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.successGreen50.color, Asset.Colors.ZDesign.successGreen950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.successGreen100.color, Asset.Colors.ZDesign.successGreen900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.successGreen200.color, Asset.Colors.ZDesign.successGreen800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.successGreen300.color, Asset.Colors.ZDesign.successGreen700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.successGreen400.color, Asset.Colors.ZDesign.successGreen600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.successGreen500.color, Asset.Colors.ZDesign.successGreen500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.successGreen600.color, Asset.Colors.ZDesign.successGreen400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.successGreen700.color, Asset.Colors.ZDesign.successGreen300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.successGreen800.color, Asset.Colors.ZDesign.successGreen200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.successGreen900.color, Asset.Colors.ZDesign.successGreen100.color, colorScheme)
}
}
}
public extension Design.Utility.ErrorRed {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.errorRed50.color, Asset.Colors.ZDesign.errorRed950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.errorRed100.color, Asset.Colors.ZDesign.errorRed900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.errorRed200.color, Asset.Colors.ZDesign.errorRed800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.errorRed300.color, Asset.Colors.ZDesign.errorRed700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.errorRed400.color, Asset.Colors.ZDesign.errorRed600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.errorRed500.color, Asset.Colors.ZDesign.errorRed500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.errorRed600.color, Asset.Colors.ZDesign.errorRed400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.errorRed700.color, Asset.Colors.ZDesign.errorRed300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.errorRed800.color, Asset.Colors.ZDesign.errorRed200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.errorRed900.color, Asset.Colors.ZDesign.errorRed100.color, colorScheme)
}
}
}
public extension Design.Utility.WarningYellow {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.warningYellow50.color, Asset.Colors.ZDesign.warningYellow950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.warningYellow100.color, Asset.Colors.ZDesign.warningYellow900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.warningYellow200.color, Asset.Colors.ZDesign.warningYellow800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.warningYellow300.color, Asset.Colors.ZDesign.warningYellow700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.warningYellow400.color, Asset.Colors.ZDesign.warningYellow600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.warningYellow500.color, Asset.Colors.ZDesign.warningYellow500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.warningYellow600.color, Asset.Colors.ZDesign.warningYellow400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.warningYellow700.color, Asset.Colors.ZDesign.warningYellow300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.warningYellow800.color, Asset.Colors.ZDesign.warningYellow200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.warningYellow900.color, Asset.Colors.ZDesign.warningYellow100.color, colorScheme)
}
}
}
public extension Design.Utility.HyperBlue {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.hyperBlue50.color, Asset.Colors.ZDesign.hyperBlue950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.hyperBlue100.color, Asset.Colors.ZDesign.hyperBlue900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.hyperBlue200.color, Asset.Colors.ZDesign.hyperBlue800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.hyperBlue300.color, Asset.Colors.ZDesign.hyperBlue700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.hyperBlue400.color, Asset.Colors.ZDesign.hyperBlue600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.hyperBlue500.color, Asset.Colors.ZDesign.hyperBlue500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.hyperBlue600.color, Asset.Colors.ZDesign.hyperBlue400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.hyperBlue700.color, Asset.Colors.ZDesign.hyperBlue300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.hyperBlue800.color, Asset.Colors.ZDesign.hyperBlue200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.hyperBlue900.color, Asset.Colors.ZDesign.hyperBlue100.color, colorScheme)
}
}
}
public extension Design.Utility.Indigo {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.indigo50.color, Asset.Colors.ZDesign.indigo950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.indigo100.color, Asset.Colors.ZDesign.indigo900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.indigo200.color, Asset.Colors.ZDesign.indigo800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.indigo300.color, Asset.Colors.ZDesign.indigo700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.indigo400.color, Asset.Colors.ZDesign.indigo600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.indigo500.color, Asset.Colors.ZDesign.indigo500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.indigo600.color, Asset.Colors.ZDesign.indigo400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.indigo700.color, Asset.Colors.ZDesign.indigo300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.indigo800.color, Asset.Colors.ZDesign.indigo200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.indigo900.color, Asset.Colors.ZDesign.indigo100.color, colorScheme)
}
}
}
public extension Design.Utility.Purple {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.purple50.color, Asset.Colors.ZDesign.purple950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.purple100.color, Asset.Colors.ZDesign.purple900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.purple200.color, Asset.Colors.ZDesign.purple800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.purple300.color, Asset.Colors.ZDesign.purple700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.purple400.color, Asset.Colors.ZDesign.purple600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.purple500.color, Asset.Colors.ZDesign.purple500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.purple600.color, Asset.Colors.ZDesign.purple400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.purple700.color, Asset.Colors.ZDesign.purple300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.purple800.color, Asset.Colors.ZDesign.purple200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.purple900.color, Asset.Colors.ZDesign.purple100.color, colorScheme)
case ._950: return Design.col(Asset.Colors.ZDesign.purple950.color, Asset.Colors.ZDesign.purple50.color, colorScheme)
}
}
}
public extension Design.Utility.Brand {
func color(_ colorScheme: ColorScheme) -> Color {
switch self {
case ._50: return Design.col(Asset.Colors.ZDesign.brand50.color, Asset.Colors.ZDesign.brand950.color, colorScheme)
case ._100: return Design.col(Asset.Colors.ZDesign.brand100.color, Asset.Colors.ZDesign.brand900.color, colorScheme)
case ._200: return Design.col(Asset.Colors.ZDesign.brand200.color, Asset.Colors.ZDesign.brand800.color, colorScheme)
case ._300: return Design.col(Asset.Colors.ZDesign.brand300.color, Asset.Colors.ZDesign.brand700.color, colorScheme)
case ._400: return Design.col(Asset.Colors.ZDesign.brand400.color, Asset.Colors.ZDesign.brand600.color, colorScheme)
case ._500: return Design.col(Asset.Colors.ZDesign.brand500.color, Asset.Colors.ZDesign.brand500.color, colorScheme)
case ._600: return Design.col(Asset.Colors.ZDesign.brand600.color, Asset.Colors.ZDesign.brand400.color, colorScheme)
case ._700: return Design.col(Asset.Colors.ZDesign.brand700.color, Asset.Colors.ZDesign.brand300.color, colorScheme)
case ._800: return Design.col(Asset.Colors.ZDesign.brand800.color, Asset.Colors.ZDesign.brand200.color, colorScheme)
case ._900: return Design.col(Asset.Colors.ZDesign.brand900.color, Asset.Colors.ZDesign.brand100.color, colorScheme)
}
}
}
// MARK: Helpers
private extension Design {
static func col(_ light: Color, _ dark: Color, _ colorScheme: ColorScheme) -> Color {
colorScheme == .light ? light : dark
}
}
// MARK: - View Modifiers
struct ZashiForegroundColorModifier: ViewModifier {
@Environment(\.colorScheme) var colorScheme
let style: Colorable
func body(content: Content) -> some View {
content.foregroundColor(style.color(colorScheme))
}
}
public extension View {
func zForegroundColor(_ style: Colorable) -> some View {
modifier(ZashiForegroundColorModifier(style: style))
}
}
struct ZashiColorBackgroundModifier: ViewModifier {
@Environment(\.colorScheme) var colorScheme
let style: Colorable
func body(content: Content) -> some View {
content.background(style.color(colorScheme))
}
}
public extension View {
func zBackground(_ style: Colorable) -> some View {
modifier(ZashiColorBackgroundModifier(style: style))
}
}