import SwiftUI
import Bedrock

// MARK: - Re-export Bedrock Design for convenience

/// Convenience typealias to use Bedrock's Design throughout the app.
typealias Design = Bedrock.Design

// MARK: - App-Specific Design Extensions

/// App-specific additions to Bedrock's Design system.
/// Use `Design.Spacing`, `Design.CornerRadius`, etc. from Bedrock for all standard values.
/// These extensions add domain-specific constants for the Selfie Ring Light app.

extension Bedrock.Design {
    
    /// App-specific size constants (e.g., border sizes for ring light).
    enum Size {
        static let borderSmall: CGFloat = 2
        static let borderMedium: CGFloat = 4
        static let borderLarge: CGFloat = 6
        static let iconMedium: CGFloat = 24
        static let cardWidth: CGFloat = 80
        static let cardHeight: CGFloat = 52
    }
    
    /// Ring light border thickness options (for UI display, not the multiplier).
    enum RingBorder {
        static let small: CGFloat = 20
        static let medium: CGFloat = 40
        static let large: CGFloat = 60
    }
    
    /// Grid overlay configuration.
    enum Grid {
        static let lineWidth: CGFloat = 1
        static let opacity: Double = 0.5
    }
    
    /// Capture button sizes.
    enum Capture {
        static let buttonSize: CGFloat = 70
        static let innerRing: CGFloat = 62
        static let stopSquare: CGFloat = 28
    }
    
    /// Camera control sizes.
    enum Camera {
        static let controlButtonSize: CGFloat = 44
        static let flipIconSize: CGFloat = 22
    }
    
    /// Font sizes for the app (maps to Bedrock's BaseFontSize for consistency).
    enum FontSize {
        static let small: CGFloat = BaseFontSize.small
        static let body: CGFloat = BaseFontSize.body
        static let large: CGFloat = BaseFontSize.large
        static let title: CGFloat = BaseFontSize.title
    }
}
