struct BooksView: View {
   @Environment(ApplicationData.self) private var appData
   @Binding var selectedBook: Book?
   let selectedAuthor: String?

   var listBooks: [Book] {
      let list = appData.userData.filter({ item in
         return item.author == selectedAuthor
      })
      return list.sorted(by: { $0.title < $1.title })
   }
   var body: some View {
      List(listBooks, selection: $selectedBook) { book in
         NavigationLink(value: book, label: {
            Text(book.title)
         })
      }.listStyle(.grouped)
      .toolbarTitleDisplayMode(.inline)
      .navigationTitle(selectedAuthor ?? "Undefined")
   }
}
#Preview {
   @Previewable @State var selected: Book? = nil

   BooksView(selectedBook: $selected, selectedAuthor: nil)
      .environment(ApplicationData.shared)
}