struct ContentView: View {
   @Environment(ApplicationData.self) private var appData
   @Namespace var zoomBooks

   var body: some View {
      @Bindable var appData = appData

      NavigationStack(path: $appData.viewPath) {
         List(appData.userData) { book in
            NavigationLink(value: book, label: {
               CellBook(book: book)
                  .matchedTransitionSource(id: book.id, in: zoomBooks)
            })
         }
         .navigationTitle(Text("Books"))
         .toolbarTitleDisplayMode(.inlineLarge)
         .toolbar {
            ToolbarItem(placement: .topBarTrailing) {
               NavigationLink(value: "Settings View", label: {
                  Image(systemName: "gear")
               })
            }
         }
         .navigationDestination(for: Book.self, destination: { book in
            DetailView(book: book)
               .navigationTransition(.zoom(sourceID: book.id, in: zoomBooks))               
         })
         .navigationDestination(for: String.self, destination: { viewID in
            if viewID == "Settings View" {
               SettingsView()
            } else if viewID == "Picture View" {
               PictureView()
            }
         })
      }
   }
}