fix(ios): remove duplicate theme enums + add ExportOptions.plist for TestFlight

- Remove duplicate CMColors, CMSpacing, CMRadius, Color.init(hex:) from generated theme file
- Keep canonical versions in ChronoMindTheme.swift
- Add ExportOptions.plist for app-store-connect export
This commit is contained in:
saravanakumardb1 2026-04-04 23:11:58 -07:00
parent fdd3743f28
commit 1ea3965492
3 changed files with 24 additions and 66 deletions

View File

@ -20,6 +20,7 @@
1598963EE482A49A6BE6C1A1 /* Cascade.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE44586214BA0A4BEDA939F7 /* Cascade.swift */; };
17CA849355B8B364E1229D72 /* ContextMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A5D547D31EEFB16F3491EA /* ContextMessages.swift */; };
1913421FC27656C4473DDDEB /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5308F55D3240A2F6EBC1BEC /* AuthService.swift */; };
1959322F7D25EF03F1163054 /* ChronoMindTheme.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 774A9D8FF9E11036B1D590C3 /* ChronoMindTheme.generated.swift */; };
1AD293C99C71465710A4A7DC /* Routines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880334677DB319D5189434D0 /* Routines.swift */; };
1C01BE509BB39FFFF0937808 /* RoutineRunnerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B769E9E88032FB471820D110 /* RoutineRunnerView.swift */; };
1D1DFA5585694A7BE76109E4 /* TimerEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93579D521BE5D6682B129A5C /* TimerEngine.swift */; };
@ -255,6 +256,7 @@
729007CC41B12C35B3D20407 /* MenuBarState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarState.swift; sourceTree = "<group>"; };
730C55779117D49CEDBCB3AB /* DataExportManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataExportManager.swift; sourceTree = "<group>"; };
7432A413C92A24E3C937A766 /* TimerListWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerListWidget.swift; sourceTree = "<group>"; };
774A9D8FF9E11036B1D590C3 /* ChronoMindTheme.generated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChronoMindTheme.generated.swift; sourceTree = "<group>"; };
84C298B338633A7D75102171 /* SharedTimerData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedTimerData.swift; sourceTree = "<group>"; };
8775EEA5055E7416149B8384 /* Urgency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Urgency.swift; sourceTree = "<group>"; };
880334677DB319D5189434D0 /* Routines.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Routines.swift; sourceTree = "<group>"; };
@ -427,6 +429,7 @@
468A5761EC0508501FAF2294 /* Theme */ = {
isa = PBXGroup;
children = (
774A9D8FF9E11036B1D590C3 /* ChronoMindTheme.generated.swift */,
0BAF2993B0DDD3D4334378B4 /* ChronoMindTheme.swift */,
);
path = Theme;
@ -974,6 +977,7 @@
CB7642D0D833F6D45B532AF6 /* Cascade.swift in Sources */,
EC0CEB1B4418DCD090CD431B /* CascadeProgressBar.swift in Sources */,
9CE528A21B258A6554DA8A46 /* ChronoMindApp.swift in Sources */,
1959322F7D25EF03F1163054 /* ChronoMindTheme.generated.swift in Sources */,
C81D5D94A6F8E29C82EDD923 /* ChronoMindTheme.swift in Sources */,
D121718DF1490A6DE9B51ACB /* CloudKitSyncManager.swift in Sources */,
437AFD9D5CD147B716D1E8C4 /* ConfettiView.swift in Sources */,

View File

@ -4,35 +4,6 @@
import SwiftUI
enum CMColors {
// MARK: - Semantic (Dark Theme)
static let bgCanvas = Color(hex: 0x06070A)
static let bgElevated = Color(hex: 0x0E1118)
static let surfaceCard = Color(hex: 0x121725)
static let surfaceMuted = Color(hex: 0x1A2335)
static let textPrimary = Color(hex: 0xEFF4FF)
static let textSecondary = Color(hex: 0xA5B1C7)
static let textTertiary = Color(hex: 0x6C7C98)
static let accentPrimary = Color(hex: 0x5A8CFF)
static let accentSecondary = Color(hex: 0x2EE6D6)
static let success = Color(hex: 0x34D399)
static let warning = Color(hex: 0xF59E0B)
static let danger = Color(hex: 0xFF6E6E)
// MARK: - Chronomind Product Colors
static let urgencyCritical = Color(hex: 0xFF6E6E)
static let urgencyImportant = Color(hex: 0xFFD166)
static let urgencyStandard = Color(hex: 0x5A8CFF)
static let urgencyGentle = Color(hex: 0x34D399)
static let urgencyPassive = Color(hex: 0xA5B1C7)
static let focusMode = Color(hex: 0x7C6BFF)
static let pomodoroWork = Color(hex: 0x34D399)
static let pomodoroBreak = Color(hex: 0x5A8CFF)
static let cascadeWarning = Color(hex: 0xFF9F43)
static let timerComplete = Color(hex: 0x34D399)
}
enum CMColorsLight {
// MARK: - Semantic (Light Theme)
static let bgCanvas = Color(hex: 0xF6F8FC)
@ -49,30 +20,6 @@ enum CMColorsLight {
static let danger = Color(hex: 0xD24242)
}
enum CMSpacing {
static let x0: CGFloat = 0
static let x1: CGFloat = 4
static let x2: CGFloat = 8
static let x3: CGFloat = 12
static let x4: CGFloat = 16
static let x5: CGFloat = 20
static let x6: CGFloat = 24
static let x7: CGFloat = 28
static let x8: CGFloat = 32
static let x10: CGFloat = 40
static let x12: CGFloat = 48
static let x16: CGFloat = 64
}
enum CMRadius {
static let xs: CGFloat = 8
static let sm: CGFloat = 12
static let md: CGFloat = 16
static let lg: CGFloat = 20
static let xl: CGFloat = 24
static let pill: CGFloat = 999
}
enum CMMotion {
static let instant: Double = 0.07
static let fast: Double = 0.14
@ -80,16 +27,3 @@ enum CMMotion {
static let slow: Double = 0.32
}
// MARK: - Color Hex Extension (import if not already defined)
extension Color {
init(hex: UInt, alpha: Double = 1.0) {
self.init(
.sRGB,
red: Double((hex >> 16) & 0xFF) / 255.0,
green: Double((hex >> 8) & 0xFF) / 255.0,
blue: Double(hex & 0xFF) / 255.0,
opacity: alpha
)
}
}

20
ios/ExportOptions.plist Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store-connect</string>
<key>teamID</key>
<string>748N7QPX7J</string>
<key>destination</key>
<string>upload</string>
<key>signingStyle</key>
<string>automatic</string>
<key>uploadSymbols</key>
<true/>
</dict>
</plist>