struct ContentView: View {
   @Environment(ApplicationData.self) private var appData
   @Environment(\.horizontalSizeClass) private var hSize

   var body: some View {
      Group {
            switch appData.mode {
            case .small:
                NavigationStack {
                   Text("Interface for small window")
                }
            case .large:
                NavigationSplitView {
                   Text("Menu for large window")
                } detail: {
                   Text("Content for large window")
                }
            }
        }
        .onAppear {
            appData.update(horizontalSizeClass: hSize)
        }
        .onChange(of: hSize) { _, new in
            appData.update(horizontalSizeClass: new)
        }
    }
}
#Preview {
   ContentView()
      .environment(ApplicationData.shared)
}