import SwiftUIimport WidgetKit @mainstruct CodexBarWidgetBundle: WidgetBundle { var body: some Widget { CodexBarSwitcherWidget() CodexBarUsageWidget() CodexBarHistoryWidget() CodexBarCompactWidget() CodexBarBurnDownWidget() CodexBarCombinedBurnDownWidget() }} struct CodexBarSwitcherWidget: Widget { private let kind = "CodexBarSwitcherWidget" var body: some WidgetConfiguration { StaticConfiguration( kind: self.kind, provider: CodexBarSwitcherTimelineProvider()) { entry in CodexBarSwitcherWidgetView(entry: entry) } .configurationDisplayName("CodexBar Switcher") .description("Usage widget with a provider switcher.") .supportedFamilies([.systemSmall, .systemMedium, .systemLarge]) }} struct CodexBarUsageWidget: Widget { private let kind = "CodexBarUsageWidget" var body: some WidgetConfiguration { AppIntentConfiguration( kind: self.kind, intent: ProviderSelectionIntent.self, provider: CodexBarTimelineProvider()) { entry in CodexBarUsageWidgetView(entry: entry) } .configurationDisplayName("CodexBar Usage") .description("Session and weekly usage with credits and costs.") .supportedFamilies([.systemSmall, .systemMedium, .systemLarge]) }} struct CodexBarHistoryWidget: Widget { private let kind = "CodexBarHistoryWidget" var body: some WidgetConfiguration { AppIntentConfiguration( kind: self.kind, intent: ProviderSelectionIntent.self, provider: CodexBarTimelineProvider()) { entry in CodexBarHistoryWidgetView(entry: entry) } .configurationDisplayName("CodexBar History") .description("Usage history chart with recent totals.") .supportedFamilies([.systemMedium, .systemLarge]) }} struct CodexBarCompactWidget: Widget { private let kind = "CodexBarCompactWidget" var body: some WidgetConfiguration { AppIntentConfiguration( kind: self.kind, intent: CompactMetricSelectionIntent.self, provider: CodexBarCompactTimelineProvider()) { entry in CodexBarCompactWidgetView(entry: entry) } .configurationDisplayName("CodexBar Metric") .description("Compact widget for credits or cost.") .supportedFamilies([.systemSmall]) }} struct CodexBarBurnDownWidget: Widget { private let kind = "CodexBarBurnDownWidget" var body: some WidgetConfiguration { AppIntentConfiguration( kind: self.kind, intent: BurnDownSelectionIntent.self, provider: BurnDownTimelineProvider()) { entry in BurnDownWidgetView(entry: entry) } .configurationDisplayName("CodexBar Burn Down") .description("Remaining budget compared with an ideal steady burn rate.") .supportedFamilies([.systemMedium]) }} struct CodexBarCombinedBurnDownWidget: Widget { private let kind = "CodexBarCombinedBurnDownWidget" var body: some WidgetConfiguration { AppIntentConfiguration( kind: self.kind, intent: BurnProviderSelectionIntent.self, provider: CombinedBurnDownTimelineProvider()) { entry in CombinedBurnDownWidgetView(entry: entry) } .configurationDisplayName("CodexBar Burn Down (Combined)") .description("Session and weekly burn-down charts in one tile.") .supportedFamilies([.systemMedium]) }}
import SwiftUI
import WidgetKit
@main
struct CodexBarWidgetBundle: WidgetBundle {
var body: some Widget {
CodexBarSwitcherWidget()
CodexBarUsageWidget()
CodexBarHistoryWidget()
CodexBarCompactWidget()
CodexBarBurnDownWidget()
CodexBarCombinedBurnDownWidget()
}
}
struct CodexBarSwitcherWidget: Widget {
private let kind = "CodexBarSwitcherWidget"
var body: some WidgetConfiguration {
StaticConfiguration(
kind: self.kind,
provider: CodexBarSwitcherTimelineProvider())
{ entry in
CodexBarSwitcherWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar Switcher")
.description("Usage widget with a provider switcher.")
.supportedFamilies([.systemSmall, .systemMedium, .systemLarge])
}
}
struct CodexBarUsageWidget: Widget {
private let kind = "CodexBarUsageWidget"
var body: some WidgetConfiguration {
AppIntentConfiguration(
kind: self.kind,
intent: ProviderSelectionIntent.self,
provider: CodexBarTimelineProvider())
{ entry in
CodexBarUsageWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar Usage")
.description("Session and weekly usage with credits and costs.")
.supportedFamilies([.systemSmall, .systemMedium, .systemLarge])
}
}
struct CodexBarHistoryWidget: Widget {
private let kind = "CodexBarHistoryWidget"
var body: some WidgetConfiguration {
AppIntentConfiguration(
kind: self.kind,
intent: ProviderSelectionIntent.self,
provider: CodexBarTimelineProvider())
{ entry in
CodexBarHistoryWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar History")
.description("Usage history chart with recent totals.")
.supportedFamilies([.systemMedium, .systemLarge])
}
}
struct CodexBarCompactWidget: Widget {
private let kind = "CodexBarCompactWidget"
var body: some WidgetConfiguration {
AppIntentConfiguration(
kind: self.kind,
intent: CompactMetricSelectionIntent.self,
provider: CodexBarCompactTimelineProvider())
{ entry in
CodexBarCompactWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar Metric")
.description("Compact widget for credits or cost.")
.supportedFamilies([.systemSmall])
}
}
struct CodexBarBurnDownWidget: Widget {
private let kind = "CodexBarBurnDownWidget"
var body: some WidgetConfiguration {
AppIntentConfiguration(
kind: self.kind,
intent: BurnDownSelectionIntent.self,
provider: BurnDownTimelineProvider())
{ entry in
BurnDownWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar Burn Down")
.description("Remaining budget compared with an ideal steady burn rate.")
.supportedFamilies([.systemMedium])
}
}
struct CodexBarCombinedBurnDownWidget: Widget {
private let kind = "CodexBarCombinedBurnDownWidget"
var body: some WidgetConfiguration {
AppIntentConfiguration(
kind: self.kind,
intent: BurnProviderSelectionIntent.self,
provider: CombinedBurnDownTimelineProvider())
{ entry in
CombinedBurnDownWidgetView(entry: entry)
}
.configurationDisplayName("CodexBar Burn Down (Combined)")
.description("Session and weekly burn-down charts in one tile.")
.supportedFamilies([.systemMedium])
}
}