{@artist.name} <.country_flag country={@country} />

<.focus_wrap id={"actions-#{@artist.musicbrainz_id}"} class={[ "hidden pointer-events-auto absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white dark:bg-zinc-800 py-2 shadow-lg ring-1 ring-zinc-900/5 focus:outline-hidden" ]} role="menu" aria-orientation="vertical" aria-labelledby="options-menu-0-button" phx-click-away={close_actions_menu(@artist.musicbrainz_id)} > <.link class="block px-3 py-1 text-sm leading-6 text-zinc-900 dark:text-zinc-400 hover:bg-zinc-50 dark:hover:text-zinc-300 dark:hover:bg-zinc-700" role="menuitem" tabindex="0" id={"actions-#{@artist.musicbrainz_id}-refresh-image"} phx-click={JS.push("refresh_artist_image", value: %{id: @artist.musicbrainz_id})} > <.icon name="hero-photo" class="h-4 w-4 mr-1 phx-click-loading:animate-bounce" aria-hidden="true" data-slot="icon" /> {gettext("Refresh image")} <.link class="block px-3 py-1 text-sm leading-6 text-zinc-900 dark:text-zinc-400 hover:bg-zinc-50 dark:hover:text-zinc-300 dark:hover:bg-zinc-700" role="menuitem" tabindex="0" id={"actions-#{@artist.musicbrainz_id}-refresh-artist-info"} phx-click={JS.push("refresh_artist_info", value: %{id: @artist.musicbrainz_id})} > <.icon name="hero-arrow-path" class="h-4 w-4 mr-1 phx-click-loading:animate-spin" aria-hidden="true" data-slot="icon" /> {gettext("Refresh info")}
<.async_result :let={lastfm_artist_info} assign={@lastfm_artist_info}> <:loading> {gettext("Loading play count")} <.loading /> <:failed :let={_failure}>
<.icon name="hero-exclamation-triangle" class="-mt-1 mr-1 ml-2 h-5 w-5" aria-hidden="true" data-slot="icon" /> {gettext("Error loading play count")}
<.on_tour_link lastfm_artist_info={lastfm_artist_info} /> <.play_count play_count={lastfm_artist_info.play_count} /> <.button variant="solid" as="link" patch={~p"/artists/#{@artist.musicbrainz_id}/import"}> <.icon name="hero-plus" class="h-4 w-4 mr-2" aria-hidden="true" data-slot="icon" /> {gettext("Add more")}

{gettext("Meta")}

{@artist.name} ~p"/images/cover-not-found.png" <> "';"} />
{gettext("MusicBrainz ID")}
{@artist.musicbrainz_id}
<.async_result :let={lastfm_artist_info} assign={@lastfm_artist_info}> <:loading>
{gettext("Loading biography")}
<:failed :let={_failure}>
<.icon name="hero-exclamation-triangle" class="-mt-1 mr-1 h-5 w-5" aria-hidden="true" data-slot="icon" /> {gettext("Error loading biography")}
{gettext("Biography")}
{remove_read_more_link(lastfm_artist_info.summary)} <.link class="block mt-2 text-sm font-medium text-zinc-900 dark:text-zinc-400" phx-click={Fluxon.open_dialog("bio")} > <.icon name="hero-arrow-right-end-on-rectangle" class="-mt-1 mr-1 h-5 w-5" aria-hidden="true" data-slot="icon" /> {gettext("Read more")}
<.sheet id="bio" class="max-w-2xl text-zinc-700 dark:text-zinc-300" placement="left"> {render_bio(lastfm_artist_info.bio)}
<.record_grid :if={@collection_records_count > 0} title={gettext("Collection")} id="collection" records={@streams.collection_records} records_count={@collection_records_count} record_path={fn record -> ~p"/collection/#{record}" end} /> <.separator :if={@wishlist_records_count > 0} class="mt-8 mb-8" /> <.record_grid :if={@wishlist_records_count > 0} title={gettext("Wishlist")} id="wishlist" records={@streams.wishlist_records} records_count={@wishlist_records_count} record_path={fn record -> ~p"/wishlist/#{record}" end} /> <.async_result :let={similar_artists} assign={@similar_artists}> <:loading>
{gettext("Loading similar artists")}
<:failed :let={_failure}>
<.icon name="hero-exclamation-triangle" class="-mt-1 mr-1 h-5 w-5" aria-hidden="true" data-slot="icon" /> {gettext("Error loading similar artists")}
<.separator class="mt-8 mb-8" /> <.artist_grid title={gettext("Similar artists")} artists={similar_artists} />
<.json_viewer :if={@artist_info.musicbrainz_data} title={gettext("MusicBrainz data")} data={@artist_info.musicbrainz_data} /> <.json_viewer :if={@artist_info.discogs_data} title={gettext("Discogs data")} data={@artist_info.discogs_data} />
<.modal :if={@live_action == :import} class="md:min-w-2xl max-w-sm md:max-w-3xl" id="record-modal" open on_close={JS.patch(~p"/artists/#{@artist.musicbrainz_id}")} > <.live_component module={MusicLibraryWeb.AddRecordComponent} id={:search} title={@page_title} action={@live_action} record={@record} patch={~p"/artists/#{@artist.musicbrainz_id}"} initial_query={"arid:#{@artist.musicbrainz_id}"} icon_name="hero-plus" />