// // CLGlobalTokens.swift // Crush // // Created by Leon on 2025/8/14. // enum CLEnumGlobalToken: String, CaseIterable { init?(caseName: String) { self = CLEnumGlobalToken.allCases.first(where: { "\($0)" == caseName }) ?? .glo_color_orange_0 } case glo_color_orange_0 = "glo.color.orange.0" case glo_color_orange_10 = "glo.color.orange.10" case glo_color_orange_20 = "glo.color.orange.20" case glo_color_orange_30 = "glo.color.orange.30" case glo_color_orange_40 = "glo.color.orange.40" case glo_color_orange_50 = "glo.color.orange.50" case glo_color_orange_60 = "glo.color.orange.60" case glo_color_orange_70 = "glo.color.orange.70" case glo_color_orange_80 = "glo.color.orange.80" case glo_color_orange_90 = "glo.color.orange.90" case glo_color_yellow_0 = "glo.color.yellow.0" case glo_color_yellow_10 = "glo.color.yellow.10" case glo_color_yellow_20 = "glo.color.yellow.20" case glo_color_yellow_30 = "glo.color.yellow.30" case glo_color_yellow_40 = "glo.color.yellow.40" case glo_color_yellow_50 = "glo.color.yellow.50" case glo_color_yellow_60 = "glo.color.yellow.60" case glo_color_yellow_70 = "glo.color.yellow.70" case glo_color_yellow_80 = "glo.color.yellow.80" case glo_color_yellow_90 = "glo.color.yellow.90" case glo_color_grass_0 = "glo.color.grass.0" case glo_color_grass_10 = "glo.color.grass.10" case glo_color_grass_20 = "glo.color.grass.20" case glo_color_grass_30 = "glo.color.grass.30" case glo_color_grass_40 = "glo.color.grass.40" case glo_color_grass_50 = "glo.color.grass.50" case glo_color_grass_60 = "glo.color.grass.60" case glo_color_grass_70 = "glo.color.grass.70" case glo_color_grass_80 = "glo.color.grass.80" case glo_color_grass_90 = "glo.color.grass.90" case glo_color_green_0 = "glo.color.green.0" case glo_color_green_10 = "glo.color.green.10" case glo_color_green_20 = "glo.color.green.20" case glo_color_green_30 = "glo.color.green.30" case glo_color_green_40 = "glo.color.green.40" case glo_color_green_50 = "glo.color.green.50" case glo_color_green_60 = "glo.color.green.60" case glo_color_green_70 = "glo.color.green.70" case glo_color_green_80 = "glo.color.green.80" case glo_color_green_90 = "glo.color.green.90" case glo_color_mint_0 = "glo.color.mint.0" case glo_color_mint_10 = "glo.color.mint.10" case glo_color_mint_20 = "glo.color.mint.20" case glo_color_mint_30 = "glo.color.mint.30" case glo_color_mint_40 = "glo.color.mint.40" case glo_color_mint_50 = "glo.color.mint.50" case glo_color_mint_60 = "glo.color.mint.60" case glo_color_mint_70 = "glo.color.mint.70" case glo_color_mint_80 = "glo.color.mint.80" case glo_color_mint_90 = "glo.color.mint.90" case glo_color_sky_0 = "glo.color.sky.0" case glo_color_sky_10 = "glo.color.sky.10" case glo_color_sky_20 = "glo.color.sky.20" case glo_color_sky_30 = "glo.color.sky.30" case glo_color_sky_40 = "glo.color.sky.40" case glo_color_sky_50 = "glo.color.sky.50" case glo_color_sky_60 = "glo.color.sky.60" case glo_color_sky_70 = "glo.color.sky.70" case glo_color_sky_80 = "glo.color.sky.80" case glo_color_sky_90 = "glo.color.sky.90" case glo_color_blue_0 = "glo.color.blue.0" case glo_color_blue_10 = "glo.color.blue.10" case glo_color_blue_20 = "glo.color.blue.20" case glo_color_blue_30 = "glo.color.blue.30" case glo_color_blue_40 = "glo.color.blue.40" case glo_color_blue_50 = "glo.color.blue.50" case glo_color_blue_60 = "glo.color.blue.60" case glo_color_blue_70 = "glo.color.blue.70" case glo_color_blue_80 = "glo.color.blue.80" case glo_color_blue_90 = "glo.color.blue.90" case glo_color_violet_0 = "glo.color.violet.0" case glo_color_violet_10 = "glo.color.violet.10" case glo_color_violet_20 = "glo.color.violet.20" case glo_color_violet_30 = "glo.color.violet.30" case glo_color_violet_40 = "glo.color.violet.40" case glo_color_violet_50 = "glo.color.violet.50" case glo_color_violet_60 = "glo.color.violet.60" case glo_color_violet_70 = "glo.color.violet.70" case glo_color_violet_80 = "glo.color.violet.80" case glo_color_violet_90 = "glo.color.violet.90" case glo_color_purple_0 = "glo.color.purple.0" case glo_color_purple_10 = "glo.color.purple.10" case glo_color_purple_20 = "glo.color.purple.20" case glo_color_purple_30 = "glo.color.purple.30" case glo_color_purple_40 = "glo.color.purple.40" case glo_color_purple_50 = "glo.color.purple.50" case glo_color_purple_60 = "glo.color.purple.60" case glo_color_purple_70 = "glo.color.purple.70" case glo_color_purple_80 = "glo.color.purple.80" case glo_color_purple_90 = "glo.color.purple.90" case glo_color_magenta_0 = "glo.color.magenta.0" case glo_color_magenta_10 = "glo.color.magenta.10" case glo_color_magenta_20 = "glo.color.magenta.20" case glo_color_magenta_30 = "glo.color.magenta.30" case glo_color_magenta_40 = "glo.color.magenta.40" case glo_color_magenta_50 = "glo.color.magenta.50" case glo_color_magenta_60 = "glo.color.magenta.60" case glo_color_magenta_70 = "glo.color.magenta.70" case glo_color_magenta_80 = "glo.color.magenta.80" case glo_color_magenta_90 = "glo.color.magenta.90" case glo_color_red_0 = "glo.color.red.0" case glo_color_red_10 = "glo.color.red.10" case glo_color_red_20 = "glo.color.red.20" case glo_color_red_30 = "glo.color.red.30" case glo_color_red_40 = "glo.color.red.40" case glo_color_red_50 = "glo.color.red.50" case glo_color_red_60 = "glo.color.red.60" case glo_color_red_70 = "glo.color.red.70" case glo_color_red_80 = "glo.color.red.80" case glo_color_red_90 = "glo.color.red.90" case glo_color_grey_0 = "glo.color.grey.0" case glo_color_grey_10 = "glo.color.grey.10" case glo_color_grey_20 = "glo.color.grey.20" case glo_color_grey_30 = "glo.color.grey.30" case glo_color_grey_40 = "glo.color.grey.40" case glo_color_grey_50 = "glo.color.grey.50" case glo_color_grey_60 = "glo.color.grey.60" case glo_color_grey_70 = "glo.color.grey.70" case glo_color_grey_80 = "glo.color.grey.80" case glo_color_grey_90 = "glo.color.grey.90" case glo_color_grey_100 = "glo.color.grey.100" case glo_color_white = "glo.color.white" case glo_color_black = "glo.color.black" case glo_transparent_t0 = "glo.transparent.t0" case glo_transparent_t2 = "glo.transparent.t2" case glo_transparent_t4 = "glo.transparent.t4" case glo_transparent_t6 = "glo.transparent.t6" case glo_transparent_t8 = "glo.transparent.t8" case glo_transparent_t12 = "glo.transparent.t12" case glo_transparent_t15 = "glo.transparent.t15" case glo_transparent_t20 = "glo.transparent.t20" case glo_transparent_t25 = "glo.transparent.t25" case glo_transparent_t30 = "glo.transparent.t30" case glo_transparent_t45 = "glo.transparent.t45" case glo_transparent_t60 = "glo.transparent.t60" case glo_transparent_t65 = "glo.transparent.t65" case glo_transparent_t85 = "glo.transparent.t85" case glo_transparent_t100 = "glo.transparent.t100" case glo_deg_ltr = "glo.deg.ltr" case glo_deg_ttb = "glo.deg.ttb" case glo_deg_lttrb = "glo.deg.lttrb" case glo_font_family_sys = "glo.font.family.sys" case glo_font_family_sys_italic = "glo.font.family.sys.italic" case glo_font_family_numDisplay = "glo.font.family.numDisplay" case glo_font_family_num = "glo.font.family.num" case glo_font_family_display = "glo.font.family.display" case glo_font_size_64 = "glo.font.size.64" case glo_font_size_48 = "glo.font.size.48" case glo_font_size_36 = "glo.font.size.36" case glo_font_size_24 = "glo.font.size.24" case glo_font_size_20 = "glo.font.size.20" case glo_font_size_18 = "glo.font.size.18" case glo_font_size_16 = "glo.font.size.16" case glo_font_size_14 = "glo.font.size.14" case glo_font_size_12 = "glo.font.size.12" case glo_font_weight_regular = "glo.font.weight.regular" case glo_font_weight_medium = "glo.font.weight.medium" case glo_font_weight_semibold = "glo.font.weight.semibold" case glo_font_weight_bold = "glo.font.weight.bold" case glo_font_lineheight_size64 = "glo.font.lineheight.size64" case glo_font_lineheight_size48 = "glo.font.lineheight.size48" case glo_font_lineheight_size36 = "glo.font.lineheight.size36" case glo_font_lineheight_size24 = "glo.font.lineheight.size24" case glo_font_lineheight_size20 = "glo.font.lineheight.size20" case glo_font_lineheight_size18 = "glo.font.lineheight.size18" case glo_font_lineheight_size16 = "glo.font.lineheight.size16" case glo_font_lineheight_size14 = "glo.font.lineheight.size14" case glo_font_lineheight_size12 = "glo.font.lineheight.size12" case glo_font_lineheight_size0 = "glo.font.lineheight.size0" case glo_radio_1_1 = "glo.radio.1.1" case glo_radio_4_3 = "glo.radio.4.3" case glo_radio_3_2 = "glo.radio.3.2" case glo_radio_2_1 = "glo.radio.2.1" case glo_radio_16_9 = "glo.radio.16.9" case glo_radius_4 = "glo.radius.4" case glo_radius_8 = "glo.radius.8" case glo_radius_12 = "glo.radius.12" case glo_radius_16 = "glo.radius.16" case glo_radius_round = "glo.radius.round" case glo_border_half = "glo.border.half" case glo_border_1 = "glo.border.1" case glo_border_2 = "glo.border.2" case glo_border_4 = "glo.border.4" case glo_spacing_4 = "glo.spacing.4" case glo_spacing_8 = "glo.spacing.8" case glo_spacing_12 = "glo.spacing.12" case glo_spacing_16 = "glo.spacing.16" case glo_spacing_24 = "glo.spacing.24" case glo_spacing_32 = "glo.spacing.32" case glo_spacing_48 = "glo.spacing.48" case glo_spacing_64 = "glo.spacing.64" case glo_spacing_80 = "glo.spacing.80" case glo_spacing_128 = "glo.spacing.128" } func KeyForGlobalTokenFrom(_ token: CLEnumGlobalToken) -> String { return token.rawValue } class CLGlobalToken { static let baseTokens = CLBaseTokens.shared // MARK: - Color Methods static func color(token: CLEnumGlobalToken) -> UIColor? { let key = KeyForGlobalTokenFrom(token) let values = baseTokens.getTokensByKey(key) return EPBaseObject.subGetColorByTokenValues(values) } static func darkColor(token: CLEnumGlobalToken) -> UIColor? { let key = KeyForGlobalTokenFrom(token) let values = baseTokens.getDarkTokens(key) return EPBaseObject.subGetColorByTokenValues(values) } // MARK: - String Method static func string(token: CLEnumGlobalToken) -> String? { let key = KeyForGlobalTokenFrom(token) return baseTokens.getTokenByKey(key) } // MARK: - Float Method static func float(token: CLEnumGlobalToken) -> CGFloat { let key = KeyForGlobalTokenFrom(token) let value = baseTokens.getTokenByKey(key) guard let floatValue = Float(value) else { print("❌ Invalid float format for key: \(key)") return 0 } return CGFloat(floatValue) } // MARK: - Radius Method static func radius(token: CLEnumGlobalToken) -> CGFloat { let key = KeyForGlobalTokenFrom(token) let value = baseTokens.getTokenByKey(key) guard let radius = Float(value) else { print("❌ Invalid radius format for key: \(key)") return 0 } // print("🎨 radius: \(key) \(radius)") // DLog 替换为 print return CGFloat(radius) } // MARK: - Border Method static func border(token: CLEnumGlobalToken) -> CGFloat { let key = KeyForGlobalTokenFrom(token) let value = baseTokens.getTokenByKey(key) guard let border = Float(value) else { print("❌ Invalid border format for key: \(key)") return 0 } // print("🎨 border: \(key) \(border)") // DLog 替换为 print return CGFloat(border) } // MARK: - Shadow Method static func shadow(token: CLEnumGlobalToken) -> EPShadow { let key = KeyForGlobalTokenFrom(token) let values = baseTokens.getTokensByKey(key) guard values.count == 4, values.first?.contains(EPConfigShadowPrefix) == true else { assertionFailure("Wrong format for shadow token: \(key)") return EPShadow() } var shadow = EPShadow() if let colorStr = values.first?.replacingOccurrences(of: EPConfigShadowPrefix, with: "") { let color = EPBaseObject.subGetColorByTokenValues([colorStr]) shadow.color = color } if let opacity = Float(values[1]) { shadow.opacity = opacity } let offXy = values[2].components(separatedBy: "&") if offXy.count == 2, let x = Float(offXy[0]), let y = Float(offXy[1]) { shadow.offset = CGSize(width: CGFloat(x), height: CGFloat(y)) } if let radius = Float(values[3]) { shadow.radius = CGFloat(radius) } return shadow } }