CasinoGames/Blackjack/Theme/DesignConstants.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)
}
}