summaryrefslogtreecommitdiffstats
path: root/Solsnu.Widget/Views/LargeWidgetView.swift
diff options
context:
space:
mode:
authorivar <i@oiee.no>2026-03-23 16:40:55 +0100
committerivar <i@oiee.no>2026-03-23 16:40:55 +0100
commite45dd001f178a640e1f799616868accb4254c313 (patch)
treee26f7f8d6d9e6135e5a88bf16a12d63d18a81eb0 /Solsnu.Widget/Views/LargeWidgetView.swift
parenta8fe9dafa7abc99490bda842e4062e08faaf70f5 (diff)
downloadsolverv-e45dd001f178a640e1f799616868accb4254c313.tar.xz
solverv-e45dd001f178a640e1f799616868accb4254c313.zip
feat: add widget views for small, medium, and large sizes
Diffstat (limited to 'Solsnu.Widget/Views/LargeWidgetView.swift')
-rw-r--r--Solsnu.Widget/Views/LargeWidgetView.swift51
1 files changed, 51 insertions, 0 deletions
diff --git a/Solsnu.Widget/Views/LargeWidgetView.swift b/Solsnu.Widget/Views/LargeWidgetView.swift
new file mode 100644
index 0000000..beba39c
--- /dev/null
+++ b/Solsnu.Widget/Views/LargeWidgetView.swift
@@ -0,0 +1,51 @@
+import SwiftUI
+import WidgetKit
+
+struct LargeWidgetView: View {
+ let entry: SolvervEntry
+
+ var body: some View {
+ VStack(spacing: 12) {
+ // Top: Emoji
+ Text(entry.emoji)
+ .font(.system(size: 80))
+ .frame(height: 100)
+
+ // Bottom: Info
+ VStack(alignment: .leading, spacing: 10) {
+ // Event name and countdown
+ VStack(alignment: .leading, spacing: 4) {
+ Text("Season Event")
+ .font(.headline)
+
+ Text("\(entry.def.daysUntilNext()) days")
+ .font(.system(.title2, design: .default).weight(.bold))
+ }
+
+ // Progress bar
+ ProgressView(value: Double(entry.def.progressRatio()))
+
+ Divider()
+
+ // Event info
+ VStack(alignment: .leading, spacing: 6) {
+ Text("Upcoming")
+ .font(.caption)
+ .foregroundColor(.secondary)
+
+ Text("More events coming soon")
+ .font(.caption)
+ }
+
+ Spacer()
+ }
+ .padding(.horizontal)
+ .padding(.vertical, 8)
+ }
+ }
+}
+
+#Preview {
+ let entry = SolvervEntry(def: SolvervDef(utcString: "2026-12-21 20:50:00"))
+ LargeWidgetView(entry: entry)
+}