//
//  SharedStyleModels.swift
//  Pods
//
//  Created by Reuven Levitsky on 18/05/2025.
//

import BlazeSDK

enum BlazeReactTextAlign: String, Codable {
    case start = "Start"
    case center = "Center"
    case end = "End"
}

struct BlazeReactMargins: Codable{
    var top: CGFloat?
    var leading: CGFloat?
    var bottom: CGFloat?
    var trailing: CGFloat?
}

enum BlazeReactTextCase: String, Codable {
    case uppercase = "Uppercase"
    case lowercase = "Lowercase"
}

struct BlazeReactPlayerButtonCustomImageStates: Codable {
    var selectedImage: BlazeReactImage?
    var unselectedImage: BlazeReactImage?
}

struct BlazeReactImage: Codable {
    var imageName: String?
}

struct BlazeReactPlayerButtonStyle: Codable {
    var width: CGFloat?
    var height: CGFloat?
    var color: String?
    var isVisible: Bool?
    var isVisibleForAds: Bool?
    var customImage: BlazeReactPlayerButtonCustomImageStates?
}

struct BlazeReactSeekBarStyle: Codable {
    let isVisible: Bool?
    let backgroundColor: String?
    let progressColor: String?
    let height: CGFloat?
    let cornerRadius: CGFloat?
    let thumbColor: String?
    let thumbImage: BlazeReactImage?
    let thumbSize: CGFloat?
    let isThumbVisible: Bool?
}

struct BlazeReactColor: Codable {
    var colorName: String?
    var colorFileName: String?
}

struct BlazeReactTitleFont: Codable {
    var fontName: String?
}

struct BlazeReactTitleStyle: Codable {
    var font: BlazeReactTitleFont?
    var textSize: CGFloat?
    var letterSpacing: Double?
    var textColor: String?
    var lineHeight: Double?
    var maxLines: Int?
    var textAlign: BlazeReactTextAlign?
}

struct BlazeReactCustomActionButton: Codable {
    let customParams: CustomParams?
    let style: BlazeReactPlayerButtonStyle?
    
    struct CustomParams: Codable {
        let id: String
        let name: String
        let appMetadata: [String: BlazeCodableValue]?
        let visibilityCondition: [String: BlazeCodableValue]?
    }
}