-
-
-
-
- <.loading_state :if={@loading} />
-
-
- <.empty_state :if={@search_query == "" and not @loading} />
-
-
- <.no_results
- :if={@search_query != "" and @total_results == 0 and not @loading}
- query={@search_query}
+<.modal
+ :if={@show_modal}
+ id="universal-search-root"
+ class="md:min-w-2xl max-w-sm md:max-w-3xl"
+ open={@show_modal}
+ on_close={JS.push("close_modal", value: %{})}
+>
+
+
+
+ <.loading_state :if={@loading} />
+
+
+ <.empty_state :if={@search_query == "" and not @loading} />
+
+
+ <.no_results
+ :if={@search_query != "" and @total_results == 0 and not @loading}
+ query={@search_query}
+ />
+
+
+
0 and not @loading} class="max-h-96 overflow-y-auto">
+
+ <.search_result_group
+ :if={length(@search_results.collection) > 0}
+ title="Collection"
+ count={length(@search_results.collection)}
+ total_count={@search_counts.collection_count}
+ >
+ <.search_result_record
+ :for={{record, index} <- Enum.with_index(@search_results.collection)}
+ record={record}
+ type={:collection}
+ selected={@selected_index == index}
+ phx-click="navigate_to_record"
+ phx-value-id={record.id}
+ phx-value-type="collection"
+ />
+ <:actions>
+ <.view_all_button
+ :if={@search_counts.collection_count > length(@search_results.collection)}
+ count={@search_counts.collection_count}
+ target="collection"
+ phx-click="navigate_to_collection"
+ phx-value-query={@search_query}
+ />
+
+
+
+
+ <.search_result_group
+ :if={length(@search_results.wishlist) > 0}
+ title="Wishlist"
+ count={length(@search_results.wishlist)}
+ total_count={@search_counts.wishlist_count}
+ class="border-t border-zinc-200 dark:border-zinc-700"
+ >
+ <.search_result_record
+ :for={{record, index} <- Enum.with_index(@search_results.wishlist)}
+ record={record}
+ type={:wishlist}
+ selected={@selected_index == length(@search_results.collection) + index}
+ phx-click="navigate_to_record"
+ phx-value-id={record.id}
+ phx-value-type="wishlist"
+ />
+ <:actions>
+ <.view_all_button
+ :if={@search_counts.wishlist_count > length(@search_results.wishlist)}
+ count={@search_counts.wishlist_count}
+ target="wishlist"
+ phx-click="navigate_to_wishlist"
+ phx-value-query={@search_query}
+ />
+
+
+
+
+ <.search_result_group
+ :if={length(@search_results.artists) > 0}
+ title="Artists"
+ count={length(@search_results.artists)}
+ total_count={@search_counts.artists_count}
+ class="border-t border-zinc-200 dark:border-zinc-700"
+ >
+ <.search_result_artist
+ :for={{artist, index} <- Enum.with_index(@search_results.artists)}
+ artist={artist}
+ selected={
+ @selected_index ==
+ length(@search_results.collection) + length(@search_results.wishlist) + index
+ }
+ phx-click="navigate_to_artist"
+ phx-value-id={artist.musicbrainz_id}
+ />
+
-