Files
Termind/TFI/DesignSystem/MobileLayoutEnvironment.swift
T

32 lines
768 B
Swift

import Observation
import SwiftUI
nonisolated enum MobileLayout: Sendable {
case compact
case regular
init(sizeClass: UserInterfaceSizeClass?) {
self = sizeClass == .regular ? .regular : .compact
}
}
/// A window delays navigation reconstruction until saves and their error feedback finish.
@MainActor @Observable
final class MobileLayoutTransition {
private var saves: Set<UUID> = []
var isBlocked: Bool { !saves.isEmpty }
func beginSave() -> UUID {
let id = UUID()
saves.insert(id)
return id
}
func endSave(_ id: UUID) { saves.remove(id) }
}
extension EnvironmentValues {
@Entry var mobileLayout: MobileLayout? = nil
@Entry var mobileLayoutTransition: MobileLayoutTransition? = nil
}