iOS widget enhancements
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import SwiftUI
|
||||
|
||||
/// Mirrors the Kotlin `WidgetPalette` in WidgetRenderer.kt so day/week widgets
|
||||
/// look identical across platforms. All values are hex tokens from the in-app
|
||||
/// LightAppTheme / DarkAppTheme — do not swap to system colors, the whole
|
||||
/// point is platform-independent branding.
|
||||
struct WidgetPalette {
|
||||
let background: Color
|
||||
let textPrimary: Color
|
||||
let textSecondary: Color
|
||||
let divider: Color
|
||||
let breakBlock: Color
|
||||
let watermarkOpacity: Double
|
||||
|
||||
static let light = WidgetPalette(
|
||||
background: Color(red: 0xFC / 255, green: 0xF7 / 255, blue: 0xF5 / 255),
|
||||
textPrimary: Color(red: 0x11 / 255, green: 0x11 / 255, blue: 0x11 / 255),
|
||||
textSecondary: Color(red: 0x55 / 255, green: 0x55 / 255, blue: 0x55 / 255),
|
||||
divider: Color.black.opacity(0x22 / 255.0),
|
||||
breakBlock: Color.black.opacity(0x0C / 255.0),
|
||||
watermarkOpacity: 0.014
|
||||
)
|
||||
|
||||
static let dark = WidgetPalette(
|
||||
background: Color(red: 0x1F / 255, green: 0x17 / 255, blue: 0x16 / 255),
|
||||
textPrimary: Color(red: 0xF1 / 255, green: 0xF1 / 255, blue: 0xF1 / 255),
|
||||
textSecondary: Color(red: 0xB0 / 255, green: 0xB0 / 255, blue: 0xB0 / 255),
|
||||
divider: Color.white.opacity(0x33 / 255.0),
|
||||
breakBlock: Color.white.opacity(0x14 / 255.0),
|
||||
watermarkOpacity: 0.025
|
||||
)
|
||||
|
||||
static func resolve(themeMode: String, colorScheme: ColorScheme) -> WidgetPalette {
|
||||
let isDark: Bool
|
||||
switch themeMode {
|
||||
case "light": isDark = false
|
||||
case "dark": isDark = true
|
||||
default: isDark = colorScheme == .dark
|
||||
}
|
||||
return isDark ? .dark : .light
|
||||
}
|
||||
}
|
||||
|
||||
private struct WidgetPaletteKey: EnvironmentKey {
|
||||
static let defaultValue = WidgetPalette.light
|
||||
}
|
||||
|
||||
extension EnvironmentValues {
|
||||
var widgetPalette: WidgetPalette {
|
||||
get { self[WidgetPaletteKey.self] }
|
||||
set { self[WidgetPaletteKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user