import WidgetKit
import SwiftUI

@main
struct DECompanionWidgetsBundle: WidgetBundle {
    var body: some Widget {
        CompanionOverviewWidget()
        CompanionTimetableWidget()
        CompanionMensaWidget()
        CompanionRemainingTimeWidget()
    }
}

struct CompanionOverviewWidget: Widget {
    private let kind = "DECompanionOverviewWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: CompanionWidgetProvider()) { entry in
            CompanionOverviewWidgetView(entry: entry)
        }
        .configurationDisplayName("Studium Überblick")
        .description("Tagesplan und Mensa kompakt.")
        .supportedFamilies([.systemSmall, .systemMedium, .systemLarge, .systemExtraLarge, .accessoryRectangular, .accessoryInline, .accessoryCircular])
        .contentMarginsDisabled()
    }
}

struct CompanionTimetableWidget: Widget {
    private let kind = "DECompanionTimetableWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: CompanionWidgetProvider()) { entry in
            CompanionTimetableWidgetView(entry: entry)
        }
        .configurationDisplayName("Stundenplan")
        .description("Aktueller und nächster Block.")
        .supportedFamilies([.systemSmall, .systemMedium, .systemLarge, .systemExtraLarge, .accessoryRectangular, .accessoryInline, .accessoryCircular])
        .contentMarginsDisabled()
    }
}

struct CompanionMensaWidget: Widget {
    private let kind = "DECompanionMensaWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: CompanionWidgetProvider()) { entry in
            CompanionMensaWidgetView(entry: entry)
        }
        .configurationDisplayName("Mensa")
        .description("Gerichte und Preise für heute.")
        .supportedFamilies([.systemSmall, .systemMedium, .systemLarge, .systemExtraLarge, .accessoryRectangular, .accessoryCircular])
        .contentMarginsDisabled()
    }
}

struct CompanionRemainingTimeWidget: Widget {
    private let kind = "DECompanionRemainingTimeWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: CompanionWidgetProvider()) { entry in
            CompanionRemainingTimeWidgetView(entry: entry)
        }
        .configurationDisplayName("Restzeit")
        .description("Verbleibende Uni-Zeit ohne Pausen.")
        .supportedFamilies([.accessoryInline, .accessoryRectangular, .accessoryCircular])
        .contentMarginsDisabled()
    }
}
