203 lines
5.9 KiB
Swift
203 lines
5.9 KiB
Swift
//
|
|
// DesignConstants.swift
|
|
// Blackjack
|
|
//
|
|
// Centralized design constants for the Blackjack app.
|
|
//
|
|
|
|
import SwiftUI
|
|
import CasinoKit
|
|
|
|
// MARK: - Design Namespace
|
|
|
|
enum Design {
|
|
// Reuse CasinoDesign where appropriate
|
|
typealias Animation = CasinoDesign.Animation
|
|
typealias Scale = CasinoDesign.Scale
|
|
typealias MinScaleFactor = CasinoDesign.MinScaleFactor
|
|
|
|
// MARK: - Spacing
|
|
|
|
enum Spacing {
|
|
static let xxSmall: CGFloat = 2
|
|
static let xSmall: CGFloat = 4
|
|
static let small: CGFloat = 8
|
|
static let medium: CGFloat = 12
|
|
static let large: CGFloat = 16
|
|
static let xLarge: CGFloat = 20
|
|
static let xxLarge: CGFloat = 24
|
|
static let xxxLarge: CGFloat = 32
|
|
}
|
|
|
|
// MARK: - Corner Radius
|
|
|
|
enum CornerRadius {
|
|
static let xSmall: CGFloat = 4
|
|
static let small: CGFloat = 8
|
|
static let medium: CGFloat = 12
|
|
static let large: CGFloat = 16
|
|
static let xLarge: CGFloat = 20
|
|
static let xxLarge: CGFloat = 24
|
|
static let xxxLarge: CGFloat = 32
|
|
}
|
|
|
|
// MARK: - Base Font Sizes
|
|
|
|
enum BaseFontSize {
|
|
static let xxSmall: CGFloat = 8
|
|
static let xSmall: CGFloat = 10
|
|
static let small: CGFloat = 12
|
|
static let body: CGFloat = 14
|
|
static let medium: CGFloat = 16
|
|
static let large: CGFloat = 18
|
|
static let xLarge: CGFloat = 20
|
|
static let xxLarge: CGFloat = 24
|
|
static let title: CGFloat = 28
|
|
static let largeTitle: CGFloat = 32
|
|
static let display: CGFloat = 48
|
|
}
|
|
|
|
// MARK: - Opacity
|
|
|
|
enum Opacity {
|
|
static let verySubtle: Double = 0.05
|
|
static let subtle: Double = 0.1
|
|
static let hint: Double = 0.2
|
|
static let light: Double = 0.3
|
|
static let medium: Double = 0.5
|
|
static let accent: Double = 0.6
|
|
static let strong: Double = 0.7
|
|
static let heavy: Double = 0.8
|
|
static let almostFull: Double = 0.9
|
|
}
|
|
|
|
// MARK: - Line Width
|
|
|
|
enum LineWidth {
|
|
static let thin: CGFloat = 1
|
|
static let medium: CGFloat = 2
|
|
static let thick: CGFloat = 3
|
|
static let heavy: CGFloat = 4
|
|
}
|
|
|
|
// MARK: - Shadow
|
|
|
|
enum Shadow {
|
|
static let radiusSmall: CGFloat = 2
|
|
static let radiusMedium: CGFloat = 6
|
|
static let radiusLarge: CGFloat = 10
|
|
static let radiusXLarge: CGFloat = 15
|
|
static let offsetSmall: CGFloat = 1
|
|
static let offsetMedium: CGFloat = 3
|
|
static let offsetLarge: CGFloat = 5
|
|
}
|
|
|
|
// MARK: - Sizes
|
|
|
|
enum Size {
|
|
// Cards
|
|
static let cardWidth: CGFloat = 55
|
|
static let cardWidthSmall: CGFloat = 45
|
|
static let cardOverlap: CGFloat = -15
|
|
|
|
// Table
|
|
static let tableHeight: CGFloat = 280
|
|
static let bettingZoneHeight: CGFloat = 80
|
|
static let chipBadgeSize: CGFloat = 32
|
|
|
|
// Buttons
|
|
static let actionButtonHeight: CGFloat = 50
|
|
static let actionButtonMinWidth: CGFloat = 80
|
|
|
|
// Responsive
|
|
static let maxContentWidthPortrait: CGFloat = 500
|
|
static let maxContentWidthLandscape: CGFloat = 800
|
|
static let maxModalWidth: CGFloat = 450
|
|
}
|
|
|
|
// MARK: - Icon Sizes
|
|
|
|
enum IconSize {
|
|
static let small: CGFloat = 16
|
|
static let medium: CGFloat = 20
|
|
static let large: CGFloat = 24
|
|
static let xLarge: CGFloat = 32
|
|
}
|
|
}
|
|
|
|
// MARK: - Color Extensions
|
|
|
|
extension Color {
|
|
// MARK: - Table Colors
|
|
|
|
enum Table {
|
|
static let felt = Color(red: 0.05, green: 0.35, blue: 0.15)
|
|
static let feltDark = Color(red: 0.03, green: 0.25, blue: 0.1)
|
|
static let feltLight = Color(red: 0.08, green: 0.45, blue: 0.2)
|
|
static let border = Color(red: 0.6, green: 0.5, blue: 0.3)
|
|
}
|
|
|
|
// MARK: - Betting Zone Colors
|
|
|
|
enum BettingZone {
|
|
static let main = Color(red: 0.2, green: 0.4, blue: 0.3)
|
|
static let mainBorder = Color(red: 0.4, green: 0.6, blue: 0.4)
|
|
static let insurance = Color(red: 0.5, green: 0.4, blue: 0.2)
|
|
static let insuranceBorder = Color(red: 0.7, green: 0.6, blue: 0.3)
|
|
}
|
|
|
|
// MARK: - Hand Colors
|
|
|
|
enum Hand {
|
|
static let player = Color(red: 0.2, green: 0.5, blue: 0.8)
|
|
static let dealer = Color(red: 0.8, green: 0.3, blue: 0.3)
|
|
static let active = Color.yellow
|
|
static let inactive = Color.white.opacity(0.5)
|
|
}
|
|
|
|
// MARK: - Result Colors
|
|
|
|
enum Result {
|
|
static let win = Color.green
|
|
static let lose = Color.red
|
|
static let push = Color.blue
|
|
static let blackjack = Color.yellow
|
|
}
|
|
|
|
// MARK: - Button Colors
|
|
|
|
enum Button {
|
|
static let hit = Color(red: 0.2, green: 0.6, blue: 0.3)
|
|
static let stand = Color(red: 0.6, green: 0.4, blue: 0.1)
|
|
static let doubleDown = Color(red: 0.5, green: 0.3, blue: 0.6)
|
|
static let split = Color(red: 0.3, green: 0.5, blue: 0.7)
|
|
static let surrender = Color(red: 0.6, green: 0.3, blue: 0.3)
|
|
static let insurance = Color(red: 0.7, green: 0.6, blue: 0.2)
|
|
|
|
static let goldLight = Color(red: 1.0, green: 0.85, blue: 0.3)
|
|
static let goldDark = Color(red: 0.9, green: 0.7, blue: 0.2)
|
|
}
|
|
|
|
// MARK: - Settings Colors
|
|
|
|
enum Settings {
|
|
static let background = Color(red: 0.08, green: 0.12, blue: 0.18)
|
|
static let cardBackground = Color.white.opacity(Design.Opacity.verySubtle)
|
|
static let accent = Color(red: 0.9, green: 0.75, blue: 0.3)
|
|
}
|
|
|
|
// MARK: - Modal Colors
|
|
|
|
enum Modal {
|
|
static let backgroundLight = Color(red: 0.15, green: 0.2, blue: 0.3)
|
|
static let backgroundDark = Color(red: 0.1, green: 0.15, blue: 0.25)
|
|
}
|
|
|
|
// MARK: - TopBar Colors
|
|
|
|
enum TopBar {
|
|
static let balance = Color(red: 0.95, green: 0.85, blue: 0.4)
|
|
}
|
|
}
|
|
|