defmodule MusicLibraryWeb.SearchComponents do @moduledoc """ Universal search modal and related components. """ use MusicLibraryWeb, :html import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1, record_cover: 1, artist_image: 1] alias MusicLibrary.Records.Record alias MusicLibraryWeb.Markdown @doc """ Renders a search result item for records. ## Examples <.search_result_record record={record} /> """ attr :record, :map, required: true attr :type, :atom, required: true, values: [:collection, :wishlist] attr :rest, :global, include: ~w(phx-click phx-value-id) def search_result_record(assigns) do ~H"""
{@record.title}
{Record.artist_names(@record)}
{format_label(@record.format)} · {type_label(@record.type)} · <.icon name="hero-calendar-days" class="-mt-1 size-4" aria-hidden="true" data-slot="icon" /> {Record.format_release_date(@record.release_date)} · <.icon name="hero-banknotes" class="size-4" aria-hidden="true" data-slot="icon" /> {Record.format_as_date(@record.purchased_at)}
{@artist.name}
{@artist.disambiguation}
{@record_set.name}
{@label}
Cmd/Ctrl+K {gettext("to open this search")}
{gettext("No results found for '%{query}'", query: @query)}
<.link class="truncate text-sm font-medium text-zinc-900 dark:text-zinc-100" navigate={~p"/wishlist/import?#{[import_query: @query]}"} > {gettext("Add a record instead", query: @query)}