// // DesignConstants.swift // Baccarat // // Design system constants for consistent styling across the app. // Uses CasinoDesign from CasinoKit for shared values, with game-specific overrides. // import SwiftUI import CasinoKit /// Design constants for the Baccarat app. /// Shared constants are imported from CasinoDesign; game-specific values are defined here. enum Design { // MARK: - Shared Constants (from CasinoKit) typealias Spacing = CasinoDesign.Spacing typealias CornerRadius = CasinoDesign.CornerRadius typealias LineWidth = CasinoDesign.LineWidth typealias Shadow = CasinoDesign.Shadow typealias Opacity = CasinoDesign.Opacity typealias Animation = CasinoDesign.Animation typealias Scale = CasinoDesign.Scale typealias MinScaleFactor = CasinoDesign.MinScaleFactor typealias BaseFontSize = CasinoDesign.BaseFontSize typealias IconSize = CasinoDesign.IconSize // MARK: - Baccarat-Specific Component Sizes enum Size { // Cards - use CasinoDesign values static let cardWidthSmall: CGFloat = CasinoDesign.Size.cardWidthSmall static let cardWidthMedium: CGFloat = CasinoDesign.Size.cardWidthMedium static let cardWidthLarge: CGFloat = CasinoDesign.Size.cardWidthLarge // Chips - use CasinoDesign values static let chipSmall: CGFloat = CasinoDesign.Size.chipSmall static let chipMedium: CGFloat = CasinoDesign.Size.chipMedium static let chipSelector: CGFloat = CasinoDesign.Size.chipMedium static let chipBadge: CGFloat = CasinoDesign.Size.chipBadge static let chipBadgeInner: CGFloat = CasinoDesign.Size.chipBadgeInner // Shared values static let valueBadge: CGFloat = CasinoDesign.Size.valueBadge static let checkmark: CGFloat = CasinoDesign.Size.checkmark static let maxContentWidthPortrait: CGFloat = CasinoDesign.Size.maxContentWidthPortrait static let maxContentWidthLandscape: CGFloat = CasinoDesign.Size.maxContentWidthLandscape static let maxModalWidth: CGFloat = CasinoDesign.Size.maxModalWidth // Baccarat-specific table layout static let tableAspectRatio: CGFloat = 1.6 static let roadMapCell: CGFloat = 16 static let diamondIcon: CGFloat = 24 static let topBetRowHeight: CGFloat = 52 static let mainBetRowHeight: CGFloat = 65 static let bonusZoneWidth: CGFloat = 80 } } // MARK: - Baccarat App Colors extension Color { // MARK: - Table Colors (use CasinoTable from CasinoKit) /// Typealias for consistent table colors across all games. typealias Table = CasinoTable // MARK: - Border Colors enum Border { static let goldLight = CasinoTable.goldLight static let goldDark = CasinoTable.goldDark static let gold = Color(red: 0.7, green: 0.55, blue: 0.25) static let silver = Color(red: 0.6, green: 0.6, blue: 0.65) } // MARK: - Betting Zone Colors enum BettingZone { // Player (Blue) static let playerLight = Color(red: 0.1, green: 0.25, blue: 0.55) static let playerDark = Color(red: 0.05, green: 0.15, blue: 0.4) static let playerMaxLight = Color(red: 0.08, green: 0.18, blue: 0.4) static let playerMaxDark = Color(red: 0.04, green: 0.1, blue: 0.28) // Banker (Red) static let bankerLight = Color(red: 0.55, green: 0.12, blue: 0.12) static let bankerDark = Color(red: 0.4, green: 0.08, blue: 0.08) static let bankerMaxLight = Color(red: 0.4, green: 0.1, blue: 0.1) static let bankerMaxDark = Color(red: 0.28, green: 0.06, blue: 0.06) // Tie (Green) static let tie = Color(red: 0.1, green: 0.45, blue: 0.25) static let tieMax = Color(red: 0.08, green: 0.32, blue: 0.18) // Dragon Bonus (Purple/Blue gradient) static let dragonBonusLight = Color(red: 0.25, green: 0.3, blue: 0.45) static let dragonBonusDark = Color(red: 0.15, green: 0.2, blue: 0.35) } // MARK: - Button Colors enum Button { 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) static let destructive = Color(red: 0.6, green: 0.2, blue: 0.2) } // MARK: - Chip Colors (for theming) enum Chip { static let gold = Color(red: 0.8, green: 0.65, blue: 0.2) // Chip base colors by denomination static let tenBase = Color(red: 0.2, green: 0.4, blue: 0.8) static let tenHighlight = Color(red: 0.3, green: 0.5, blue: 0.9) static let twentyFiveBase = Color(red: 0.1, green: 0.6, blue: 0.3) static let twentyFiveHighlight = Color(red: 0.2, green: 0.7, blue: 0.4) static let fiftyBase = Color(red: 0.8, green: 0.5, blue: 0.1) static let fiftyHighlight = Color(red: 0.9, green: 0.6, blue: 0.2) static let hundredBase = Color(red: 0.1, green: 0.1, blue: 0.1) static let hundredHighlight = Color(red: 0.3, green: 0.3, blue: 0.3) static let fiveHundredBase = Color(red: 0.6, green: 0.2, blue: 0.6) static let fiveHundredHighlight = Color(red: 0.7, green: 0.3, blue: 0.7) static let thousandBase = Color(red: 0.8, green: 0.65, blue: 0.2) static let thousandHighlight = Color(red: 0.9, green: 0.75, blue: 0.3) static let fiveThousandBase = Color(red: 0.7, green: 0.1, blue: 0.2) static let fiveThousandHighlight = Color(red: 0.85, green: 0.2, blue: 0.3) static let tenThousandBase = Color(red: 0.2, green: 0.5, blue: 0.5) static let tenThousandHighlight = Color(red: 0.3, green: 0.6, blue: 0.6) static let twentyFiveThousandBase = Color(red: 0.5, green: 0.3, blue: 0.1) static let twentyFiveThousandHighlight = Color(red: 0.65, green: 0.45, blue: 0.2) static let fiftyThousandBase = Color(red: 0.75, green: 0.75, blue: 0.8) static let fiftyThousandHighlight = Color(red: 0.85, green: 0.85, blue: 0.9) static let hundredThousandBase = Color(red: 0.9, green: 0.1, blue: 0.3) static let hundredThousandHighlight = Color(red: 1.0, green: 0.2, blue: 0.4) // Accent stripe colors static let goldStripe = Color(red: 0.9, green: 0.75, blue: 0.3) static let darkStripe = Color(red: 0.2, green: 0.2, blue: 0.3) static let goldRubyStripe = Color(red: 0.9, green: 0.85, blue: 0.3) } // MARK: - Card Colors enum Card { // Card back static let backDark = Color(red: 0.6, green: 0.1, blue: 0.15) static let backLight = Color(red: 0.4, green: 0.05, blue: 0.1) static let patternLight = Color(red: 0.9, green: 0.7, blue: 0.4) static let patternDark = Color(red: 0.7, green: 0.5, blue: 0.2) static let innerDark = Color(red: 0.5, green: 0.08, blue: 0.12) static let innerLight = Color(red: 0.35, green: 0.04, blue: 0.08) static let diamondPattern = Color(red: 0.9, green: 0.7, blue: 0.4) static let logoText = Color(red: 0.4, green: 0.05, blue: 0.1) } // MARK: - Modal Colors enum Modal { static let backgroundLight = Color(red: 0.12, green: 0.12, blue: 0.14) static let backgroundDark = Color(red: 0.08, green: 0.08, blue: 0.1) } // MARK: - Settings Colors enum Settings { static let background = Color(red: 0.08, green: 0.12, blue: 0.08) } } // MARK: - Localized Strings Helper extension String { /// Returns a localized string for the given key. static func localized(_ key: String) -> String { String(localized: String.LocalizationValue(key)) } /// Returns a localized string with format arguments. static func localized(_ key: String, _ arguments: CVarArg...) -> String { let format = String(localized: String.LocalizationValue(key)) return String(format: format, arguments: arguments) } }